- Požadované komponenty
- Jak vyrobit podvozek pro robotické rameno pro třídění barev
- Barevný senzor TCS3200
- Schéma zapojení řadiče barev Arduino
- Programování Arduino Uno pro třídění barevných koulí
Jak název napovídá, třídění barev je jednoduše třídění věcí podle jejich barvy. Lze to snadno udělat viděním, ale když je příliš mnoho věcí na třídění a je to opakující se úkol, pak jsou velmi užitečné automatické stroje na třídění barev. Tyto stroje mají barevný senzor pro snímání barvy jakýchkoli předmětů a po detekci barevného servomotoru věc uchopí a vloží do příslušné krabice. Mohou být použity v různých aplikačních oblastech, kde je důležitá barevná identifikace, barevné rozlišení a třídění barev. Některé oblasti použití zahrnují zemědělský průmysl (třídění zrna na základě barev), potravinářský průmysl, diamantový a těžební průmysl, recyklace atd. Aplikace se na to neomezují a lze je dále aplikovat na různá průmyslová odvětví.
Nejoblíbenějším snímačem pro detekci barev je barevný snímač TCS3200. Dříve jsme použili senzor TCS3200 s Arduinem k získání komponenty RGB (červená, zelená, modrá) jakékoli barvy a také jsme ji propojili s Raspberry Pi pro detekci barvy jakéhokoli objektu.
Zde v tomto výukovém programu vyrobíme stroj na třídění barev pomocí barevného senzoru TCS3200, několika servomotorů a desky Arduino. Tento výukový program bude zahrnovat třídění barevných kuliček a jejich uchovávání v příslušném barevném poli. Krabice bude ve pevné poloze a pomocí servomotoru se bude pohybovat rukou třídiče, aby se míč udržel v příslušné krabici.
Požadované komponenty
- Arduino UNO
- Barevný senzor TCS3200
- Servomotory
- Svetry
- Nepájivá deska
Jak vyrobit podvozek pro robotické rameno pro třídění barev
Pro kompletní nastavení včetně podvozku, ramene, válečku, podložky jsme použili bílý Sunboard o tloušťce 2 mm. Je snadno dostupný ve stacionárních obchodech. K řezání listů Sunboard Sheet a FlexKwik nebo FeviKwik pro spojování různých částí jsme použili řezačku papíru.
Níže je uvedeno několik kroků k vytvoření ramene pro třídění barev:
1) Vezměte list Sunboard.
2) Po proměření všech stran pomocí měřítka a značky, jak je znázorněno na obrázku, nakrájejte desku sunboardu na kousky.
3) Nyní držte dva kousky sunboardu dohromady a nalijte na ně kapku FeviKwik, aby se kousky slepily. Pokračujte ve spojování dílků podle obrázku.
4) Po spojení všech kusů dohromady bude tento stroj na třídění barev vypadat asi takto:
Barevný senzor TCS3200
TCS3200 je barevný senzor, který dokáže detekovat libovolný počet barev pomocí správného programování. TCS3200 obsahuje pole RGB (červená zelená modrá). Jak je znázorněno na obrázku na mikroskopické úrovni, je možné vidět čtvercové rámečky uvnitř oka na senzoru. Tato čtvercová pole jsou pole matice RGB. Každý z těchto boxů obsahuje tři senzory, jeden pro snímání ČERVENÉ intenzity světla, jeden pro snímání ZELENÉ intenzity světla a poslední pro snímání intenzity MODRÉHO světla.
Každé ze senzorových polí v těchto třech polích je vybráno samostatně v závislosti na požadavku. Proto je známý jako programovatelný senzor. Modul může být vybaven pro snímání konkrétní barvy a pro opuštění ostatních. Obsahuje filtry pro tento účel výběru. Existuje čtvrtý režim zvaný „režim bez filtru“, ve kterém senzor detekuje bílé světlo.
Schéma zapojení řadiče barev Arduino
Schéma zapojení tohoto Arduino Color Sorter je velmi snadné a nevyžaduje mnoho připojení. Schéma je uvedeno níže.
Toto je obvod za nastavením stroje na třídění barev:
Programování Arduino Uno pro třídění barevných koulí
Programování Arduino UNO je velmi jednoduché a vyžaduje jednoduchou logiku ke zjednodušení kroků při třídění barev. Na konci je uveden kompletní program s ukázkovým videem.
Protože se používá servomotor, je servo knihovna nezbytnou součástí programu. Zde používáme dva servomotory. První servo bude pohybovat barevné kuličky z výchozí polohy do polohy detektoru TCS3200 a pak se přesunout do třídicího pozici, kde bude míč upustil. Po přesunu do třídicí polohy druhé servo odhodí míč pomocí paže na požadovaný barevný kbelík. Podívejte se na kompletní práci ve videu uvedeném na konci.
Prvním krokem bude zahrnutí celé knihovny a definování servoměničů.
#zahrnout
Barevný snímač TCS3200 může pracovat bez knihovny, protože k určení barvy je potřeba pouze frekvence čtení z kolíku snímače. Stačí tedy definovat čísla pinů TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequency = 0; int barva = 0;
Proveďte výběr vývodů jako výstupu, protože to způsobí, že barevná fotodioda bude vysoká nebo nízká, a jako vstup použijte výstup Out TCS3200. Pin OUT poskytne frekvenci. Vyberte nejprve změnu měřítka frekvence na 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 jsou připojeny na Pin 9 a 10 Arduina. Vyzvednutí servo, který bude snímač barevné kuličky je připojen na kolík 9 a pokles servo, klesne barevné kuličky podle barvy, je připojen na Pin10.
pickServo.attach (9); dropServo.attach (10);
Zpočátku je servopohon nastaven do počáteční polohy, která je v tomto případě 115 stupňů. Může se lišit a lze jej podle toho přizpůsobit. Motor se po určité prodlevě přesune do oblasti detektoru a čeká na detekci.
pickServo.write (115); zpoždění (600); for (int i = 115; i> 65; i--) { pickServo.write (i); zpoždění (2); } zpoždění (500);
TCS 3200 čte barvu a dává frekvenci od Out Pin.
color = detectColor (); zpoždění (1000);
V závislosti na detekované barvě se poklesový servomotor pohybuje pod určitým úhlem a padá barevnou kouli do příslušné krabice.
switch (color) { case 1: dropServo.write (50); přestávka; případ 2: dropServo.write (80); přestávka; případ 3: dropServo.write (110); přestávka; případ 4: dropServo.write (140); přestávka; případ 5: dropServo.write (170); přestávka; případ 0: zlomit; } zpoždění (500);
Servomotor se vrací do výchozí polohy pro další míček, který si vybere.
for (int i = 65; i> 29; i--) { pickServo.write (i); zpoždění (2); } zpoždění (300); for (int i = 29; i <115; i ++) { pickServo.write (i); zpoždění (2); }
Funkce detectColor () se používá k měření frekvence a porovnává barevnou frekvenci, aby se dosáhlo závěru barvy. Výsledek se vytiskne na sériovém monitoru. Poté vrací hodnotu barvy pro případy, kdy se má pohybovat úhlem poklesu servomotoru.
int detectColor () {
Zápis na S2 a S3 (LOW, LOW) aktivuje červené fotodiody a odečítá hodnoty hustoty červené barvy.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); frekvence = pulseIn (sensorOut, LOW); int R = frekvence; Serial.print ("Červená ="); Serial.print (frequency); // tisk ČERVENÉ barevné frekvence Serial.print (""); zpoždění (50);
Zápis na S2 a S3 (NÍZKÝ, VYSOKÝ) aktivuje modré fotodiody, aby odečetly hodnoty hustoty modré barvy.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); frekvence = pulseIn (sensorOut, LOW); int B = frekvence; Serial.print ("Modrá ="); Sériový tisk (frekvence); Serial.println ("");
Zápis na S2 a S3 (VYSOKÝ, VYSOKÝ) aktivuje zelené fotodiody a odečítá hodnoty zelené hustoty barev.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Čtení výstupní frekvence frekvence = pulseIn (sensorOut, LOW); int G = frekvence; Serial.print ("Zelená ="); Sériový tisk (frekvence); Serial.print (""); zpoždění (50);
Poté jsou hodnoty porovnány, aby bylo možné rozhodnout o barvě. Odečty se u různých experimentálních nastavení liší, protože detekční vzdálenost se při nastavování liší u každého.
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 ("ŽLUTÁ"); } if (G <29 & G> 27 & B <22 & B> 19) { color = 5; // Blue Serial.print ("Detected Color is ="); Serial.println ("MODRÝ"); } návratová barva; }
Tím je stroj na třídění barev dokončen pomocí TCS3200 a Arduino UNO. Můžete jej také naprogramovat tak, aby v případě potřeby detekoval více barev. Máte-li jakékoli pochybnosti nebo návrhy, napište na naše fórum nebo do komentáře níže. Zkontrolujte také níže uvedené video.