Farvedetektor kredsløb med Arduino-kode

Prøv Vores Instrument Til At Fjerne Problemer





I dette indlæg skal vi konstruere et kredsløb, der kan registrere farve og udløse respektive tildelte relæer. Dette projekt udføres ved hjælp af TCS3200 farvesensor og Arduino-kort.

Farvesensering af TCS3200

Hvis du ikke har læst den forrige artikel, skal du gennemgå den, hvor vi har diskuteret grundlæggende farveregistrering ved hjælp af TCS3200



Det foreslåede projekt kan være nyttigt, hvis du ønsker, at et kredsløb skal handle på baggrund af farver. Der er oceaner af applikationer baseret på farvedetektion i forskellige industrielle områder.

Dette projekt giver et indblik i, hvordan vi kan programmere farvesensoren til at registrere forskellige farver og udløse relæerne.



Vi vil overveje de primære farver: RØD, GRØN og BLÅ til dette projekt. Dette projekt kan skelne mellem disse tre farver og udløse relæerne, hvert relæ for hver farve.

TCS3200 kan registrere et vilkårligt antal farver, men for at holde projektet forståeligt og for at holde programkoden enkel koncentrerer vi os kun om de primære farver.

Kredsløbsdiagram:

grænseflade mellem Arduino og TCS3200 farvesensoren

Ovenstående skema er til grænseflade mellem Arduino og TCS3200 farvesensoren.

Relæforbindelser:

relæforbindelser Arduino og TCS3200 farvesensor

Tænd Arduino med 9V adapter med mindst 500mA. Transistoren fungerer som forstærker til relæ, da Arduinos GPIO-ben ikke kan give tilstrækkelig strøm til at relæ.

Dioden 1N4007 absorberer højspændingsspidser fra relæspolen og beskytter resten af ​​halvlederkomponenterne.

Det afslutter hardwaren.

Lad os nu se, hvordan du uploader koden og kalibrerer sensoren til dine behov.
Farvesensitiviteten kan variere fra modul til modul, og omgivende lys kan ændre farvesensitiviteten drastisk.

Alle TCS3200 sensorer har en vis variation under fabrikation, du skal måle farveparametrene for den sensor, som du aktuelt ejer, så disse parametre kan bruges i koden til at registrere farven mere præcist.

For at kalibrere og optimere aflæsningerne til din sensor skal du følge trinene nøjagtigt:

Trin 1: Upload følgende kode med afsluttet hardwareopsætning.

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

Trin 2: Åbn den serielle skærm, du finder farveparametrene som denne:

Medbring farveobjektet (farvet papir foretrækkes) rød, blå og grøn.

Trin 3:

• Læg det rødfarvede papir tæt på TCS3200-sensoren.
• Noter R-, G-, B-aflæsningerne (alle tre farver), mens du lægger det røde farvepapir.
• Noter ligeledes R-, G-, B-læsningen for grønne og blå farvepapirer.

• BEMÆRK: Når du placerer en af ​​de 3 farver foran TCS3200, skal du notere alle de røde, blå og grønne aflæsninger for hvert farvepapir, som du skal indtaste i hovedfarvedetekteringsprogrammet.

Trin 4: Læs trin 5, og upload hovedkoden nedenfor (farveopdagelsesprogram)

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

Trin 5: I ovenstående kode skal du erstatte værdierne med dine værdier, som du for nylig noterede:

//--------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 placerede det rødfarvede papir på sensoren, ville du have tre målinger, for eksempel R = 56 | G = 78 | B = 38.

Placer værdierne 56, 78, 38 således:

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

Tilsvarende for andre to farver og upload koden.

Trin 6:

• Åbn den serielle skærm, og placer en af ​​de tre farver foran sensoren.
• Du ser detekteringen af ​​farver på den serielle skærm samtidigt, hvor det tilsvarende farverelæ aktiveres.

• Du har trykket på reset-knappen på Arduino-kortet for at deaktivere relæet.

BEMÆRK 1: Kredsløbet kan muligvis ikke registrere farverne, hvis du placerer en lidt anden skygge / nuance af RØD, GRØN, BLÅ farvet objekt / papir efter kalibrering. Med andre ord skal du bruge nøjagtigt samme farvede objekt / papir til at detektere farver og til at udløse relæ.

BEMÆRK 2: Omgivende lys kan påvirke farvedetekteringen, så vær opmærksom på et konstant lys i nærheden af ​​sensoren, mens du kalibrerer, og også mens du detekterer farver.

Forfatterens prototype:

Arduino farvesensor prototype

Hvis du har spørgsmål vedrørende dette projekt, bedes du udtrykke det i kommentarfeltet, du kan få et hurtigt svar.




Tidligere: Brug af TSOP17XX-sensorer med tilpassede frekvenser Næste: Flere batteriopladekredsløb ved hjælp af dumpekondensator