- Súčasti sú povinné
- Ako vyrobiť podvozok pre robotické rameno na triedenie farieb
- Farebný senzor TCS3200
- Okruhový diagram radiča farieb Arduino
- Programovanie Arduino Uno na triedenie farebných guličiek
Ako už názov napovedá, triedenie farieb spočíva v jednoduchom triedení vecí podľa ich farby. Dá sa to ľahko urobiť tým, že to uvidíte, ale keď je príliš veľa vecí na triedenie a je to opakujúca sa úloha, potom sú veľmi užitočné automatické stroje na triedenie farieb. Tieto stroje majú farebný senzor na snímanie farby akýchkoľvek predmetov a po detekcii farebného servomotora vec uchopia a vložia do príslušnej škatule. Môžu byť použité v rôznych aplikačných oblastiach, kde je dôležitá farebná identifikácia, farebné rozlíšenie a triedenie farieb. Niektoré oblasti použitia zahŕňajú poľnohospodársky priemysel (triedenie zrna na základe farieb), potravinársky priemysel, diamantový a ťažobný priemysel, recyklácia atď. Aplikácie sa neobmedzujú iba na toto a môžu byť ďalej použité v rôznych priemyselných odvetviach.
Najobľúbenejším snímačom na detekciu farieb je farebný snímač TCS3200. Predtým sme použili senzor TCS3200 s Arduinom na získanie komponentu RGB (červená, zelená, modrá) akejkoľvek farby a tiež sme ho prepojili s Raspberry Pi na detekciu farby ľubovoľného objektu.
Tu v tomto výučbe vyrobíme stroj na triedenie farieb pomocou farebného snímača TCS3200, niektorých servomotorov a dosky Arduino. Tento výukový program bude obsahovať triedenie farebných guľôčok a ich uchovávanie v poli príslušnej farby. Krabica bude v pevnej polohe a servomotor sa použije na pohyb ruky triediča, aby sa lopta udržala v príslušnej krabici.
Súčasti sú povinné
- Arduino UNO
- Farebný senzor TCS3200
- Servomotory
- Skokani
- Nepál
Ako vyrobiť podvozok pre robotické rameno na triedenie farieb
Na kompletné nastavenie vrátane podvozku, ramena, valčeka, podložky sme použili biely Sunboard s hrúbkou 2 mm. Je ľahko dostupný v stacionárnych obchodoch. Použili sme rezačku papiera na rezanie tabúľ Sunboard Sheet a FlexKwik alebo FeviKwik na spájanie rôznych častí.
Ďalej uvádzame niekoľko krokov na zostavenie ramena na triedenie farieb:
1) Vezmite list Sunboard.
2) Po zmeraní všetkých strán mierkou a značkovačom tak, ako je to znázornené na obrázku, nakrájajte plát sunboardu na kúsky.
3) Teraz držte dva kusy sunboardu spolu a nalejte na ne kvapku FeviKwiku, aby sa kúsky spojili. Postupne spájajte jednotlivé kúsky podľa obrázka.
4) Po spojení všetkých kusov bude tento stroj na triedenie farieb vyzerať asi takto:
Farebný senzor TCS3200
TCS3200 je farebný senzor, ktorý dokáže správne programovať a detekovať ľubovoľný počet farieb. TCS3200 obsahuje polia RGB (červená zelená modrá). Ako je znázornené na obrázku na mikroskopickej úrovni, na snímači je vidieť štvorcové štvorčeky vo vnútri oka. Tieto štvorcové políčka sú poľami RGB matice. Každé z týchto boxov obsahuje tri senzory, jeden slúži na snímanie ČERVENEJ intenzity svetla, jeden slúži na snímanie ZELENEJ intenzity svetla a posledný na snímanie intenzity MODRÉHO svetla.
Každé zo skupín snímačov v týchto troch poliach sa vyberá osobitne v závislosti od požiadavky. Preto je známy ako programovateľný snímač. Modul môže byť vybavený na snímanie konkrétnej farby a na opustenie ostatných. Obsahuje filtre na tento účel výberu. Existuje štvrtý režim nazývaný „režim bez filtra“, v ktorom senzor detekuje biele svetlo.
Okruhový diagram radiča farieb Arduino
Schéma zapojenia tohto radiča farieb Arduino je jednoduchá a nevyžaduje veľa pripojení. Schéma je uvedená nižšie.
Toto je obvod, ktorý stojí za nastavením zariadenia na triedenie farieb:
Programovanie Arduino Uno na triedenie farebných guličiek
Programovanie Arduino UNO je veľmi jednoduché a vyžaduje jednoduchú logiku na zjednodušenie krokov pri triedení farieb. Na konci je uvedený kompletný program s ukážkovým videom.
Pretože sa používa servomotor, je servo knižnica nevyhnutnou súčasťou programu. Tu používame dva servomotory. Prvý servo bude pohybovať farebné guľôčky z východiskovej polohy do polohy detektora TCS3200 a potom sa presunúť do triediaceho pozíciu, kde bude lopta upustil. Po presunutí do polohy na triedenie druhé servo odhodí loptu pomocou svojho ramena na požadované farebné vedro. Pozrite sa na kompletnú prácu vo videu uvedený na konci.
Prvým krokom bude zahrnutie celej knižnice a definovanie servozmenených.
#include
Farebný snímač TCS3200 môže pracovať bez knižnice, pretože na určenie farby stačí iba frekvencia čítania z kolíka snímača. Takže stačí definovať čísla pinov TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequency = 0; int farba = 0;
Vyrobte výberové kolíky ako výstupné, pretože to spôsobí, že farebná fotodióda bude vysoká alebo nízka, a ako vstup vyberte výstupný kolík TCS3200. Kolík OUT poskytne frekvenciu. Na začiatku vyberte mierku frekvencie ako 20%.
pinMode (S0, VÝSTUP); pinMode (S1, VÝSTUP); pinMode (S2, VÝSTUP); pinMode (S3, VÝSTUP); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Servomotory sú pripojené na pin 9 a 10 v Arduine. Vyzdvihnutie servo, ktorý bude snímač farebné guľôčky je pripojený na kolík 9 a pokles servo, klesne farebné guľôčky podľa farby, je pripojený na Pin10.
pickServo.attach (9); dropServo.attach (10);
Spočiatku je servopohon nastavený do počiatočnej polohy, ktorá je v tomto prípade 115 stupňov. Môže sa to líšiť a podľa toho sa dá prispôsobiť. Motor sa po určitom oneskorení presunie do oblasti detektora a čaká na detekciu.
pickServo.write (115); oneskorenie (600); pre (int i = 115; i> 65; i--) { pickServo.write (i); oneskorenie (2); } oneskorenie (500);
TCS 3200 číta farbu a dáva frekvenciu od Out Pin.
color = detectColor (); oneskorenie (1 000);
V závislosti na detekovanej farbe sa spúšťací servomotor pohybuje s konkrétnym uhlom a klesá farebná guľa do príslušného poľa.
switch (color) { case 1: dropServo.write (50); prestávka; prípad 2: dropServo.write (80); prestávka; prípad 3: dropServo.write (110); prestávka; prípad 4: dropServo.write (140); prestávka; prípad 5: dropServo.write (170); prestávka; prípad 0: zlom; } oneskorenie (500);
Servomotor sa vráti do východiskovej polohy pre ďalšiu guľu, ktorú si bude musieť vyzdvihnúť.
pre (int i = 65; i> 29; i--) { pickServo.write (i); oneskorenie (2); } oneskorenie (300); pre (int i = 29; i <115; i ++) { pickServo.write (i); oneskorenie (2); }
Funkcia detectColor () sa používa na meranie frekvencie a porovnáva farebnú frekvenciu, aby sa dosiahol záver farby. Výsledok sa vytlačí na sériový monitor. Potom vráti hodnotu farby pre prípady na presunutie uhla poklesu servomotora.
int detectColor () {
Zápis do S2 a S3 (LOW, LOW) aktivuje červené fotodiódy, aby sa dosiahli hodnoty hustoty červenej farby.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); frekvencia = pulseIn (sensorOut, LOW); int R = frekvencia; Serial.print ("Červená ="); Serial.print (frequency); // tlač ČERVENEJ farebnej frekvencie Serial.print (""); oneskorenie (50);
Zápis na S2 a S3 (LOW, HIGH) aktivuje modré fotodiódy, aby sa získali hodnoty pre hustotu modrej farby.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); frekvencia = pulseIn (sensorOut, LOW); int B = frekvencia; Serial.print ("Modrá ="); Serial.print (frekvencia); Serial.println ("");
Zápis na S2 a S3 (VYSOKÁ, VYSOKÁ) aktivuje zelené fotodiódy, aby sa získali hodnoty zelenej hustoty farieb.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Čítanie frekvencie výstupnej frekvencie = pulseIn (sensorOut, LOW); int G = frekvencia; Serial.print ("Zelená ="); Serial.print (frekvencia); Serial.print (""); oneskorenie (50);
Potom sa hodnoty porovnajú, aby sa urobilo rozhodnutie o farbe. Hodnoty sa líšia pre rôzne experimentálne nastavenia, pretože detekčná vzdialenosť sa pri nastavovaní líši pre všetkých.
if (R <22 & R> 20 & G <29 & G> 27) { color = 1; // Red Serial.print ("Detected Color is ="); Serial.println ("ČERVENÉ"); } if (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Orange Serial.println ("Orange"); } if (R <21 & R> 20 & G <28 & G> 25) { color = 3; // Green Serial.print ("Detected Color is ="); Serial.println ("ZELENÁ"); } if (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Yellow Serial.print ("Detected Color is ="); Serial.println ("ŽLTÉ"); } if (G <29 & G> 27 & B <22 a B> 19) { farba = 5; // Blue Serial.print ("Detected Color is ="); Serial.println ("MODRY"); } návratová farba; }
Týmto je stroj na triedenie farieb dokončený pomocou TCS3200 a Arduino UNO. Môžete ho tiež naprogramovať tak, aby v prípade potreby detekoval viac farieb. Ak máte pochybnosti alebo návrhy, napíšte na naše fórum alebo komentár nižšie. Skontrolujte tiež video uvedené nižšie.