Okruh detektora farieb s kódom Arduino

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





V tomto príspevku zostrojíme obvod, ktorý dokáže detegovať farbu a spustiť príslušné priradené relé. Tento projekt sa realizuje pomocou farebného snímača TCS3200 a dosky Arduino.

Color Sensing podľa TCS3200

Ak ste si neprečítali predchádzajúci článok, prečítajte si ho, kde sme diskutovali o základy snímania farieb pomocou TCS3200



Navrhovaný projekt môže byť užitočný, ak chcete, aby obvod vykonal akciu na základe farieb. Existujú oceány aplikácií založených na detekcii farieb v rôznych priemyselných oblastiach.

Tento projekt poskytne prehľad o tom, ako môžeme naprogramovať farebný snímač na detekciu rôznych farieb a spustenie relé.



Pre tento projekt zvážime základné farby: ČERVENÁ, ZELENÁ a MODRÁ. Tento projekt dokáže rozlíšiť medzi týmito tromi farbami a spustiť relé, každé relé pre každú farbu.

TCS3200 dokáže zistiť ľubovoľný počet farieb, ale aby bol projekt zrozumiteľný a programový kód jednoduchý, sústredíme sa iba na primárne farby.

Schéma zapojenia:

prepojenie farebného snímača Arduino a TCS3200

Vyššie uvedená schéma je určená na prepojenie farebného snímača Arduino a TCS3200.

Pripojenia relé:

reléové pripojenie farebného snímača Arduino a TCS3200

Napájajte Arduino 9V adaptérom najmenej 500mA. Tranzistor slúži ako zosilňovač pre relé, pretože piny GPIO Arduina nemôžu poskytnúť dostatočný prúd na relé.

Dióda 1N4007 bude absorbovať hroty vysokého napätia z reléovej cievky a ochráni tak zvyšok polovodičových súčiastok.

Tým je hardware ukončený.

Teraz sa pozrime, ako nahrať kód a kalibrovať snímač podľa vašich požiadaviek.
Citlivosť farieb sa môže líšiť od modulu k modulu a okolité svetlo môže drasticky meniť citlivosť farieb.

Všetky snímače TCS3200 majú pri výrobe určité odchýlky. Musíte merať farebné parametre snímača, ktorý momentálne vlastníte, aby bolo možné tieto parametre použiť v kóde na presnejšiu detekciu farieb.

Ak chcete kalibrovať a optimalizovať údaje pre váš snímač, postupujte nasledovne:

Krok 1: Nahrajte nasledujúci kód s dokončeným nastavením hardvéru.

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

Krok 2: Otvorte sériový monitor, nájdete také farebné parametre:

Prineste farebný objekt (uprednostňuje sa farebný papier) červený, modrý a zelený.

Krok 3:

• Papier červenej farby umiestnite blízko senzora TCS3200.
• Poznamenajte si hodnoty R, G, B (všetky tri farby), zatiaľ čo kladiete papier červenej farby.
• Podobne si zapíšte čítanie R, G, B pre zelené a modré farebné papiere.

• POZNÁMKA: ak umiestnite ktorúkoľvek z 3 farieb pred TCS3200, poznačte si všetky hodnoty červenej, modrej a zelenej pre každý farebný papier, ktoré musíte zadať v hlavnom programe detekcie farieb.

Krok 4: Prečítajte si krok 5 a nahrajte hlavný nasledujúci kód (program na detekciu farieb)

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

Krok 5: Vo vyššie uvedenom kóde nahraďte hodnoty svojimi hodnotami, ktoré ste si nedávno poznamenali:

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

Keby ste na senzor umiestnili červeno zafarbený papier, dostali by ste tri hodnoty, napríklad R = 56 | G = 78 | B = 38.

Hodnoty 56, 78, 38 umiestnite takto:

// Pre ČERVENÚ farbu:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Podobne pre ďalšie dve farby a nahrajte kód.

Krok 6:

• Otvorte sériový monitor a umiestnite ktorúkoľvek z troch farieb pred snímač.
• Uvidíte detekciu farieb na sériovom monitore súčasne s aktiváciou príslušného farebného relé.

• Stlačením resetovacieho tlačidla na doske Arduino deaktivujete relé.

POZNÁMKA 1: Obvod nemusí detekovať farby, ak po kalibrácii umiestnite mierne odlišný odtieň / odtieň ČERVENÉHO, ZELENÉHO, MODRÉHO farebného predmetu / papiera. Inými slovami, na detekciu farieb a na spustenie relé musíte použiť presne rovnaký farebný predmet / papier.

POZNÁMKA 2: Okolité svetlo môže mať vplyv na detekciu farieb, preto pri kalibrácii a pri detekcii farieb udržujte v blízkosti senzora konzistentné svetlo.

Autorský prototyp:

Prototyp farebného snímača Arduino

Ak máte akékoľvek otázky týkajúce sa tohto projektu, vyjadrite sa, prosím, v sekcii komentárov, môžete dostať rýchlu odpoveď.




Predchádzajúci: Používanie snímačov TSOP17XX s prispôsobenými frekvenciami Ďalej: Obvod nabíjačky viacerých batérií pomocou kondenzátora Dump