Arduino koodiga värvidetektorahel

Proovige Meie Instrumenti Probleemide Kõrvaldamiseks





Selles postituses ehitame vooluahela, mis suudab tuvastada värvi ja käivitada vastavad määratud releed. Selle projekti teostamiseks kasutatakse värvisensorit TCS3200 ja Arduino plaati.

Värvide tuvastamine TCS3200 poolt

Kui te pole eelmist artiklit lugenud, vaadake seda läbi seal, kus oleme seda arutanud värvitaju põhitõed TCS3200 abil



Kavandatud projekt võib olla kasulik, kui soovite, et vooluring toimiks värvide põhjal. Erinevates tööstusvaldkondades on värvituvastusel põhinevaid rakenduste ookeane.

See projekt annab ülevaate, kuidas saame värviandurit programmeerida erinevate värvide tuvastamiseks ja releede käivitamiseks.



Selle projekti puhul kaalume põhivärve: PUNANE, ROHELINE ja SININE. See projekt saab eristada neid kolme värvi ja käivitada releed, iga relee iga värvi jaoks.

TCS3200 suudab tuvastada suvalise arvu värve, kuid projekti arusaadavuse ja programmikoodi lihtsuse huvides keskendume ainult põhivärvidele.

Vooluahela skeem:

Arduino ja TCS3200 värvianduri ühendamine

Ülaltoodud skeem on mõeldud Arduino ja TCS3200 värvianduri ühendamiseks.

Releeühendused:

releeühendused värvianduriga Arduino ja TCS3200

Toitke Arduino toite 9V adapteriga vähemalt 500mA. Transistor toimib relee võimendina, kuna Arduino GPIO tihvtid ei suuda relee jaoks piisavalt voolu pakkuda.

Diood 1N4007 neelab relee mähisest kõrgepinge naelu, kaitstes ülejäänud pooljuhtkomponente.

See lõpetab riistvara.

Vaatame nüüd, kuidas koodi üles laadida ja andurit vastavalt vajadustele kalibreerida.
Värvitundlikkus võib mooduliti erineda ja ümbritsev valgus võib värvitundlikkust drastiliselt muuta.

Kõigil TCS3200 anduritel on valmistamisel mõningaid variatsioone, peate mõõtma anduri värviparameetreid, mis teil hetkel on, et neid parameetreid saaks kasutada koodis värvi täpsemaks tuvastamiseks.

Anduri näitude kalibreerimiseks ja optimeerimiseks toimige täpselt järgmiselt.

1. samm: laadige üles järgmine kood koos riistvara lõpuleviimisega.

//-----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. samm: avage jadamonitor, leiate sellised värviparameetrid:

Võtke värviobjekt (eelistatud on värviline paber) punane, sinine ja roheline.

3. samm:

• Asetage punane paber TCS3200 anduri lähedale.
• Pange punase paberi asetamise ajal üles R, G, B näidud (kõik kolm värvi).
• Samamoodi märkige üles rohelise ja sinise paberi R, G, B näidud.

• MÄRKUS. Kui asetate mõne kolmest värvist TCS3200 ette, märkige üles iga värvipaberi kõik punased, sinised ja rohelised näidud, mille peate sisestama põhivärvide tuvastamise programmi.

4. samm: lugege 5. sammu ja laadige alla peamine kood (värvituvastusprogramm)

//-- -- -- -- 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. samm: Asendage ülaltoodud koodis väärtused oma hiljuti üles märgitud väärtustega:

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

Kui asetate andurile punase värvi paberi, oleksite saanud kolm näitu, näiteks R = 56 | G = 78 | B = 38.

Asetage väärtused 56, 78, 38 järgmiselt:

// punase värvi jaoks:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Sarnaselt kahe teise värvi puhul laadige kood üles.

6. samm:

• Avage seeriamonitor ja asetage anduri ette ükskõik milline kolmest värvitoonist.
• Näete jadamonitoril värvide tuvastamist samaaegselt, aktiveeritakse vastav värvirelee.

• Relee väljalülitamiseks vajutage Arduino pardal lähtestusnuppu.

MÄRKUS 1: Kui pärast kalibreerimist asetate PUNASE, ROHELISE, SINISE värviga objekti / paberi pisut erineva tooni / tooni, ei pruugi vooluring värve tuvastada. Teisisõnu, värvide tuvastamiseks ja relee käivitamiseks peate kasutama täpselt sama värvi objekti / paberit.

MÄRKUS 2: ümbritsev valgus võib mõjutada värvide tuvastamist, nii et palun hoidke anduri lähedal ühtlast valgust kalibreerimise ajal ja ka värvide tuvastamisel.

Autori prototüüp:

Arduino värvianduri prototüüp

Kui teil on selle projektiga seoses küsimusi, palun väljendage kommentaaride jaotises, võite saada kiire vastuse.




Eelmine: TSOP17XX andurite kasutamine kohandatud sagedustega Järgmine: mitu akulaadija vooluringi, kasutades kondensaatorit