Fargedetektorkrets med Arduino-kode

Prøv Instrumentet Vårt For Å Eliminere Problemer





I dette innlegget skal vi konstruere en krets som kan oppdage farge og utløse respektive tildelte reléer. Dette prosjektet er utført ved hjelp av TCS3200 fargesensor og Arduino-kort.

Color Sensing av TCS3200

Hvis du ikke har lest forrige artikkel, kan du gå gjennom den der vi har diskutert grunnleggende om fargesensing ved bruk av TCS3200



Det foreslåtte prosjektet kan være nyttig hvis du vil at en krets skal iverksette tiltak basert på farger. Det er hav av applikasjoner basert på fargedeteksjon i forskjellige industrielle felt.

Dette prosjektet vil gi et innblikk i hvordan vi kan programmere fargesensoren for å oppdage forskjellige farger og utløse reléene.



Vi skal vurdere de primære fargene: RØD, GRØNN og BLÅ for dette prosjektet. Dette prosjektet kan skille mellom disse tre fargene og utløse reléene, hvert relé for hver farge.

TCS3200 kan oppdage et hvilket som helst antall farger, men for å holde prosjektet forståelig og for å holde programkoden enkel, konsentrerer vi oss bare om primærfargene.

Kretsdiagram:

grensesnitt Arduino og TCS3200 fargesensor

Ovenstående skjema er for grensesnitt mellom Arduino og TCS3200 fargesensoren.

Relétilkoblinger:

relé tilkoblinger Arduino og TCS3200 fargesensor

Strøm Arduino med 9V adapter med minst 500mA. Transistoren fungerer som forsterker for relé siden Arduinos GPIO-pinner ikke kan gi tilstrekkelig strøm til å relé.

Dioden 1N4007 vil absorbere høyspennings pigger fra reléspolen, og beskytter resten av halvlederkomponentene.

Det avslutter maskinvaren.

La oss nå se hvordan du laster opp koden og kalibrerer sensoren etter dine behov.
Fargefølsomheten kan variere fra modul til modul, og omgivende lys kan endre fargefølsomheten drastisk.

Alle TCS3200-sensorer har en viss variasjon mens du produserer, du må måle fargeparametrene for sensoren du for øyeblikket eier, slik at disse parametrene kan brukes i koden for å oppdage fargen mer nøyaktig.

Følg trinnene nøyaktig for å kalibrere og optimalisere målingene for sensoren:

Trinn 1: Last opp følgende kode med fullført maskinvareoppsett.

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

Trinn 2: Åpne den serielle skjermen, du finner fargeparametrene slik:

Ta med fargeobjektet (farget papir foretrekkes) rød, blå og grønn.

Trinn 3:

• Legg det rødfargede papiret nær TCS3200-sensoren.
• Legg merke til R-, G-, B-målingene (alle tre fargene) mens du legger papiret i rød farge.
• På samme måte noterer du R, G, B-lesing for papir i grønt og blått.

• MERKNAD: Når du plasserer noen av de tre fargene foran TCS3200, noterer du alle de røde, blå og grønne målingene for hvert fargepapir, som du trenger å legge inn i hovedfargepåvisningsprogrammet.

Trinn 4: Les trinn 5 og last opp hovedkoden nedenfor (fargedeteksjonsprogram)

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

Trinn 5: I koden ovenfor erstatter du verdiene med verdiene dine som du nylig noterte:

//--------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 plasserte det rødfargede papiret på sensoren, ville du ha fått tre målinger, for eksempel R = 56 | G = 78 | B = 38.

Plasser verdiene 56, 78, 38 slik:

// For RØD farge:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Tilsvarende for andre to farger og last opp koden.

Trinn 6:

• Åpne den serielle skjermen og plasser en av de tre fargene foran sensoren.
• Du vil se deteksjonen av farger på den serielle skjermen samtidig som det tilsvarende farreléet blir aktivert.

• Du har trykk på tilbakestillingsknappen på Arduino-kortet for å deaktivere reléet.

MERKNAD 1: Kretsen oppdager kanskje ikke fargene, hvis du plasserer litt annen nyanse / fargetone på RØDT, GRØNNT, BLÅ farget objekt / papir etter kalibrering. Med andre ord, du må bruke nøyaktig samme fargede gjenstand / papir for å oppdage farger og for å utløse relé.

MERKNAD 2: Omgivende lys kan påvirke fargedeteksjonen, så vær så snill å holde et jevnt lys i nærheten av sensoren mens du kalibrerer og også mens du oppdager farger.

Forfatterens prototype:

Arduino fargesensor prototype

Hvis du har spørsmål angående dette prosjektet, vennligst uttrykk i kommentarseksjonen, du kan få et raskt svar.




Forrige: Bruk av TSOP17XX-sensorer med tilpassede frekvenser Neste: Flere batteriladerkretser med Dump Capacitor