Spalvų detektoriaus grandinė su „Arduino“ kodu

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame įraše sukursime grandinę, kuri gali aptikti spalvą ir sukelti atitinkamas priskirtas reles. Šis projektas įgyvendinamas naudojant TCS3200 spalvų jutiklį ir „Arduino“ plokštę.

TCS3200 spalvų jutimas

Jei neskaitėte ankstesnio straipsnio, pereikite jį ten, kur aptarėme spalvų jutimo naudojant TCS3200 pagrindai



Siūlomas projektas gali būti naudingas, jei norite, kad grandinė imtųsi veiksmų pagal spalvas. Įvairiose pramonės srityse yra spalvų atpažinimo pagrindu paremtų vandenynų.

Šis projektas suteiks supratimą, kaip mes galime užprogramuoti spalvų jutiklį, kad jis aptiktų skirtingas spalvas ir įjungtų reles.



Šiame projekte apsvarstysime pagrindines spalvas: RED, GREEN ir BLUE. Šis projektas gali atskirti šias tris spalvas ir sukelti reles, kiekvienos spalvos relę.

TCS3200 gali aptikti bet kokį spalvų skaičių, tačiau, kad projektas būtų suprantamas ir kad programos kodas būtų paprastas, mes koncentruojamės tik į pagrindines spalvas.

Grandinės schema:

sąsaja su „Arduino“ ir TCS3200 spalvų jutikliu

Pirmiau pateikta schema skirta „Arduino“ ir „TCS3200“ spalvų jutiklio sąsajai.

Relių jungtys:

relės jungtys „Arduino“ ir TCS3200 spalvų jutikliui

Maitinkite „Arduino“ su mažiausiai 500 mA įtampos 9 V adapteriu. Transistorius veikia kaip relės stiprintuvas, nes „Arduino“ GPIO kaiščiai negali suteikti pakankamai srovės relei.

Diodas 1N4007 sugers aukštos įtampos šuolius iš relės ritės, apsaugodamas likusius puslaidininkių komponentus.

Tuo baigiama aparatūra.

Dabar pažiūrėkime, kaip įkelti kodą ir kalibruoti jutiklį pagal jūsų poreikius.
Spalvų jautrumas gali skirtis nuo modulio, o aplinkos šviesa gali smarkiai pakeisti spalvų jautrumą.

Visi TCS3200 jutikliai turi tam tikrų variantų gaminant, turite išmatuoti jutiklio, kurį šiuo metu turite, spalvų parametrus, kad tuos parametrus būtų galima naudoti kode, norint tiksliau aptikti spalvą.

Norėdami kalibruoti ir optimizuoti jutiklio rodmenis, atlikite šiuos veiksmus:

1 veiksmas: įkelkite šį kodą su užbaigta aparatūros sąranka.

//-----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 žingsnis: Atidarykite nuoseklųjį monitorių, rasite tokius spalvų parametrus:

Atneškite spalvotą daiktą (pageidautina spalvoto popieriaus) raudoną, mėlyną ir žalią.

3 žingsnis:

• Padėkite raudoną popierių arti TCS3200 jutiklio.
• Dėdami raudonos spalvos popierių, užrašykite R, G, B rodmenis (visas tris spalvas).
• Panašiai atkreipkite dėmesį į žalios ir mėlynos spalvos popieriaus R, G, B rodmenis.

• PASTABA: prieš TCS3200 padėdami bet kurią iš 3 spalvų, užrašykite visus raudonos, mėlynos ir žalios spalvos spalvoto popieriaus rodmenis, kuriuos turite įvesti į pagrindinę spalvų aptikimo programą.

4 žingsnis: perskaitykite 5 žingsnį ir įkelkite pagrindinį žemiau esantį kodą (spalvų aptikimo programa)

//-- -- -- -- 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 žingsnis: Pirmiau pateiktame kode pakeiskite reikšmes savo vertėmis, kurias neseniai užfiksavote:

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

Uždėję ant jutiklio raudoną popierių, gautumėte tris rodmenis, pavyzdžiui, R = 56 | G = 78 | B = 38.

56, 78, 38 reikšmes pateikite taip:

// Raudonai spalvai:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Panašiai ir kitoms dviem spalvoms bei įkelkite kodą.

6 žingsnis:

• Atidarykite nuoseklųjį monitorių ir padėkite bet kurią iš trijų spalvų priešais jutiklį.
• Tuo pačiu metu matysite spalvų aptikimą serijiniame monitoriuje.

• Norėdami išjungti relę, paspauskite „Arduino“ plokštės atstatymo mygtuką.

1 PASTABA: grandinė gali neaptikti spalvų, jei po kalibravimo padėsite šiek tiek kitokį RED, GREEN, BLUE spalvos objekto / popieriaus atspalvį / atspalvį. Kitaip tariant, norėdami aptikti spalvas ir paleisti relę, turite naudoti tiksliai tos pačios spalvos daiktą / popierių.

2 PASTABA: Aplinkos šviesa gali paveikti spalvų aptikimą, todėl kalibruodami ir aptikdami spalvas, šalia jutiklio palaikykite pastovią šviesą.

Autoriaus prototipas:

„Arduino“ spalvų jutiklio prototipas

Jei turite klausimų dėl šio projekto, prašome paaiškinti komentarų skiltyje, galite gauti greitą atsakymą.




Ankstesnis: TSOP17XX jutiklių naudojimas su pritaikytais dažniais Kitas: Daugkartinė akumuliatoriaus įkroviklio grandinė, naudojant kondensatorių