Krāsu detektora shēma ar Arduino kodu

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Šajā ziņojumā mēs izveidosim ķēdi, kas var noteikt krāsu un iedarbināt attiecīgos piešķirtos relejus. Šis projekts ir paveikts, izmantojot TCS3200 krāsu sensoru un Arduino dēli.

Krāsu uztveršana ar TCS3200

Ja neesat lasījis iepriekšējo rakstu, lūdzu, izlasiet to, kur mēs to esam apsprieduši krāsu uztveršanas pamati, izmantojot TCS3200



Piedāvātais projekts var būt noderīgs, ja vēlaties, lai ķēde rīkotos, pamatojoties uz krāsām. Dažādās rūpniecības jomās ir okeāni, kuru pamatā ir krāsu noteikšana.

Šis projekts sniegs ieskatu par to, kā mēs varam ieprogrammēt krāsu sensoru dažādu krāsu noteikšanai un releju iedarbināšanai.



Mēs apsvērsim šī projekta pamatkrāsas: RED, GREEN un BLUE. Šis projekts var atšķirt šīs trīs krāsas un iedarbināt relejus, katrs relejs katrai krāsai.

TCS3200 var noteikt jebkuru krāsu skaitu, taču, lai projekts būtu saprotams un lai programmas kods būtu vienkāršs, mēs koncentrējamies tikai uz galvenajām krāsām.

Ķēdes shēma:

Arduino un TCS3200 krāsu sensora saskarne

Iepriekš minētā shēma ir paredzēta Arduino un TCS3200 krāsu sensora saskarnei.

Releja savienojumi:

releja savienojumi Arduino un TCS3200 krāsu sensoram

Strādājiet Arduino ar 9V adapteri ar vismaz 500mA. Transistors darbojas kā releja pastiprinātājs, jo Arduino GPIO tapas nespēj nodrošināt pietiekamu strāvu relejam.

Diods 1N4007 absorbēs augstsprieguma tapas no releja spoles, aizsargājot pārējos pusvadītāju komponentus.

Ar to noslēdzas aparatūra.

Tagad redzēsim, kā augšupielādēt kodu un kalibrēt sensoru atbilstoši jūsu vajadzībām.
Krāsu jutība dažādos moduļos var atšķirties, un apkārtējā gaisma var krasi mainīt krāsu jutību.

Visiem TCS3200 sensoriem ir zināmas variācijas, kamēr tiek izgatavoti, jums jāmēra krāsu parametri sensoram, kas jums pašlaik pieder, lai šos parametrus varētu izmantot kodā, lai precīzāk noteiktu krāsu.

Lai kalibrētu un optimizētu sensora rādījumus, rīkojieties precīzi:

1. darbība: augšupielādējiet šo kodu ar pabeigtu aparatūras iestatīšanu.

//-----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. solis: Atveriet sērijveida monitoru, jūs atradīsit šādus krāsu parametrus:

Līdzi ņemiet krāsu objektu (priekšroka ir krāsainam papīram) sarkanu, zilu un zaļu.

3. solis:

• Novietojiet sarkano krāsu papīru tuvu TCS3200 sensoram.
• Pierakstiet R, G, B rādījumus (visas trīs krāsas), kamēr ievietojat sarkanās krāsas papīru.
• Līdzīgi atzīmējiet R, G, B rādījumus zaļajiem un zilajiem papīriem.

• PIEZĪME: novietojot jebkuru no 3 krāsām TCS3200 priekšā, pierakstiet visus sarkanā, zilā un zaļā rādījumus katram krāsu papīram, kas jāievada galvenajā krāsu noteikšanas programmā.

4. darbība: izlasiet 5. darbību un augšupielādējiet galveno kodu zemāk (krāsu noteikšanas programma)

//-- -- -- -- 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. darbība: Iepriekš norādītajā kodā aizstājiet vērtības ar tām vērtībām, kuras nesen pierakstījāt:

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

Uz sensora ievietojot sarkanu papīru, jūs saņemsiet trīs rādījumus, piemēram, R = 56 | G = 78 | B = 38.

Novietojiet vērtības 56, 78, 38 šādi:

// Sarkanai krāsai:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Tāpat arī pārējām divām krāsām un augšupielādējiet kodu.

6. solis:

• Atveriet sērijveida monitoru un novietojiet jebkuru no trim krāsām sensora priekšā.
• Vienlaicīgi sērijveida monitorā redzēsit krāsu noteikšanu, un tiks aktivizēts atbilstošais krāsu relejs.

• Lai deaktivizētu releju, uz Arduino dēļa esat nospiedis atiestatīšanas pogu.

1. PIEZĪME: Ja pēc kalibrēšanas ķēde var neatklāt krāsas, ja jūs ievietojat nedaudz atšķirīgu RED, GREEN, BLUE krāsas priekšmetu / papīra nokrāsu / nokrāsu. Citiem vārdiem sakot, jums ir jāizmanto tieši tādas pašas krāsas priekšmets / papīrs, lai noteiktu krāsas un iedarbinātu releju.

2. PIEZĪME: Apkārtējā gaisma var ietekmēt krāsu noteikšanu, tāpēc kalibrēšanas laikā un arī krāsu noteikšanas laikā sensora tuvumā saglabājiet vienmērīgu gaismu.

Autora prototips:

Arduino krāsu sensora prototips

Ja jums ir kādi jautājumi par šo projektu, lūdzu, izsakiet komentāru sadaļā, iespējams, saņemsit ātru atbildi.




Pāri: TSOP17XX sensoru izmantošana ar pielāgotām frekvencēm Nākamais: Vairāku akumulatoru lādētāja ķēde, izmantojot izgāzt kondensatoru