Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Projet de trieur de couleurs Arduino

Dans cet article, je vais vous montrer comment créer un trieur de couleurs Arduino. Vous pouvez regarder la vidéo suivante ou lire l'article écrit ci-dessous.

Conception

Tout ce dont nous avons besoin pour ce projet Arduino est un capteur de couleur (TCS3200) et deux servomoteurs amateurs, ce qui rend ce projet assez simple mais pourtant très amusant à construire. Dans un premier temps, à l'aide du logiciel de modélisation 3D Solidworks j'ai fait le design du trieur de couleurs et voici son principe de fonctionnement :

  • Au départ, les quilles colorées qui sont maintenues dans le chargeur tombent dans la plate-forme fixée sur le servomoteur supérieur.
  • Ensuite, le servomoteur tourne et amène la quille au capteur de couleur qui détecte sa couleur.
  • Après cela, le servomoteur inférieur tourne jusqu'à la position particulière, puis le servomoteur supérieur tourne à nouveau jusqu'à ce que la quille tombe dans le rail de guidage.

Ici, vous pouvez télécharger le modèle 3D, ainsi que les dessins avec toutes les dimensions nécessaires à la construction de ce projet Arduino.

Vous pouvez trouver et télécharger ce modèle 3D, ainsi que l'explorer dans votre navigateur sur Thangs.

Téléchargez le modèle 3D d'assemblage sur Thangs.

Les dessins suivants peuvent être utilisés pour découper au laser toutes les pièces du boîtier :

Construire le trieur de couleurs Arduino

Le matériau que j'ai utilisé pour ce projet est un panneau de fibres de bois de 3 mm. Je redessine les pièces sur le panneau de fibres selon les dessins et à l'aide d'une petite scie à main, coupe toutes les pièces à la bonne taille.

Une fois toutes les pièces prêtes, j'ai commencé à les assembler. J'ai d'abord assemblé les parties extérieures à l'aide d'un pistolet à colle.

Ensuite, à l'aide de colle tout usage, j'ai collé les deux servomoteurs sur leurs plates-formes et les ai attachés à l'ensemble.

Après cela, à nouveau à l'aide d'une colle, j'ai fixé le rail de guidage sur le servomoteur inférieur ainsi que le support et la plate-forme nécessaires au servomoteur supérieur.

Ensuite, j'ai inséré un interrupteur et une prise d'alimentation pour alimenter l'Arduino avec un adaptateur 5V et sur la troisième plate-forme j'ai inséré le capteur de couleur.

J'ai connecté les composants ensemble selon les schémas de circuit suivants.

Vous pouvez obtenir les composants nécessaires pour ce projet Arduino à partir des liens ci-dessous :

  • Capteur de couleur TCS230 TCS3200…….
  • Arduino Nano …………………………….
  • Breadboard et Jump Wires ……… 
  • Servomoteur ……………………………….
  • Changer………………………………….……..
  • Prise d'alimentation…………………………….……

Code source du trieur de couleurs Arduino

À ce stade, nous devons d'abord programmer l'Arduino, puis terminer l'assemblage. Voici le code Arduino :

/*     Arduino Project - Color Sorting Machine
 *
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *
 */
#include <Servo.h>

#define S0 2
#define S1 3
#define S2 4
#define S3 5
#define sensorOut 6

Servo topServo;
Servo bottomServo;

int frequency = 0;
int color=0;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);

  // Setting frequency-scaling to 20%
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);

  topServo.attach(7);
  bottomServo.attach(8);

  Serial.begin(9600);
}

void loop() {

  topServo.write(115);
  delay(500);
  
  for(int i = 115; i > 65; i--) {
    topServo.write(i);
    delay(2);
  }
  delay(500);
  
  color = readColor();
  delay(10);  

  switch (color) {
    case 1:
    bottomServo.write(50);
    break;

    case 2:
    bottomServo.write(75);
    break;

    case 3:
    bottomServo.write(100);
    break;

    case 4:
    bottomServo.write(125);
    break;

    case 5:
    bottomServo.write(150);
    break;

    case 6:
    bottomServo.write(175);
    break;
    
    case 0:
    break;
  }
  delay(300);
  
  for(int i = 65; i > 29; i--) {
    topServo.write(i);
    delay(2);
  } 
  delay(200);
  
  for(int i = 29; i < 115; i++) {
    topServo.write(i);
    delay(2);
  }
  color=0;
}

// Custom Function - readColor()
int readColor() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int R = frequency;
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);

  // Setting Green filtered photodiodes to be read
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int G = frequency;
  // Printing the value on the serial monitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);

  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int B = frequency;
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(50);

  if(R<45 & R>32 & G<65 & G>55){
    color = 1; // Red
  }
  if(G<55 & G>43 & B<47 &B>35){
    color = 2; // Orange
  }
  if(R<53 & R>40 & G<53 & G>40){
    color = 3; // Green
  }
  if(R<38 & R>24 & G<44 & G>30){
    color = 4; // Yellow
  }
  if(R<56 & R>46 & G<65 & G>55){
    color = 5; // Brown
  }
  if (G<58 & G>45 & B<40 &B>26){
    color = 6; // Blue
  }
  return color;  
}Code language: Arduino (arduino)

Description du code :

Nous devons donc inclure la bibliothèque "Servo.h", définir les broches auxquelles le capteur de couleur sera connecté, créer les objets servo et déclarer certaines variables nécessaires au programme. Dans la section de configuration, nous devons définir les broches comme sorties et entrées, définir la mise à l'échelle de la fréquence pour le capteur de couleur, définir les broches d'asservissement et démarrer la communication série pour imprimer les résultats de la couleur lue sur le moniteur série.

Dans la section boucle, notre programme commence par déplacer le servomoteur supérieur vers la position du chargeur de quille. Notez que cette valeur de 115 convient à mes pièces et à mon servomoteur, vous devez donc ajuster cette valeur ainsi que les valeurs suivantes pour les servomoteurs en fonction de votre carrure.

Ensuite, en utilisant la boucle "for", nous allons faire pivoter et amener la quille à la position du capteur de couleur. Nous utilisons une boucle "for" afin de pouvoir contrôler la vitesse de rotation en modifiant le temps de retard en boucle.

Ensuite, après un délai d'une demi-seconde, en utilisant la fonction personnalisée, readColor(), nous lirons la couleur de la quille. Voici le code de la fonction personnalisée. En utilisant les quatre broches de contrôle et la broche de sortie de fréquence du capteur de couleur, nous lisons la couleur de la quille. Le capteur lit 3 valeurs différentes pour chaque quille, Rouge, Vert et Bleu et selon ces valeurs nous disons quelle est la couleur réelle. Pour plus de détails sur le fonctionnement du capteur de couleur TCS3200, vous pouvez consulter mon précédent tutoriel détaillé à ce sujet.

Voici les valeurs RVB que j'ai obtenues du capteur pour chaque quille. Notez que ces valeurs peuvent varier car les capteurs ne sont pas toujours précis. Par conséquent, en utilisant ces instructions "if", nous permettons au capteur une erreur d'environ +-5 de la valeur testée pour la couleur particulière. Ainsi, par exemple, si nous avons une quille rouge, la première instruction "if" sera vraie et la variable "color" obtiendra la valeur 1. C'est donc ce que fait la fonction personnalisée readColor () et après cela, en utilisant un "switch-case ” déclaration nous tournons le servo inférieur à la position particulière. À la fin, nous faisons tourner davantage le servomoteur supérieur jusqu'à ce que la quille tombe dans le rail de guidage et la renvoyons à nouveau à la position initiale afin que le processus puisse être répété.

Finir le design


Après avoir téléchargé le code, j'ai sécurisé la carte Arduino à l'aide d'un pistolet à colle.

Ensuite, à l'aide d'une bouteille en plastique transparente, j'ai fabriqué le chargeur et, avec la partie supérieure, je l'ai collé à l'assemblage et j'ai terminé le projet.

N'hésitez pas à poser des questions dans la section des commentaires ci-dessous.


Processus de fabrication

  1. Créer un moniteur Ambilight à l'aide d'Arduino
  2. Jeu Arduino Pong - Écran OLED
  3. Détecteur de fréquence audio
  4. clone Arduino Tamagotchi - animal numérique
  5. Manipulateur d'interrupteur d'éclairage sans fil
  6. Tech-TicTacToe
  7. Pistolet à eau à détecteur de mouvement
  8. compte à rebours Arduino
  9. Mixeur de couleurs Arduino RVB