Színérzékelő áramkör Arduino kóddal

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Ebben a bejegyzésben egy áramkört fogunk létrehozni, amely képes érzékelni a színt és kiváltani a hozzárendelt reléket. Ezt a projektet a TCS3200 színes érzékelő és az Arduino kártya segítségével hajtják végre.

Színérzékelés a TCS3200 által

Ha még nem olvasta el az előző cikket, kérjük, olvassa el ott, ahol megbeszéltük a színérzékelés alapjai a TCS3200 segítségével



A javasolt projekt hasznos lehet, ha azt szeretné, hogy egy áramkör a színek alapján cselekedjen. A színfelismerésen alapuló alkalmazások óceánjai vannak a különböző ipari területeken.

Ez a projekt betekintést nyújt abba, hogyan programozhatjuk a színérzékelőt a különböző színek észlelésére és a relék beindítására.



Megvizsgáljuk az elsődleges színeket: VÖRÖS, ZÖLD és KÉK ehhez a projekthez. Ez a projekt meg tudja különböztetni ezt a három színt, és kiválthatja a reléket, mindegyik szín relé.

A TCS3200 tetszőleges számú színt képes észlelni, de a projekt érthetősége és a programkód egyszerűsége érdekében csak az elsődleges színekre koncentrálunk.

Kördiagramm:

az Arduino és a TCS3200 színérzékelő összekapcsolása

A fenti vázlat az Arduino és a TCS3200 színérzékelő összekapcsolására szolgál.

Relé csatlakozások:

relés csatlakozások az Arduino és a TCS3200 színérzékelőhöz

Tápellátás az Arduino 9V-os adapterével legalább 500mA-val. A tranzisztor a relé erősítőjeként működik, mivel az Arduino GPIO csapjai nem tudnak elegendő áramot biztosítani a reléhez.

Az 1N4007 dióda elnyeli a nagyfeszültségű tüskéket a relétekercsből, megvédve a többi félvezető alkatrészt.

Ezzel lezárul a hardver.

Most nézzük meg, hogyan lehet feltölteni a kódot és kalibrálni az érzékelőt az Ön igényeinek megfelelően.
A színérzékenység modulonként változhat, a környezeti fény pedig drasztikusan megváltoztathatja a színérzékenységet.

Az összes TCS3200 szenzornak van némi változata a gyártás során, meg kell mérnie az Ön tulajdonában lévő érzékelő színparamétereit, hogy ezek a paraméterek felhasználhatók legyenek a kódban a szín pontos felismerésére.

Az érzékelő leolvasásának kalibrálásához és optimalizálásához kövesse az alábbi lépéseket:

1. lépés: Töltse fel a következő kódot a befejezett hardverbeállítással.

//-----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. lépés: Nyissa meg a soros monitort, megtalálja az alábbi színparamétereket:

Vigye a színes objektumot (a színes papírt előnyben részesíti) piros, kék és zöld színnel.

3. lépés:

• Helyezze a piros színű papírt a TCS3200 érzékelő közelébe.
• Jegyezze fel az R, G, B értékeket (mindhárom szín), miközben a piros színű papírt helyezi.
• Hasonlóképpen jegyezze fel a zöld és kék színű papírok R, G, B értékét.

• MEGJEGYZÉS: amikor a 3 szín bármelyikét a TCS3200 elé helyezi, jegyezze fel az egyes színes papírok összes piros, kék és zöld értékét, amelyeket be kell írnia a fő színfelismerő programba.

4. lépés: Olvassa el az 5. lépést, és töltse fel az alábbi fő kódot (színfelismerő program)

//-- -- -- -- 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. lépés: A fenti kódban cserélje ki az értékeket a legutóbb feljegyzett értékekre:

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

Ha a vörös színű papírt az érzékelőre helyezi, három leolvasást kapna, például R = 56 | G = 78 | B = 38.

Helyezze az 56, 78, 38 értékeket így:

// RED szín esetén:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Hasonlóképpen, a másik két színhez és töltse fel a kódot.

6. lépés:

• Nyissa ki a soros monitort, és tegye a három szín bármelyikét az érzékelő elé.
• A soros monitoron egyszerre látja a színek észlelését, a megfelelő színrelé aktiválódik.

• A relé deaktiválásához megnyomta az Arduino táblán található reset gombot.

1. MEGJEGYZÉS: Előfordulhat, hogy az áramkör nem érzékeli a színeket, ha a VÖRÖS, ZÖLD, KÉK színű tárgy / papír kissé eltérő árnyalatát / árnyalatát helyezi el kalibrálás után. Más szavakkal, pontosan ugyanolyan színű tárgyat / papírt kell használnia a színek észleléséhez és a relé kiváltásához.

2. MEGJEGYZÉS: A környezeti fény befolyásolhatja a színérzékelést, ezért tartson állandó fényt az érzékelő közelében a kalibrálás és a színek észlelése közben.

A szerző prototípusa:

Arduino színérzékelő prototípus

Ha bármilyen kérdése van a projekttel kapcsolatban, kérjük, fejtse ki a megjegyzés részben, és gyors választ kaphat.




Előző: TSOP17XX érzékelők használata testreszabott frekvenciákkal Következő: Többszörös akkumulátortöltő áramkör Dump kondenzátor használatával