Circuit de détection de couleur avec code Arduino

Essayez Notre Instrument Pour Éliminer Les Problèmes





Dans cet article, nous allons construire un circuit qui peut détecter la couleur et déclencher les relais assignés respectifs. Ce projet est réalisé à l'aide du capteur de couleur TCS3200 et de la carte Arduino.

Détection des couleurs par TCS3200

Si vous n'avez pas lu l'article précédent, veuillez le parcourir là où nous avons discuté de la principes de base de la détection des couleurs à l'aide du TCS3200



Le projet proposé peut être utile si vous souhaitez qu'un circuit agisse en fonction des couleurs. Il existe des océans d'applications basées sur la détection des couleurs dans divers domaines industriels.

Ce projet donnera un aperçu de la façon dont nous pouvons programmer le capteur de couleur pour détecter différentes couleurs et déclencher les relais.



Nous allons considérer les couleurs primaires: ROUGE, VERT et BLEU pour ce projet. Ce projet permet de différencier ces trois couleurs et de déclencher les relais, chaque relais pour chaque couleur.

Le TCS3200 peut détecter n'importe quel nombre de couleurs, mais pour garder le projet compréhensible et pour garder le code de programme simple, nous nous concentrons uniquement sur les couleurs primaires.

Schéma:

interfacer le capteur de couleur Arduino et TCS3200

Le schéma ci-dessus concerne l'interfaçage du capteur de couleur Arduino et TCS3200.

Connexions relais:

connexions de relais le capteur de couleur Arduino et TCS3200

Alimentez l'Arduino avec un adaptateur 9V d'au moins 500mA. Le transistor agit comme un amplificateur pour le relais car les broches GPIO de l'Arduino ne peuvent pas fournir un courant suffisant pour relayer.

La diode 1N4007 absorbera les pointes de haute tension de la bobine de relais, protégeant le reste des composants semi-conducteurs.

Cela conclut le matériel.

Voyons maintenant comment télécharger le code et calibrer le capteur en fonction de vos besoins.
La sensibilité des couleurs peut varier d'un module à l'autre et la lumière ambiante peut modifier considérablement la sensibilité des couleurs.

Tous les capteurs TCS3200 présentent des variations lors de la fabrication, vous devez mesurer les paramètres de couleur du capteur que vous possédez actuellement, afin que ces paramètres puissent être utilisés dans le code pour détecter la couleur plus précisément.

Pour calibrer et optimiser les lectures de votre capteur, suivez précisément les étapes:

Étape 1: Téléchargez le code suivant avec la configuration matérielle terminée.

//-----Program Developed by R.GIRISH-----// const int Red_relay = 9 const int Green_relay = 10 const int Blue_relay = 11 const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int var = 25 int red = 0 int green = 0 int blue = 0 int state = LOW int state1 = LOW int state2 = HIGH //-----------Enter Values--------// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //----------------------------// void setup() { Serial.begin(9600) pinMode(Red_relay, OUTPUT) pinMode(Green_relay, OUTPUT) pinMode(Blue_relay, OUTPUT) digitalWrite(Red_relay, LOW) digitalWrite(Green_relay, LOW) digitalWrite(Blue_relay, LOW) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() { int redH1 = Rx1 + var int redL1 = Rx1 - var int redH2 = Rx2 + var int redL2 = Rx2 - var int redH3 = Rx3 + var int redL3 = Rx3 - var int blueH1 = Bx1 + var int blueL1 = Bx1 - var int blueH2 = Bx2 + var int blueL2 = Bx2 - var int blueH3 = Bx3 + var int blueL3 = Bx3 - var int greenH1 = Gx1 + var int greenL1 = Gx1 - var int greenH2 = Gx2 + var int greenL2 = Gx2 - var int greenH3 = Gx3 + var int greenL3 = Gx3 - var //-----Sensing RED colour-----// digitalWrite(s2, state1) digitalWrite(s3, state1) red = pulseIn(out, state) delay(100) //------Sensing Green colour----// digitalWrite(s2, state2) digitalWrite(s3, state2) green = pulseIn(out, state) delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) blue = pulseIn(out, state) delay(400) if(red = redL1) { if(green = greenL1) { if(blue = blueL1) { Serial.println('Detected Colour: RED') Serial.println('') digitalWrite(Red_relay, HIGH) delay(1000) } } } if(red = redL2) { if(green = greenL2) { if(blue = blueL2) { Serial.println('Detected Colour: Green') Serial.println('') digitalWrite(Green_relay, HIGH) delay(1000) } } } if(red = redL3) { if(green = greenL3) { if(blue = blueL3) { Serial.println('Detected Colour: Blue') Serial.println('') digitalWrite(Blue_relay, HIGH) delay(1000) } } } } //------Program Developed by R.GIRISH--------//

Étape 2: Ouvrez le moniteur série, vous trouverez les paramètres de couleur comme ceci:

Apportez l'objet de couleur (le papier de couleur est préféré) rouge, bleu et vert.

Étape 3:

• Placez le papier de couleur rouge à proximité du capteur TCS3200.
• Notez les lectures R, V, B (les trois couleurs) pendant que vous placez le papier de couleur rouge.
• De même, notez la lecture R, G, B pour les papiers de couleur verte et bleue.

• REMARQUE: lorsque vous placez l'une des 3 couleurs devant le TCS3200, notez toutes les lectures rouge, bleu et vert pour chaque papier couleur, que vous devez entrer dans le programme principal de détection de couleur.

Étape 4: Lisez l'étape 5 et téléchargez le code principal ci-dessous (programme de détection de couleur)

//-- -- -- -- Enter Values-- -- --// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //-- -- -- -- -- -- -- -- -- -- -- //

Étape 5: Dans le code ci-dessus, remplacez les valeurs par vos valeurs que vous avez notées récemment:

//--------Program Developed by R.GIRISH-------// const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int frequency1 = 0 int frequency2 = 0 int frequency3 = 0 int state = LOW int state1 = LOW int state2 = HIGH void setup() { Serial.begin(9600) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() ') delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) frequency3 = pulseIn(out, state) Serial.print(' Blue = ') Serial.println(frequency3) delay(100) Serial.println('-----------------------------') delay(400) //---------Program Developed by R.GIRISH---------//

Lorsque vous avez placé le papier de couleur rouge sur le capteur, vous auriez trois lectures, par exemple R = 56 | G = 78 | B = 38.

Placez les valeurs 56, 78, 38 comme ceci:

// Pour la couleur ROUGE:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

De même, pour deux autres couleurs et téléchargez le code.

Étape 6:

• Ouvrez le moniteur série et placez l'une des trois couleurs devant le capteur.
• Vous verrez la détection des couleurs sur le moniteur série en même temps que le relais de couleur correspondant est activé.

• Vous avez appuyé sur le bouton de réinitialisation sur la carte Arduino pour désactiver le relais.

REMARQUE 1: Le circuit peut ne pas détecter les couleurs, si vous placez une nuance / une teinte légèrement différente de l'objet / papier de couleur ROUGE, VERT, BLEU, après l'étalonnage. En d'autres termes, vous devez utiliser exactement le même objet / papier de couleur pour détecter les couleurs et déclencher le relais.

REMARQUE 2: la lumière ambiante peut affecter la détection des couleurs, veuillez donc maintenir une lumière constante près du capteur lors de l'étalonnage et également lors de la détection des couleurs.

Prototype de l'auteur:

Prototype de capteur de couleur Arduino

Si vous avez des questions concernant ce projet, veuillez exprimer dans la section commentaires, vous pouvez recevoir une réponse rapide.




Précédent: Utilisation des capteurs TSOP17XX avec des fréquences personnalisées Un article: Circuit de chargeur de batterie multiple utilisant un condensateur de décharge