Vezje barvnega detektorja s kodo Arduino

Preizkusite Naš Instrument Za Odpravo Težav





V tem prispevku bomo zgradili vezje, ki lahko zazna barvo in sproži ustrezne dodeljene releje. Ta projekt je bil izveden z uporabo barvnega senzorja TCS3200 in plošče Arduino.

Zaznavanje barv s strani TCS3200

Če prejšnjega članka niste prebrali, ga preberite, kjer smo razpravljali o osnove zaznavanja barv s pomočjo TCS3200



Predlagani projekt je lahko koristen, če želite, da vezje ukrepa na podlagi barv. Obstajajo oceani aplikacij, ki temeljijo na zaznavanju barv na različnih industrijskih področjih.

Ta projekt bo dal vpogled v to, kako lahko programiramo barvni senzor za zaznavanje različnih barv in sprožitev relejev.



Upoštevali bomo glavne barve: RDEČO, ZELENO in MODRO za ta projekt. Ta projekt lahko razlikuje med temi tremi barvami in sproži releje, vsak rele za vsako barvo.

TCS3200 lahko zazna poljubno število barv, vendar da bi bil projekt razumljiv in programska koda preprosta, se osredotočamo le na primarne barve.

Shema vezja:

povezovanje barvnega senzorja Arduino in TCS3200

Zgornja shema je namenjena povezovanju barvnega senzorja Arduino in TCS3200.

Relejni priključki:

relejske povezave barvnega senzorja Arduino in TCS3200

Napajajte Arduino z 9V adapterjem z najmanj 500mA. Tranzistor deluje kot ojačevalnik za rele, saj zatiči Arduino GPIO ne morejo zagotoviti zadostnega toka za rele.

Dioda 1N4007 bo absorbirala visokonapetostne konice iz relejske tuljave in ščitila ostale polprevodniške komponente.

S tem je zaključena strojna oprema.

Zdaj pa poglejmo, kako naložiti kodo in umeriti senzor glede na vaše potrebe.
Barvna občutljivost se lahko razlikuje od modula do modula, svetloba okolice pa lahko občutno spremeni občutljivost barve.

Vsi senzorji TCS3200 imajo nekaj različic med izdelavo, zato morate izmeriti barvne parametre za senzor, ki ga trenutno imate, tako da lahko te parametre v kodi uporabite za natančnejše zaznavanje barve.

Za umerjanje in optimizacijo odčitkov za senzor sledite natančno korakom:

1. korak: naložite naslednjo kodo z zaključeno namestitvijo strojne opreme.

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

2. korak: Odprite serijski monitor in našli boste barvne parametre, kot je ta:

Barvni predmet (najprimernejši je barvni papir) prinesite rdečo, modro in zeleno.

3. korak:

• Rdeč papir postavite blizu senzorja TCS3200.
• Med odlaganjem rdečega papirja si zapišite zapise R, G, B (vse tri barve).
• Podobno zapišite zapise R, G, B za zelene in modre papirje.

• OPOMBA: ko postavite katero od treh barv pred TCS3200, si zapišite vse rdeče, modre in zelene odčitke za posamezen barvni papir, ki jih morate vnesti v glavni program za zaznavanje barv.

4. korak: preberite 5. korak in naložite glavno spodnjo kodo (program za zaznavanje barv)

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

5. korak: V zgornji kodi vrednosti zamenjajte z vrednostmi, ki ste jih nedavno zapisali:

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

Ko bi rdeči papir postavili na senzor, bi dobili tri odčitke, na primer R = 56 | G = 78 | B = 38.

Vrednosti 56, 78, 38 postavite tako:

// Za RDEČO barvo:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Podobno za drugi dve barvi in ​​naložite kodo.

6. korak:

• Odprite serijski monitor in postavite katero koli od treh barv pred senzor.
• Na serijskem monitorju boste zaznali barve hkrati, ko se aktivira ustrezen barvni rele.

• Pritisnite tipko za ponastavitev na plošči Arduino, da deaktivirate rele.

OPOMBA 1: Če vezje po kalibraciji postavite nekoliko drugačen odtenek / odtenek RDEČEGA, ZELENEGA, MODREga barvnega predmeta / papirja, vezje morda ne bo zaznalo barv. Z drugimi besedami, za zaznavanje barv in za sprožitev releja morate uporabiti popolnoma enake predmete / papir.

OPOMBA 2: Okoljska svetloba lahko vpliva na zaznavanje barv, zato med umerjanjem in tudi med zaznavanjem barv ohranjajte stalno svetlobo v bližini senzorja.

Avtorjev prototip:

Prototip barvnega senzorja Arduino

Če imate kakršna koli vprašanja v zvezi s tem projektom, prosimo, izrazite v oddelku za komentarje, lahko prejmete hiter odgovor.




Prejšnja: Uporaba senzorjev TSOP17XX s prilagojenimi frekvencami Naprej: vezje polnilnika za akumulator z uporabo kondenzatorja za odlaganje