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

Maîtriser la détection de couleur Arduino avec les capteurs TCS230/TCS3200 – Guide pas à pas

Dans ce tutoriel Arduino, nous allons apprendre à détecter les couleurs en utilisant Arduino et le capteur de couleur TCS230 / TCS3200. Vous pouvez visionner la vidéo suivante ou lire le tutoriel écrit ci-dessous pour plus de détails.

Comment fonctionne le capteur de couleur TCS230 / TCS3200

Le TCS230 détecte la lumière colorée grâce à un réseau de 8 × 8 photodiodes. Ensuite, grâce à un convertisseur courant-fréquence, les lectures des photodiodes sont converties en une onde carrée dont la fréquence est directement proportionnelle à l'intensité lumineuse. Finalement, en utilisant la carte Arduino, on peut lire la sortie en onde carrée et obtenir les résultats pour la couleur.

Si on examine de plus près le capteur, on voit comment il détecte les différentes couleurs. Les photodiodes ont trois filtres de couleur différents. Seize d'entre elles ont des filtres rouges, seize autres des filtres verts, seize autres des filtres bleus, et les seize dernières photodiodes sont transparentes sans filtre.

Chaque groupe de 16 photodiodes est connecté en parallèle. Ainsi, en utilisant les deux broches de commande S2 et S3, on peut sélectionner lequel des groupes sera lu. Par exemple, pour détecter le rouge, on utilise les 16 photodiodes à filtre rouge en mettant les deux broches à l'état bas selon le tableau.

Le capteur a deux broches de commande supplémentaires, S0 et S1, utilisées pour mettre à l'échelle la fréquence de sortie. La fréquence peut être mise à l'échelle sur trois valeurs prédéfinies : 100 %, 20 % ou 2 %. Cette fonction de mise à l'échelle de fréquence permet d'optimiser la sortie du capteur pour divers compteurs de fréquence ou microcontrôleurs.

Maintenant, nous sommes prêts à connecter le capteur TCS230 à la carte Arduino. Voici le schéma de câblage.

Code source pour capteur de couleur TCS230

Description : D'abord, il faut définir les broches auxquelles le capteur est connecté et une variable pour lire la fréquence. Dans le setup, il faut définir les quatre broches de commande en sorties et la sortie du capteur en entrée Arduino. Ici, on doit aussi régler la mise à l'échelle de fréquence ; pour cet exemple, je la réglerai à 20 %, et on démarre la communication série pour afficher les résultats dans le Moniteur Série.

Dans la boucle, on commence par lire les photodiodes à filtre rouge. Pour cela, on met les deux broches de commande S2 et S3 à l'état bas. Ensuite, avec la fonction « pulseIn() », on lit la fréquence de sortie et on la place dans la variable « frequency ». Avec Serial.print() on affiche le résultat sur le moniteur série. La même procédure s'applique pour les deux autres couleurs, il suffit d'ajuster les broches de commande pour la couleur appropriée.

/* Arduino Color Sensing Tutorial
 * par Dejan Nedelkovski, www.HowToMechatronics.com */
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
int frequency = 0;
void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  // Réglage mise à l'échelle fréquence à 20%
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
  Serial.begin(9600);
}
void loop() {
  // Lecture photodiodes à filtre rouge
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  frequency = pulseIn(sensorOut, LOW);
  Serial.print("R= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);
  // Lecture photodiodes à filtre vert
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  Serial.print("G= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);
  // Lecture photodiodes à filtre bleu
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  Serial.print("B= ");
  Serial.print(frequency);
  Serial.println(" ");
  delay(100);
}

Si on lance le Moniteur Série, on commence à obtenir des valeurs. Ces valeurs dépendent de la mise à l'échelle de fréquence choisie, ainsi que de l'éclairage ambiant.

Notez que les trois valeurs diffèrent en raison de la sensibilité différente de chaque type de photodiode, comme on le voit sur le diagramme de responsivité spectrale des photodiodes dans la fiche technique du capteur.

Néanmoins, voyons comment les valeurs réagissent quand on présente différentes couleurs devant le capteur. Par exemple, si on présente du rouge, la valeur initiale chute, dans mon cas de ~70 à ~25.

Maintenant, si on veut représenter les couleurs détectées avec le modèle RGB qui a des valeurs de 0 à 255, on utilisera la fonction map() pour convertir les lectures en valeurs de 0 à 255.

// Remise à l'échelle de la fréquence vers le modèle RGB 0-255
frequency = map(frequency, 25, 70, 255, 0);

La valeur 70 sera mappée à 0, et la valeur 25 à 255. Même procédure pour les deux autres couleurs.

Voici le code source final pour cet exemple :

/* Arduino Color Sensing Tutorial
 * par Dejan Nedelkovski, www.HowToMechatronics.com */
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
int frequency = 0;
void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
  Serial.begin(9600);
}
void loop() {
  // Rouge
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  frequency = pulseIn(sensorOut, LOW);
  frequency = map(frequency, 25, 72, 255, 0);
  Serial.print("R= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);
  // Vert
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  frequency = map(frequency, 30, 90, 255, 0);
  Serial.print("G= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);
  // Bleu
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  frequency = map(frequency, 25, 70, 255, 0);
  Serial.print("B= ");
  Serial.print(frequency);
  Serial.println(" ");
  delay(100);
}

Notez que les couleurs ne sont pas très précises mais restent suffisantes pour des projets simples. Comme autre exemple du capteur de couleur TCS230, dans ma prochaine vidéo nous apprendrons à réaliser une machine de tri automatique des couleurs par Arduino.

N'hésitez pas à poser vos questions dans la section commentaires ci-dessous et n'oubliez pas de consulter ma collection de projets Arduino.

Processus de fabrication

  1. Tutoriel capteur de lumière Raspberry Pi – Câbler une LDR et lire les niveaux de lumière avec Python
  2. Créer un verrou RFID sécurisé avec Arduino – Guide étape par étape
  3. Capteur CO2 K30 : Surveillance en temps réel de la qualité de l'air intérieur
  4. Construisez un Stadiomètre Numérique : Suivez la Croissance avec Arduino et Capteur Laser
  5. Intégrer un capteur d'empreintes capacitif DFRobot (ID809) avec Arduino ou ESP8266
  6. Tour de Capteurs avec Arduino Cloud : Température, Mouvement et Gaz
  7. Mélangeur de couleurs RVB Arduino – Projet DIY débutant
  8. Réalisez un mélangeur de couleurs RGB Arduino – Tutoriel pas à pas
  9. Tutoriel Arduino Débutant 01 : Démarrez votre Premier Projet