Färgdetektorkrets med Arduino-kod

Prova Vårt Instrument För Att Eliminera Problem





I det här inlägget ska vi konstruera en krets som kan detektera färg och utlösa respektive tilldelade reläer. Detta projekt genomförs med hjälp av TCS3200 färgsensor och Arduino-kort.

Färgavkänning av TCS3200

Om du inte har läst den tidigare artikeln, gå igenom den där vi har diskuterat grunderna för färgavkänning med TCS3200



Det föreslagna projektet kan vara användbart om du vill att en krets ska vidta åtgärder baserat på färger. Det finns hav av applikationer baserade på färgdetektering inom olika industriella områden.

Detta projekt ger en inblick i hur vi kan programmera färgsensorn för att upptäcka olika färger och utlösa reläerna.



Vi kommer att överväga de primära färgerna: RÖD, GRÖN och BLÅ för detta projekt. Detta projekt kan skilja mellan dessa tre färger och utlösa reläerna, varje relä för varje färg.

TCS3200 kan upptäcka valfritt antal färger, men för att hålla projektet förståeligt och för att hålla programkoden enkel koncentrerar vi oss bara på primärfärgerna.

Kretsschema:

gränssnitt Arduino och TCS3200 färgsensor

Ovanstående schema är för gränssnitt mellan Arduino och TCS3200 färgsensor.

Reläanslutningar:

reläanslutningar Arduino och TCS3200 färgsensor

Ström Arduino med 9V-adapter med minst 500mA. Transistorn fungerar som förstärkare för relä eftersom Arduinos GPIO-stift inte kan ge tillräcklig ström för att relä.

Dioden 1N4007 absorberar högspänningspiggar från reläspolen och skyddar resten av halvledarkomponenterna.

Det avslutar hårdvaran.

Låt oss nu se hur du laddar upp koden och kalibrerar sensorn efter dina behov.
Färgkänsligheten kan variera från modul till modul och omgivande ljus kan ändra färgkänsligheten drastiskt.

Alla TCS3200-sensorer har viss variation under tillverkningen, du måste mäta färgparametrarna för sensorn som du för närvarande äger, så att dessa parametrar kan användas i koden för att detektera färgen mer exakt.

För att kalibrera och optimera avläsningarna för din sensor, följ stegen exakt:

Steg 1: Ladda upp följande kod med slutförd hårdvarukonfiguration.

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

Steg 2: Öppna den seriella bildskärmen, du hittar färgparametrarna så här:

Ta med färgobjektet (färgat papper föredras) rött, blått och grönt.

Steg 3:

• Placera det röda papperet nära TCS3200-sensorn.
• Anteckna R-, G-, B-avläsningarna (alla tre färgerna) medan du placerar det röda papperet.
• Notera på samma sätt R, G, B-läsningen för papper i grönt och blått.

• OBS: när du placerar någon av de tre färgerna framför TCS3200 antecknar du alla röda, blå och gröna avläsningar för varje färgpapper, som du behöver ange i huvudfärgdetekteringsprogrammet.

Steg 4: Läs steg 5 och ladda upp huvudkoden nedan (färgdetekteringsprogram)

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

Steg 5: I ovanstående kod ersätter du värdena med dina värden som du nyligen antecknade:

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

När du placerade det röda papperet på sensorn skulle du ha fått tre avläsningar, till exempel R = 56 | G = 78 | B = 38.

Placera värdena 56, 78, 38 så här:

// För RÖD färg:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

På samma sätt, för andra två färger och ladda upp koden.

Steg 6:

• Öppna den seriella bildskärmen och placera någon av de tre färgerna framför sensorn.
• Du ser detekteringen av färger på seriemonitorn samtidigt som motsvarande färgrelä aktiveras.

• Du har tryckt på återställningsknappen på Arduino-kortet för att inaktivera reläet.

OBS 1: Kretsen detekterar kanske inte färgerna, om du placerar något annorlunda nyanser / nyanser av RÖDT, GRÖNT, BLÅT färgat föremål / papper efter kalibrering. Med andra ord måste du använda exakt samma färg / föremål för att upptäcka färger och för att utlösa relä.

OBS 2: Omgivande ljus kan påverka färgdetekteringen, så håll ett jämnt ljus nära sensorn medan du kalibrerar och även när du upptäcker färger.

Författarens prototyp:

Arduino färgsensor prototyp

Om du har några frågor angående detta projekt, vänligen uttryck i kommentarsektionen, du kan få ett snabbt svar.




Tidigare: Använda TSOP17XX-sensorer med anpassade frekvenser Nästa: Flera batteriladdarkretsar med hjälp av dumpkondensator