- Potrebne komponente
- Kako narediti šasijo za robotsko roko za sortiranje barv
- TCS3200 barvni senzor
- Diagram barvnega sortirnika Arduino
- Programiranje Arduino Uno za razvrščanje pisanih kroglic
Kot že ime pove, je razvrščanje barv preprosto razvrščanje stvari glede na njihovo barvo. To lahko enostavno naredite tako, da ga vidite, toda kadar je preveč stvari mogoče razvrstiti in je to ponavljajoča se naloga, so avtomatski stroji za razvrščanje barv zelo koristni. Ti stroji imajo barvni senzor za zaznavanje barve vseh predmetov in po zaznavanju barvnega servo motorja stvar primejo in jo dajo v ustrezno škatlo. Uporabljajo se lahko na različnih področjih uporabe, kjer je pomembna identifikacija barv, razločevanje barv in razvrščanje barv. Nekatera področja uporabe vključujejo kmetijsko industrijo (sortiranje zrn na osnovi barve), živilsko industrijo, diamantno in rudarsko industrijo, recikliranje itd. Aplikacije niso omejene na to in se lahko nadalje uporabljajo v različnih panogah.
Najbolj priljubljen senzor za zaznavanje barv je barvni senzor TCS3200. Pred tem smo s senzorjem TCS3200 z Arduinom dobili RGB komponento (rdečo, zeleno, modro) katere koli barve in jo povezali tudi z Raspberry Pi za zaznavanje barve katerega koli predmeta.
V tej vadnici bomo izdelali stroj za sortiranje barv z uporabo barvnega senzorja TCS3200, nekaj servo motorjev in plošče Arduino. Ta vadnica bo vključevala razvrščanje barvnih kroglic in njihovo shranjevanje v ustreznem barvnem polju. Škatla bo v fiksnem položaju, servo motor pa bo uporabljen za premikanje sortirne roke, da bo žogo zadrževal v ustrezni škatli.
Potrebne komponente
- Arduino UNO
- TCS3200 barvni senzor
- Servo motorji
- Skakalci
- Breadboard
Kako narediti šasijo za robotsko roko za sortiranje barv
Za popolno nastavitev, vključno s šasijo, roko, valjem, blazinico, smo uporabili belo sončno desko debeline 2 mm. Lahko je na voljo v nepremičnih trgovinah. Za rezanje plošč Sunboard in FlexKwik ali FeviKwik smo uporabili rezalnik papirja za spajanje različnih delov.
Spodaj je nekaj korakov za izdelavo roke za razvrščanje barv:
1) Vzemite ploščo za sončne deske.
2) List sončne deske razrežite na koščke po merjenju vseh strani s skalo in markerjem, kot je prikazano na sliki.
3) Zdaj držite oba kosa sončne deske skupaj in nanjo nalijte kapljico FeviKwika, da koščke zlepite skupaj. Nadaljujte z združevanjem kosov, tako da sledite sliki.
4) Po združitvi vseh kosov bo ta stroj za razvrščanje barv izgledal nekako takole:
TCS3200 barvni senzor
TCS3200 je barvni senzor, ki lahko s pravim programiranjem zazna poljubno število barv. TCS3200 vsebuje matrike RGB (rdeče zeleno modra). Kot je prikazano na sliki na mikroskopski ravni, lahko na senzorju vidimo kvadratne škatle v očesu. Ta kvadratna polja so nizi matrike RGB. Vsako od teh polj vsebuje tri senzorje, eden je za zaznavanje RDEČE intenzitete svetlobe, eden za zaznavanje ZELENE intenzivnosti svetlobe in zadnji za zaznavanje MODRE moči svetlobe.
Vsak od senzorskih nizov v teh treh nizih je izbran ločeno, odvisno od zahteve. Zato je znan kot programabilni senzor. Modul je lahko opremljen tako, da zazna določeno barvo in zapusti ostale. Vsebuje filtre za ta izbirni namen. Obstaja četrti način, imenovan „način brez filtra“, v katerem senzor zazna belo svetlobo.
Diagram barvnega sortirnika Arduino
Shemo vezja za ta razvrščevalnik barv Arduino je precej enostavno narediti in ne zahteva veliko povezav. Shema je podana spodaj.
To je vezje za namestitev stroja za razvrščanje barv:
Programiranje Arduino Uno za razvrščanje pisanih kroglic
Programiranje Arduino UNO je precej preprosto in zahteva preprosto logiko za poenostavitev korakov pri razvrščanju barv. Na koncu je podan celoten program z demonstracijskim videom.
Ker se uporablja servo motor, je servo knjižnica bistveni del programa. Tu uporabljamo dva servo motorja. Prvi servo bo premakniti barvne kroglice iz začetnega položaja do detektorja položaj TCS3200 in nato premakne na sortiranje položaj, v katerem se bo žoga padla. Po premiku v položaj za razvrščanje bo drugi servo žogo s svojo roko spustil v želeno barvno vedro. Oglejte si celotno delo v videoposnetku na koncu.
Prvi korak bo vključitev celotne knjižnice in definiranje servo spremenljivk.
#include
Barvni senzor TCS3200 lahko deluje brez knjižnice, saj je za določanje barve potrebna le frekvenca branja s čepa senzorja. Torej samo določite številke pinov TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frekvenca = 0; int barva = 0;
Naredite izberite zatiči kot izhod saj bo to barva fotodioda visoko ali nizko, in bi izhodni pin TCS3200 kot vhod. Zatič OUT zagotavlja frekvenco. Najprej izberite frekvenčno skaliranje kot 20%.
pinMode (S0, IZHOD); pinMode (S1, IZHOD); pinMode (S2, IZHOD); pinMode (S3, IZHOD); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Servo motorji so povezani na Pin 9 in 10 Arduino. Pickup servo ki Pickup barvne kroglice je priključen na pin 9 in spusti servo ki bo zmanjšalo barvne kroglice po barvi je priključen na Pin10.
pickServo.attach (9); dropServo.attach (10);
Sprva je servo motor pick nastavljen v začetni položaj, ki je v tem primeru 115 stopinj. Lahko se razlikuje in ga lahko ustrezno prilagodite. Motor se po nekaj zakasnitvi premakne v območje detektorja in počaka na zaznavanje.
pickServo.write (115); zamuda (600); za (int i = 115; i> 65; i-- ) { pickServo.write (i); zamuda (2); } zamuda (500);
TCS 3200 bere barvo in daje frekvenco iz Out Pin.
barva = zaznajColor (); zamuda (1000);
Odvisno od zaznane barve se servo motor spusti s posebnim kotom in barvno kroglo spusti na svoje polje.
stikalo (barva) { primer 1: dropServo.write (50); odmor; 2. primer: dropServo.write (80); odmor; primer 3: dropServo.write (110); odmor; primer 4: dropServo.write (140); odmor; primer 5: dropServo.write (170); odmor; primer 0: odmor; } zamuda (500);
Servo motor se vrne v začetni položaj za izbiro naslednje kroglice.
for (int i = 65; i> 29; i-- ) { pickServo.write (i); zamuda (2); } zamuda (300); for (int i = 29; i <115; i ++) { pickServo.write (i); zamuda (2); }
Funkcija detectColor () se uporablja za merjenje frekvence in primerja barvno frekvenco za zaključek barve. Rezultat je natisnjen na serijskem monitorju. Nato vrne barvno vrednost za ohišja za premikanje kota servo motorja.
int zaznavanjeColor () {
Pisanje na S2 in S3 (LOW, LOW) aktivira rdeče fotodiode, da odčita odčitke za gostoto rdeče barve.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); frekvenca = pulseIn (sensorOut, LOW); int R = frekvenca; Serial.print ("Rdeča ="); Serial.print (frekvenca); // tiskanje RDEČE barvne frekvence Serial.print (""); zamuda (50);
Pisanje v S2 in S3 (LOW, HIGH) aktivira modre fotodiode, da odčita odčitke za gostoto modre barve.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); frekvenca = pulseIn (sensorOut, LOW); int B = frekvenca; Serial.print ("Blue ="); Serial.print (frekvenca); Serial.println ("");
Pisanje na S2 in S3 (HIGH, HIGH) aktivira zelene fotodiode, da odčita odčitke za gostoto zelene barve.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // branje frekvence izhodne frekvence = pulseIn (sensorOut, LOW); int G = frekvenca; Serial.print ("Green ="); Serial.print (frekvenca); Serial.print (""); zamuda (50);
Nato se vrednosti primerjajo za odločitev o barvi. Odčitki se pri različnih poskusnih nastavitvah razlikujejo, saj se razdalja zaznavanja pri nastavitvi razlikuje za vse.
če (R <22 & R> 20 & G <29 & G> 27) { color = 1; // Red Serial.print ("Zaznana barva je ="); Serial.println ("RDEČA"); } if (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Orange Serial.println ("Orange"); } če (R <21 & R> 20 & G <28 & G> 25) { color = 3; // Green Serial.print ("Zaznana barva je ="); Serial.println ("ZELENA"); } če (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Yellow Serial.print ("Zaznana barva je ="); Serial.println ("RUMENA"); } if (G <29 & G> 27 & B <22 & B> 19) { barva = 5; // Blue Serial.print ("Zaznana barva je ="); Serial.println ("MODRA"); } vrnitev barve; }
S tem je stroj za sortiranje barv končan z uporabo TCS3200 in Arduino UNO. Po potrebi ga lahko tudi programirate tako, da zazna več barv. Če dvomite ali imate kakšen predlog, pišite na naš forum ali komentirajte spodaj. Oglejte si tudi spodnji video.