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

Construire un Trieur de Couleurs Arduino : Guide Simple avec TCS3200 et Servomoteurs

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

Conception

Pour ce projet Arduino, nous avons besoin d'un capteur de couleur (TCS3200) et de deux servomoteurs de modélisme, ce qui rend ce projet assez simple mais très amusant à construire. Dans un premier temps, j'ai conçu le trieur de couleurs à l'aide du logiciel de modélisation 3D Solidworks. Voici son principe de fonctionnement :

Vous pouvez télécharger le modèle 3D ainsi que les plans avec toutes les dimensions nécessaires pour construire ce projet Arduino.

Vous trouverez ce modèle 3D à télécharger et à explorer dans votre navigateur sur Thangs.

Les plans suivants peuvent être utilisés pour la découpe laser de toutes les pièces du boîtier :

Construction du Trieur de Couleurs Arduino

Le matériau utilisé pour ce projet est du panneau de fibres de 3 mm d'épaisseur. J'ai reporté les pièces sur le panneau selon les plans et découpé toutes les pièces à la scie à main.

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

Puis, à l'aide de colle universelle, j'ai fixé les deux servomoteurs sur leurs plateformes et les ai attachés à l'assemblage.

Encore avec de la colle, j'ai fixé le rail de guidage sur le servomoteur inférieur ainsi que le support et la plateforme 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 plateforme, j'ai inséré le capteur de couleur.

J'ai connecté les composants selon le schéma de câblage suivant.

Vous pouvez vous procurer les composants nécessaires pour ce projet Arduino via les liens ci-dessous :

Code Source du Trieur de Couleurs Arduino

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

/* Projet Arduino - Machine de Tri par Couleur
 * par Dejan Nedelkovski, www.HowToMechatronics.com
 */
#include 
#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);
  // Réglage du facteur d'échelle de fréquence à 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;
}

// Fonction personnalisée - readColor()
int readColor() {
  // Lecture des photodiodes à filtre rouge
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  frequency = pulseIn(sensorOut, LOW);
  int R = frequency;
  Serial.print("R= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(50);
  // Lecture des photodiodes à filtre vert
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  int G = frequency;
  Serial.print("G= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(50);
  // Lecture des photodiodes à filtre bleu
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  int B = frequency;
  Serial.print("B= ");
  Serial.print(frequency);
  Serial.println(" ");
  delay(50);
  if(R < 45 && R > 32 && G < 65 && G > 55) { color = 1; } // Rouge
  if(G < 55 && G > 43 && B < 47 && B > 35) { color = 2; } // Orange
  if(R < 53 && R > 40 && G < 53 && G > 40) { color = 3; } // Vert
  if(R < 38 && R > 24 && G < 44 && G > 30) { color = 4; } // Jaune
  if(R < 56 && R > 46 && G < 65 && G > 55) { color = 5; } // Marron
  if(G < 58 && G > 45 && B < 40 && B > 26) { color = 6; } // Bleu
  return color;
}

Description du code :

Il faut inclure la bibliothèque "Servo.h", définir les broches du capteur de couleur, créer les objets servo et déclarer les variables nécessaires. Dans la section setup, on définit les broches en entrées/sorties, on règle le facteur d'échelle de fréquence du capteur, on définit les broches des servos et on démarre la communication série pour afficher les résultats de lecture de couleur sur le moniteur série.

Dans la boucle principale, le programme commence par déplacer le servomoteur supérieur vers la position du chargeur de Skittles. Notez que cette valeur de 115 correspond à mes pièces et à mon servomoteur ; vous devrez ajuster cette valeur ainsi que les valeurs suivantes pour les servomoteurs selon votre construction.

Ensuite, à l'aide d'une boucle "for", on fait pivoter le servo pour amener le Skittle devant le capteur de couleur. On utilise une boucle "for" pour contrôler la vitesse de rotation en modifiant le délai dans la boucle.

Après un délai d'une demi-seconde, on lit la couleur du Skittle grâce à la fonction personnalisée readColor(). Cette fonction utilise les quatre broches de contrôle et la broche de sortie de fréquence du capteur pour lire la couleur. Le capteur lit trois valeurs différentes pour chaque Skittle (Rouge, Vert, Bleu) et détermine la couleur réelle selon ces valeurs. Pour plus de détails sur le fonctionnement du capteur de couleur TCS3200, consultez mon tutoriel détaillé précédent.

Voici les valeurs RVB que j'ai obtenues du capteur pour chaque Skittle. Notez que ces valeurs peuvent varier car le capteur n'est pas toujours précis. C'est pourquoi, grâce à ces instructions "if", on autorise une marge d'erreur d'environ ±5 par rapport à la valeur testée pour chaque couleur. Par exemple, pour un Skittle rouge, la première instruction "if" sera vraie et la variable "color" prendra la valeur 1. C'est ce que fait la fonction readColor(). Ensuite, à l'aide d'une instruction "switch-case", on fait pivoter le servomoteur inférieur vers la position correspondante. À la fin, on fait pivoter davantage le servomoteur supérieur jusqu'à ce que le Skittle tombe dans le rail de guidage, puis on le renvoie à la position initiale pour répéter le processus.

Finalisation de la Conception


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

Puis, à l'aide d'une bouteille en plastique transparent, j'ai fabriqué le chargeur et, avec la partie supérieure, je l'ai collé à l'assemblage pour terminer le projet.

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

Processus de fabrication

  1. Créer un système Ambilight spectaculaire pour moniteur avec Arduino
  2. Créer un jeu Pong classique sur Arduino UNO avec écran OLED – Tutoriel étape par étape
  3. Détecteur de fréquence audio Arduino — Mesurer le pic sonore avec module haute sensibilité
  4. Construisez votre propre Tamagotchi Arduino : Un animal de compagnie numérique DIY
  5. Interrupteur lumineux sans fil intelligent : Manipulateur d'interrupteur piloté par Arduino
  6. Morpion sur matrice LED MAX7219 avec boîtier en carton
  7. Pistolet à eau intelligent à détection de mouvement avec Arduino Nano
  8. Construire un minuteur à rebours Arduino fiable avec afficheur 7 segments SparkFun
  9. Mélangeur de couleurs RVB Arduino – Projet DIY débutant