Capteur de couleur Arduino TCS230 TCS3200

Capteur de couleur Arduino TCS230 TCS3200

Ce post vous montre comment détecter les couleurs avec l’Arduino en utilisant le TCS230/Capteur de couleur TCS3200.

Le capteur de couleur TCS3200 peut détecter une grande variété de couleurs en fonction de leur longueur d’onde. Ce capteur est particulièrement utile pour les projets de reconnaissance des couleurs tels que la correspondance des couleurs, le tri des couleurs, la lecture des bandelettes de test et bien plus encore.

Capteur de couleur Arduino TCS230 TCS3200

introduction

Le capteur de couleur TCS3200 – illustré dans la figure ci-dessous – utilise une puce de capteur RVB TAOS TCS3200 pour détecter la couleur. Il contient également quatre LED blanches qui éclairent l’objet devant lui.

1642770727 462 Capteur de couleur Arduino TCS230 TCS3200
Caractéristiques

Voici les spécifications du capteur :

  • Alimentation : 2,7 V à 5,5 V
  • Taille : 28,4 x 28,4 mm (1,12 x 1,12″)
  • Interface : TTL numérique
  • Conversion haute résolution de l’intensité lumineuse en fréquence
  • Couleur programmable et fréquence de sortie pleine échelle
  • Communique directement au microcontrôleur

Où acheter?

Vous pouvez vérifier le TCS3200 ou un capteur de couleur TCS230 au Conseiller Maker et trouver le meilleur prix.

Comment fonctionne le capteur TCS3200 ?

Le TCS3200 dispose d’un réseau de photodiodes avec 4 filtres différents. Une photodiode est simplement un dispositif semi-conducteur qui convertit la lumière en courant. Le capteur possède :

  • 16 photodiodes avec filtre rouge – sensible à la longueur d’onde rouge
  • 16 photodiodes avec filtre vert – sensible à la longueur d’onde verte
  • 16 photodiodes avec filtre bleu – sensibles à la longueur d’onde bleue
  • 16 photodiodes sans filtre

Si vous regardez de plus près la puce TCS3200, vous pouvez voir les différents filtres.

1642770727 485 Capteur de couleur Arduino TCS230 TCS3200

En choisissant sélectivement les lectures du filtre à photodiode, vous êtes en mesure de détecter l’intensité des différentes couleurs. Le capteur dispose d’un convertisseur courant-fréquence qui convertit les lectures des photodiodes en une onde carrée avec une fréquence proportionnelle à l’intensité lumineuse de la couleur choisie. Cette fréquence est ensuite lue par l’Arduino – ceci est illustré dans la figure ci-dessous.

Capteur de couleur Arduino TCS230 TCS3200

Brochage

Voici le brochage du capteur :

1642770727 998 Capteur de couleur Arduino TCS230 TCS3200

Nom de la broche E/S La description
Terre (4) Masse d’alimentation
OE (3) je Activer pour la fréquence de sortie (actif bas)
SORTIE (6) O Fréquence de sortie
S0, S1(1,2) je Entrées de sélection de mise à l’échelle de la fréquence de sortie
S2, S3 (7, 8) je Entrées de sélection du type de photodiode
VDD(5) Alimentation en tension

Sélection du filtre

Pour sélectionner la couleur lue par la photodiode, vous utilisez les broches de commande S2 et S3. Comme les photodiodes sont connectées en parallèle, le réglage de S2 et S3 LOW et HIGH dans différentes combinaisons vous permet de sélectionner différentes photodidodes. Jetez un œil au tableau ci-dessous :

Type de photodiode S2 S3
rouge MEUGLER MEUGLER
Bleu MEUGLER HAUT
Pas de filtre (effacer) HAUT MEUGLER
Vert HAUT HAUT

Mise à l’échelle de fréquence

Les broches S0 et S1 sont utilisées pour mettre à l’échelle la fréquence de sortie. Il peut être mis à l’échelle selon les valeurs prédéfinies suivantes : 100 %, 20 % ou 2 %. La mise à l’échelle de la fréquence de sortie est utile pour optimiser les lectures du capteur pour divers compteurs de fréquence ou microcontrôleurs. Jetez un œil au tableau ci-dessous :

Mise à l’échelle de la fréquence de sortie S0 S1
Éteindre L L
2% L H
20% H L
100% H H

Pour l’Arduino, il est courant d’utiliser une mise à l’échelle de fréquence de 20 %. Ainsi, vous réglez la broche S0 sur HIGH et la broche S1 sur LOW.

Détection des couleurs avec Arduino et TCSP3200

Dans cet exemple, vous allez détecter les couleurs avec l’Arduino et le capteur de couleur TCSP3200. Ce capteur n’est pas très précis, mais fonctionne bien pour détecter les couleurs dans des projets simples.

Pièces nécessaires

Voici les pièces nécessaires pour ce projet :

Vous pouvez utiliser les liens précédents ou accéder directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

1642770727 209 Capteur de couleur Arduino TCS230 TCS3200

Schématique

Le câblage du capteur TCSP3200 à votre Arduino est assez simple. Suivez simplement le diagramme schématique suivant.

1642770727 981 Capteur de couleur Arduino TCS230 TCS3200

Voici les connexions entre le TCSP3200 et l’Arduino :

  • S0: broche numérique 4
  • S1: broche numérique 5
  • VCC: 5V
  • S3: broche numérique 6
  • S4: broche numérique 7
  • EN DEHORS: broche numérique 8

Code

Vous avez besoin de deux croquis pour ce projet :

  1. Lecture et affichage de la fréquence de sortie sur le moniteur série. Dans cette partie, vous devez noter les valeurs de fréquence lorsque vous placez différentes couleurs devant le capteur.
  2. Distinguer les différentes couleurs. Dans cette section, vous allez insérer les valeurs de fréquence choisies précédemment sur votre code, afin que votre capteur puisse distinguer les différentes couleurs. Nous détecterons les couleurs rouge, verte et bleue.

1. Lecture de la fréquence de sortie

Téléchargez le code suivant sur votre carte Arduino.

/*********
  Rui Santos
  Complete project details at https://www.raspberryme.com  
*********/

// TCS230 or TCS3200 pins wiring to Arduino
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

// Stores frequency read by the photodiodes
int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;

void setup() {
  // Setting the outputs
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  
  // Setting the sensorOut as an input
  pinMode(sensorOut, INPUT);
  
  // Setting frequency scaling to 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
   // Begins serial communication 
  Serial.begin(9600);
}
void loop() {
  // Setting RED (R) filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  
  // Reading the output frequency
  redFrequency = pulseIn(sensorOut, LOW);
  
   // Printing the RED (R) value
  Serial.print("R = ");
  Serial.print(redFrequency);
  delay(100);
  
  // Setting GREEN (G) filtered photodiodes to be read
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  
  // Reading the output frequency
  greenFrequency = pulseIn(sensorOut, LOW);
  
  // Printing the GREEN (G) value  
  Serial.print(" G = ");
  Serial.print(greenFrequency);
  delay(100);
 
  // Setting BLUE (B) filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  
  // Reading the output frequency
  blueFrequency = pulseIn(sensorOut, LOW);
  
  // Printing the BLUE (B) value 
  Serial.print(" B = ");
  Serial.println(blueFrequency);
  delay(100);
}

Afficher le code brut

Ouvrez le moniteur série à un débit en bauds de 9600.

Placez un objet bleu devant le capteur à différentes distances. Vous devez enregistrer deux mesures : lorsque l’objet est placé loin du capteur et lorsque l’objet en est proche.

1642770727 710 Capteur de couleur Arduino TCS230 TCS3200

Vérifiez les valeurs affichées sur le moniteur série. La fréquence bleue (B) doit être la plus basse par rapport aux lectures de fréquence rouge (R) et verte (G) – voir la figure ci-dessous.

1642770728 784 Capteur de couleur Arduino TCS230 TCS3200

Lorsque nous plaçons l’objet bleu devant le capteur, les valeurs de fréquence bleue (B) oscillent entre 59 et 223 (voir valeurs en surbrillance).

Noter: vous ne pouvez pas utiliser ces valeurs de fréquence (59 et 223) dans votre code, vous devez mesurer les couleurs de votre objet spécifique avec votre propre capteur de couleur. Ensuite, enregistrez vos limites de fréquence supérieure et inférieure pour la couleur bleue, car vous en aurez besoin plus tard.

Répétez ce processus avec des objets verts et rouges et notez les limites de fréquence supérieure et inférieure pour chaque couleur.

1642770728 358 Capteur de couleur Arduino TCS230 TCS3200

2. Distinguer les différentes couleurs

Cette esquisse suivante mappe les valeurs de fréquence aux valeurs RVB (qui sont comprises entre 0 et 255).

Dans l’étape précédente, lorsque nous avons un maximum de bleu, nous avons obtenu une fréquence de 59 et lorsque nous avons du bleu à une distance plus élevée, nous avons obtenu 223.

Ainsi, 59 en fréquence correspond à 255 (en RVB) et 223 en fréquence à 0 (en RVB). Nous allons le faire avec l’Arduino carte() une fonction. Dans le carte() fonction, vous devez remplacer XX paramètres par vos propres valeurs.

/*********
  Rui Santos
  Complete project details at https://www.raspberryme.com  
*********/

// TCS230 or TCS3200 pins wiring to Arduino
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

// Stores frequency read by the photodiodes
int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;

// Stores the red. green and blue colors
int redColor = 0;
int greenColor = 0;
int blueColor = 0;

void setup() {
  // Setting the outputs
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  
  // Setting the sensorOut as an input
  pinMode(sensorOut, INPUT);
  
  // Setting frequency scaling to 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
  // Begins serial communication
  Serial.begin(9600);
}

void loop() {
  // Setting RED (R) filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  
  // Reading the output frequency
  redFrequency = pulseIn(sensorOut, LOW);
  // Remaping the value of the RED (R) frequency from 0 to 255
  // You must replace with your own values. Here's an example: 
  // redColor = map(redFrequency, 70, 120, 255,0);
  redColor = map(redFrequency, XX, XX, 255,0);
  
  // Printing the RED (R) value
  Serial.print("R = ");
  Serial.print(redColor);
  delay(100);
  
  // Setting GREEN (G) filtered photodiodes to be read
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  
  // Reading the output frequency
  greenFrequency = pulseIn(sensorOut, LOW);
  // Remaping the value of the GREEN (G) frequency from 0 to 255
  // You must replace with your own values. Here's an example: 
  // greenColor = map(greenFrequency, 100, 199, 255, 0);
  greenColor = map(greenFrequency, XX, XX, 255, 0);
  
  // Printing the GREEN (G) value  
  Serial.print(" G = ");
  Serial.print(greenColor);
  delay(100);
 
  // Setting BLUE (B) filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  
  // Reading the output frequency
  blueFrequency = pulseIn(sensorOut, LOW);
  // Remaping the value of the BLUE (B) frequency from 0 to 255
  // You must replace with your own values. Here's an example: 
  // blueColor = map(blueFrequency, 38, 84, 255, 0);
  blueColor = map(blueFrequency, XX, XX, 255, 0);
  
  // Printing the BLUE (B) value 
  Serial.print(" B = ");
  Serial.print(blueColor);
  delay(100);

  // Checks the current detected color and prints
  // a message in the serial monitor
  if(redColor > greenColor && redColor > blueColor){
      Serial.println(" - RED detected!");
  }
  if(greenColor > redColor && greenColor > blueColor){
    Serial.println(" - GREEN detected!");
  }
  if(blueColor > redColor && blueColor > greenColor){
    Serial.println(" - BLUE detected!");
  }
}

Afficher le code brut

Pour distinguer les différentes couleurs, nous avons trois conditions :

  • Lorsque le R est la valeur maximale (dans les paramètres RVB), nous savons que nous avons un objet rouge
  • Lorsque G est la valeur maximale, nous savons que nous avons un objet vert
  • Lorsque B est la valeur maximale, nous savons que nous avons un objet bleu

Maintenant, placez quelque chose devant le capteur. Il devrait imprimer dans votre moniteur série la couleur détectée : rouge, vert ou bleu.

Pointe: votre capteur peut également détecter d’autres couleurs avec plus d’instructions if.

Conclusion

Dans cet article, vous avez appris à détecter les couleurs avec le capteur de couleur TCSP3200.

Vous pouvez facilement construire une machine de tri des couleurs en ajoutant simplement un servomoteur.

Avez-vous des idées de projets liés au tri des couleurs?

Faites-le nous savoir en publiant un commentaire ci-dessous.

Si vous aimez cet article, vous aimerez probablement ces articles :

Merci d’avoir lu,

Rui et Sara

  • AZDelivery TCS230 TCS3200 Capteur de Couleur Module Compatible avec Arduino et Raspberry Pi y Compris Un eBook
    ✅ Chip: TAOS TCS3200 RGB Sensor ✅ Tension d'entrée: DC 3 ~ 5V ✅ Des LED blanches lumineuses pour un éclairage uniforme ✅ Dimensions: 31,6x24,4mm (L x l) ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.
  • TECNOIOT 2pcs tcs230 tcs3200 Color Recognition Sensor Detector RGB Color Sensor módulos
    【TCS230】 TCS230 Boîtier de montage en surface SOIC 8 broches, sur une seule puce, vous disposez de 64 photodiodes. Ces diodes sont divisées en quatre types. 16 de la photodiode à filtre rouge; 16 photodiodes avec un filtre vert; 16 photodiodes avec un filtre bleu; les 16 restants sans aucun filtre peuvent laisser passer les informations optiques. 【Design compact】 La puce à photodiode étant en plusieurs étapes, il est possible qu’elle minimise la non-uniformité du rayonnement incident, augmentant ainsi la précision de la reconnaissance des couleurs; d'autre part, la même couleur de la photodiode 16 est connectée en parallèle, uniformément répartie dans le réseau de diodes, vous pouvez éliminer la couleur d'erreur de position. 【La description】 Par exemple, lorsque vous utilisez un compteur de fréquence basse vitesse, vous pouvez choisir une petite valeur de mise à l'échelle à laquelle correspondent la fréquence de sortie du TCS230 et le compteur. 【Opération facile】 Utilisez deux broches programmables pour sélectionner dynamiquement le filtre souhaité. Plage de fréquence de sortie typique du capteur de 2 Hz à 500 kHz, les utilisateurs peuvent également sélectionner deux broches programmables à 100%, 20% ou 2% du facteur d'échelle de sortie ou le mode hors tension. Facteur d'échelle de sortie pour que la sortie du capteur puisse être adaptée à différentes plages de mesure et augmente sa capacité d'adaptation. 【Résolution】 Meilleure distance de détection: 10mm; Détection statique de la couleur de l'objet mesuré; Peut être connecté directement avec Microcontroller; Utilisez des lumières LED blanches brillantes.
  • Reland Sun GY-31 TCS230 TCS3200 Module d'identification de Couleur de Capteur de Couleur Module de Détection de Couleur Pour Bricolage Module
    1. Fabrication soignée : toutes les broches de la puce sont sorties, avec un pas de 2,54 mm. 2. Design professionnel : fournit un diagramme interne, un programme de test à puce unique, un programme de test Arduino. 3. Design compact : beau et compact, pratique pour le développement secondaire.