- Komponente potrebne
- Kako izraditi šasiju za robotsku ruku za sortiranje boja
- TCS3200 senzor u boji
- Dijagram kruga razvrstavanja u boji Arduino
- Programiranje Arduino Uno za sortiranje šarenih kuglica
Kao što i samo ime govori, sortiranje boja jednostavno je razvrstavanje stvari prema njihovoj boji. To se lako može učiniti ako se vidi, ali kad ima previše stvari za sortiranje i to je ponavljajući zadatak, tada su vrlo korisni strojevi za automatsko sortiranje boja. Ovi strojevi imaju senzor u boji za prepoznavanje boje bilo kojih predmeta i nakon otkrivanja servo motora u boji zgrabite stvar i stavite je u odgovarajuću kutiju. Mogu se koristiti u različitim područjima primjene gdje su važne identifikacija boja, razlikovanje boja i sortiranje boja. Neka od područja primjene uključuju poljoprivrednu industriju (sortiranje žitarica na osnovi boje), prehrambenu industriju, industriju dijamanata i rudarstva, recikliranje itd. Primjene nisu ograničene na to i mogu se dalje primijeniti na različite industrije.
Najpopularniji senzor za otkrivanje boja je TCS3200 senzor u boji. Prije smo koristili TCS3200 senzor s Arduinom da bismo dobili RGB komponentu (crvenu, zelenu, plavu) bilo koje boje, a također smo je povezali s Raspberry Pi za otkrivanje boje bilo kojeg predmeta.
Ovdje ćemo u ovom tutorialu napraviti stroj za sortiranje boja pomoću senzora u boji TCS3200, nekih servo motora i Arduino ploče. Ovaj vodič uključuje sortiranje kuglica u boji i čuvanje u odgovarajućem okviru s bojama. Kutija će biti u fiksnom položaju, a servo motor će se koristiti za pomicanje kazaljke za sortiranje kako bi se lopta zadržala u odgovarajućoj kutiji.
Komponente potrebne
- Arduino UNO
- TCS3200 senzor u boji
- Servo motori
- Skakači
- Breadboard
Kako izraditi šasiju za robotsku ruku za sortiranje boja
Za kompletnu postavku, uključujući šasiju, ruku, valjak, podlogu, koristili smo bijelu sunčanicu debljine 2 mm. Lako je dostupan u stacionarnim trgovinama. Rezačem papira smo izrezali Sunboard Sheet i FlexKwik ili FeviKwik za spajanje različitih dijelova.
Ispod je nekoliko koraka za izradu kraka za sortiranje boja:
1) Uzmite Sunboard Sheet.

2) Izrežite list sunčanice na komade nakon što ste izmjerili sve strane skalom i markerom kao što je prikazano na slici.



3) Sada držite dva komada sunčane ploče zajedno i na nju nalijte kap FeviKwika da sjedne dijelove. Nastavite spajati dijelove slijedeći sliku.

4) Nakon spajanja svih dijelova, ovaj stroj za sortiranje boja izgledat će otprilike ovako:

TCS3200 senzor u boji

TCS3200 je senzor u boji koji može ispravnim programiranjem otkriti bilo koji broj boja. TCS3200 sadrži RGB (crveno zeleno plave) nizove. Kao što je prikazano na slici na mikroskopskoj razini, na senzoru se mogu vidjeti četvrtaste kutije unutar oka. Ovi su kvadratni okviri nizovi RGB matrice. Svaka od ovih kutija sadrži tri senzora, jedan je za osjetljivost CRVENOG intenziteta svjetlosti, jedan za osjetljivost ZELENOG intenziteta svjetlosti, a posljednji za osjetljivost PLAVE svjetlosti.

Svaki od niza senzora u ova tri niza odabire se zasebno, ovisno o zahtjevu. Stoga je poznat kao programabilni senzor. Modul se može prikazati tako da osjeti određenu boju i napusti ostale. Sadrži filtre za tu svrhu odabira. Postoji četvrti način rada koji se naziva 'način rada bez filtra' u kojem senzor otkriva bijelu svjetlost.
Dijagram kruga razvrstavanja u boji Arduino
Shemu spojeva za ovaj Arduino razvrstavač boja prilično je jednostavno izraditi i ne zahtijeva puno veza. Shema je dana u nastavku.

Ovo je sklop iza postavljanja stroja za sortiranje boja:

Programiranje Arduino Uno za sortiranje šarenih kuglica
Programiranje Arduina UNO prilično je jednostavno i zahtijeva jednostavnu logiku kako bi se pojednostavili koraci u sortiranju boja. Kompletni program s demonstracijskim video zapisom dat je na kraju.
Budući da se koristi servo motor, tako je i servo biblioteka važan dio programa. Ovdje koristimo dva servo motora. Prvi Servo će se kretati u boji loptice od početnog položaja do TCS3200 detektora položaja, a zatim premjestiti na razvrstavanje poziciji gdje je lopta će biti odbačene. Nakon što se premjesti u položaj za sortiranje, drugi će servo spustiti loptu koristeći ruku u kantu željene boje. Pogledajte kompletan rad u videu koji je dat na kraju.
Prvi korak bit će uključivanje svih knjižnica i definiranje servo varijabli.
#include
TCS3200 senzor u boji može raditi bez biblioteke jer je za određivanje boje potrebna samo frekvencija čitanja s pin-a senzora. Dakle, samo definirajte brojeve pinova TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define senzorOut 8 int frekvencija = 0; int boja = 0;
Odaberite odabrane igle kao izlazne, jer će to fotodiodu u boji učiniti visokom ili niskom, a izlazni klin TCS3200 uzeti će kao ulaz. Priključak OUT pružit će frekvenciju. U početku odaberite skaliranje frekvencije kao 20%.
pinMode (S0, IZLAZ); pinMode (S1, IZLAZ); pinMode (S2, IZLAZ); pinMode (S3, IZLAZ); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Servo motori su povezani na Pin 9 i 10 Arduina. Podizanje servo, koji će podizača kuglice boji povezan na zatik 9, a pad servo koje će pasti kugle boji prema boji je priključen na Pin10.
pickServo.attach (9); dropServo.attach (10);
U početku je servo motor prekidača postavljen u početni položaj koji je u ovom slučaju 115 stupnjeva. Može se razlikovati i može se prilagoditi u skladu s tim. Motor se nakon određenog kašnjenja pomiče u područje detektora i čeka otkrivanje.
pickServo.write (115); kašnjenje (600); za (int i = 115; i> 65; i--) { pickServo.write (i); kašnjenje (2); } kašnjenje (500);
TCS 3200, navodi se u boju i daje frekvenciju od Out Pin.
boja = detektColor (); kašnjenje (1000);
Ovisno o otkrivenoj boji, servo motor s padom pomiče se s određenim kutom i spušta kuglu u boji u svoju kutiju.
prekidač (boja) { slučaj 1: dropServo.write (50); pauza; slučaj 2: dropServo.write (80); pauza; slučaj 3: dropServo.write (110); pauza; slučaj 4: dropServo.write (140); pauza; slučaj 5: dropServo.write (170); pauza; slučaj 0: prekid; } kašnjenje (500);
Servo motor se vraća u početni položaj za odabir sljedeće kuglice.
za (int i = 65; i> 29; i--) { pickServo.write (i); kašnjenje (2); } kašnjenje (300); za (int i = 29; i <115; i ++) { pickServo.write (i); kašnjenje (2); }
Funkcija detektColor () koristi se za mjerenje frekvencije i uspoređuje frekvenciju boje da bi se zaključio boja. Rezultat se ispisuje na serijskom monitoru. Zatim vraća vrijednost boje za kućišta za pomicanje kuta servo motora.
int identifyColor () {
Pisanje na S2 i S3 (LOW, LOW) aktivira crvene fotodiode kako bi očitalo gustoću crvene boje.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); frekvencija = pulseIn (sensorOut, LOW); int R = frekvencija; Serial.print ("Crvena ="); Serial.print (frekvencija); // ispis CRVENE frekvencije boja Serial.print (""); kašnjenje (50);
Zapisivanje na S2 i S3 (LOW, HIGH) aktivira plave fotodiode kako bi očitalo gustoću plave boje.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); frekvencija = pulseIn (sensorOut, LOW); int B = frekvencija; Serial.print ("Blue ="); Serial.print (frekvencija); Serial.println ("");
Zapisivanje na S2 i S3 (HIGH, HIGH) aktivira zelene fotodiode kako bi očitalo očitavanje gustoće zelene boje.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Očitavanje frekvencije izlazne frekvencije = pulseIn (sensorOut, LOW); int G = frekvencija; Serial.print ("Green ="); Serial.print (frekvencija); Serial.print (""); kašnjenje (50);
Zatim se vrijednosti uspoređuju kako bi se donijela odluka o boji. Očitavanja su različita za različita eksperimentalna podešavanja, jer udaljenost otkrivanja varira za sve prilikom postavljanja.
ako (R <22 & R> 20 & G <29 & G> 27) { color = 1; // Crveni serijski.print ("Otkrivena boja je ="); Serial.println ("CRVENA"); } 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 ("Otkrivena boja je ="); Serial.println ("ZELENA"); } if (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Žuti serijski.tisak ("Otkrivena boja je ="); Serial.println ("ŽUTO"); } if (G <29 & G> 27 & B <22 & B> 19) { boja = 5; // Blue Serial.print ("Otkrivena boja je ="); Serial.println ("PLAVO"); } povratna boja; }

Time je dovršen stroj za sortiranje boja pomoću TCS3200 i Arduino UNO. Možete ga programirati i tako da otkriva više boja ako je potrebno. Ako sumnjate ili imate prijedlog, pišite na naš forum ili komentirajte u nastavku. Također pogledajte video dolje dani.

