Circuit detector de culoare cu cod Arduino

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





În acest post vom construi un circuit care poate detecta culoarea și poate declanșa respectivele relee atribuite. Acest proiect este realizat folosind senzorul de culoare TCS3200 și placa Arduino.

Color Sensing de TCS3200

Dacă nu ați citit articolul precedent, vă rugăm să îl parcurgeți acolo unde am discutat despre elementele de bază ale detectării culorii folosind TCS3200



Proiectul propus poate fi util, dacă doriți ca un circuit să acționeze pe baza culorilor. Există oceane de aplicații bazate pe detectarea culorii în diferite domenii industriale.

Acest proiect va oferi o perspectivă asupra modului în care putem programa senzorul de culoare pentru a detecta diferite culori și a declanșa releele.



Vom lua în considerare culorile primare: ROȘU, VERDE și ALBASTRU pentru acest proiect. Acest proiect poate face diferența între aceste trei culori și poate declanșa relee, fiecare releu pentru fiecare culoare.

TCS3200 poate detecta orice număr de culori, dar pentru a menține proiectul ușor de înțeles și pentru a menține codul programului simplu, ne concentrăm doar pe culorile primare.

Diagrama circuitului:

interfață senzorul de culoare Arduino și TCS3200

Schema de mai sus este pentru interfața senzorului de culoare Arduino și TCS3200.

Conexiuni de releu:

relee conectează senzorul de culoare Arduino și TCS3200

Alimentați Arduino cu adaptor de 9V cu cel puțin 500mA. Tranzistorul acționează ca amplificator pentru releu, deoarece pinii GPIO ai Arduino nu pot furniza suficient curent pentru releu.

Dioda 1N4007 va absorbi vârfuri de înaltă tensiune din bobina releului, protejând restul componentelor semiconductoare.

Asta încheie hardware-ul.

Acum să vedem cum să încărcați codul și să calibrați senzorul pentru cerințele dvs.
Sensibilitatea culorii poate varia de la modul la modul, iar lumina ambientală poate modifica sensibilitatea culorii drastic.

Toți senzorii TCS3200 au unele variații în timpul fabricării, trebuie să măsurați parametrii de culoare pentru senzorul pe care îl dețineți în prezent, astfel încât acești parametri să poată fi folosiți în cod pentru a detecta culoarea mai precis.

Pentru a calibra și optimiza citirile pentru senzorul dvs., urmați pașii exact:

Pasul 1: Încărcați următorul cod cu configurarea hardware finalizată.

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

Pasul 2: Deschideți monitorul serial, veți găsi parametrii de culoare astfel:

Aduceți obiectul de culoare (este preferată hârtia colorată) roșu, albastru și verde.

Pasul 3:

• Așezați hârtia roșie aproape de senzorul TCS3200.
• Notați citirile R, G, B (toate cele trei culori) în timp ce așezați hârtia de culoare roșie.
• Notați în mod similar citirea R, G, B pentru hârtiile de culoare verde și albastru.

• NOTĂ: atunci când plasați oricare dintre cele 3 culori în fața TCS3200 notați toate citirile roșii, albastre și verzi pentru fiecare hârtie color, pe care trebuie să le introduceți în programul principal de detectare a culorilor.

Pasul 4: Citiți Pasul 5 și încărcați codul principal de mai jos (program de detectare a culorilor)

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

Pasul 5: În codul de mai sus, înlocuiți valorile cu valorile pe care le-ați notat recent:

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

Când așezați hârtia de culoare roșie pe senzor, ați avea trei citiri, de exemplu R = 56 | G = 78 | B = 38.

Plasați valorile 56, 78, 38 astfel:

// Pentru culoarea ROșU:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

În mod similar, pentru alte două culori și încărcați codul.

Pasul 6:

• Deschideți monitorul serial și plasați oricare dintre cele trei culori în fața senzorului.
• Veți vedea detectarea culorilor pe monitorul serial simultan cu activarea releului de culoare corespunzător.

• Apăsați butonul de resetare de pe placa Arduino pentru a dezactiva releul.

NOTA 1: Este posibil ca circuitul să nu detecteze culorile, dacă ați plasat o nuanță / nuanță ușor diferită a obiectului / hârtiei de culoare ROȘU, VERZ, ALBASTRU, după calibrare. Cu alte cuvinte, trebuie să utilizați exact același obiect / hârtie colorată pentru a detecta culorile și pentru a declanșa releu.

NOTĂ 2: Lumina ambientală poate afecta detectarea culorii, așadar, vă rugăm să mențineți o lumină consistentă lângă senzor în timp ce calibrați și, de asemenea, în timpul detectării culorilor.

Prototipul autorului:

Prototip senzor de culoare Arduino

Dacă aveți întrebări cu privire la acest proiect, vă rugăm să exprimați în secțiunea de comentarii, este posibil să primiți un răspuns rapid.




Precedent: Utilizarea senzorilor TSOP17XX cu frecvențe personalizate Următorul: Circuitul încărcătorului de baterii multiple folosind condensatorul de descărcare