Circuito rilevatore di colore con codice Arduino

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo post costruiremo un circuito in grado di rilevare il colore e attivare i rispettivi relè assegnati. Questo progetto viene realizzato utilizzando il sensore di colore TCS3200 e la scheda Arduino.

Rilevamento del colore tramite TCS3200

Se non hai letto l'articolo precedente, per favore leggilo dove abbiamo discusso il nozioni di base sul rilevamento del colore con TCS3200



Il progetto proposto può essere utile, se vuoi che un circuito agisca in base ai colori. Esistono oceani di applicazioni basate sul rilevamento del colore in vari settori industriali.

Questo progetto fornirà una panoramica su come possiamo programmare il sensore di colore per rilevare diversi colori e attivare i relè.



Considereremo i colori primari: ROSSO, VERDE e BLU per questo progetto. Questo progetto può differenziare tra questi tre colori e attivare i relè, ogni relè per ogni colore.

Il TCS3200 può rilevare qualsiasi numero di colori, ma per mantenere il progetto comprensibile e per mantenere semplice il codice del programma, ci stiamo concentrando solo sui colori primari.

Schema elettrico:

interfacciamento del sensore di colore Arduino e TCS3200

Lo schema sopra è per l'interfacciamento del sensore di colore Arduino e TCS3200.

Connessioni relè:

il relè collega il sensore di colore Arduino e TCS3200

Alimenta Arduino con un adattatore 9V con almeno 500mA. Il transistor funge da amplificatore per il relè poiché i pin GPIO di Arduino non possono fornire corrente sufficiente per il relè.

Il diodo 1N4007 assorbirà i picchi di alta tensione dalla bobina del relè, proteggendo il resto dei componenti del semiconduttore.

Questo conclude l'hardware.

Ora vediamo come caricare il codice e calibrare il sensore in base alle tue esigenze.
La sensibilità del colore può variare da modulo a modulo e la luce ambientale può alterare drasticamente la sensibilità del colore.

Tutti i sensori TCS3200 presentano alcune variazioni durante la fabbricazione, è necessario misurare i parametri del colore per il sensore che si possiede attualmente, in modo che tali parametri possano essere utilizzati nel codice per rilevare il colore in modo più accurato.

Per calibrare e ottimizzare le letture per il tuo sensore segui precisamente i passaggi:

Passaggio 1: carica il codice seguente con la configurazione hardware completata.

//-----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--------//

Passaggio 2: Apri il monitor seriale, troverai i parametri del colore in questo modo:

Porta l'oggetto colorato (preferibilmente carta colorata) rosso, blu e verde.

Passaggio 3:

• Posizionare la carta di colore rosso vicino al sensore TCS3200.
• Annotare le letture R, G, B (tutti e tre i colori) mentre si posiziona la carta di colore rosso.
• Annotare allo stesso modo la lettura R, G, B per fogli di colore verde e blu.

• NOTA: quando si posiziona uno dei 3 colori davanti al TCS3200, annotare tutte le letture di rosso, blu e verde per ogni carta colorata, che è necessario immettere nel programma principale di rilevamento del colore.

Passaggio 4: leggere il passaggio 5 e caricare il codice principale di seguito (programma di rilevamento del colore)

//-- -- -- -- 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 //-- -- -- -- -- -- -- -- -- -- -- //

Passaggio 5: Nel codice sopra, sostituisci i valori con i tuoi valori che hai annotato di recente:

//--------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---------//

Quando hai posizionato la carta di colore rosso sul sensore avresti ottenuto tre letture, ad esempio R = 56 | G = 78 | B = 38.

Posiziona i valori 56, 78, 38 in questo modo:

// Per colore ROSSO:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Allo stesso modo, per altri due colori e carica il codice.

Step6:

• Aprire il monitor seriale e posizionare uno dei tre colori davanti al sensore.
• Si vedrà il rilevamento dei colori sul monitor seriale contemporaneamente che si attiva il relè colore corrispondente.

• È necessario premere il pulsante di ripristino sulla scheda Arduino per disattivare il relè.

NOTA 1: il circuito potrebbe non rilevare i colori, se si posizionano tonalità / tinte leggermente diverse di oggetti / carta di colore ROSSO, VERDE, BLU, dopo la calibrazione. In altre parole, devi usare esattamente lo stesso oggetto / carta dello stesso colore per rilevare i colori e attivare il relè.

NOTA 2: la luce ambientale può influire sul rilevamento del colore, quindi mantenere una luce costante vicino al sensore durante la calibrazione e anche durante il rilevamento dei colori.

Prototipo dell'autore:

Prototipo del sensore di colore Arduino

Se hai domande su questo progetto, esprimile nella sezione commenti, potresti ricevere una rapida risposta.




Precedente: Utilizzo di sensori TSOP17XX con frequenze personalizzate Avanti: Circuito caricabatteria multiplo con condensatore di scarico