- Nepieciešamās sastāvdaļas
- Kā izgatavot šasiju krāsu šķirošanas robotu rokai
- TCS3200 krāsu sensors
- Arduino krāsu šķirotāju shēma
- Arduino Uno programmēšana krāsainu bumbiņu šķirošanai
Kā norāda nosaukums, krāsu šķirošana ir vienkārši lietu šķirošana pēc to krāsas. To var viegli izdarīt, to redzot, bet, ja ir pārāk daudz lietu, kas jāšķiro, un tas ir atkārtots uzdevums, tad automātiskās krāsu šķirošanas mašīnas ir ļoti noderīgas. Šīm mašīnām ir krāsu sensors, lai uztvertu visu priekšmetu krāsu, un pēc krāsu servo motora noteikšanas paņemiet lietu un ievietojiet to attiecīgajā kastē. Tos var izmantot dažādās pielietojuma jomās, kur ir svarīga krāsu identifikācija, krāsu atšķirība un krāsu šķirošana. Dažas no lietojuma jomām ietver lauksaimniecības nozari (graudu šķirošana pēc krāsas), pārtikas rūpniecību, dimantu un kalnrūpniecības nozari, otrreizēju pārstrādi utt. Lietojumi neaprobežojas tikai ar to, un tos var tālāk izmantot dažādās nozarēs.
Vispopulārākais sensors krāsu noteikšanai ir TCS3200 krāsu sensors. Iepriekš mēs izmantojām TCS3200 sensoru ar Arduino, lai iegūtu jebkuras krāsas RGB komponentu (sarkanu, zaļu, zilu), kā arī sasaistījām to ar Raspberry Pi jebkura objekta krāsas noteikšanai.
Šeit šajā apmācībā mēs izgatavosim krāsu šķirošanas mašīnu, izmantojot krāsu sensoru TCS3200, dažus servomotorus un Arduino dēli. Šajā apmācībā tiks iekrāsotas krāsainas bumbiņas un saglabātas tās attiecīgajā krāsu lodziņā. Kaste būs fiksētā stāvoklī, un servomotors tiks izmantots, lai pārvietotu šķirotāja roku, lai bumba turētos attiecīgajā kastē.
Nepieciešamās sastāvdaļas
- Arduino UNO
- TCS3200 krāsu sensors
- Servo Motors
- Džemperi
- Maizes dēlis
Kā izgatavot šasiju krāsu šķirošanas robotu rokai
Lai veiktu pilnīgu uzstādīšanu, ieskaitot šasiju, sviru, veltni, spilventiņu, mēs esam izmantojuši 2 mm biezu balto Sunboard. Tas ir viegli pieejams stacionārajos veikalos. Mēs esam izmantojuši papīra griezēju, lai sagrieztu Sunboard Sheet, un FlexKwik vai FeviKwik dažādu detaļu savienošanai.
Tālāk ir sniegti daži soļi, lai izveidotu krāsu šķirošanas roku:
1) Paņemiet Sunboard Sheet.
2) Pēc visu izmērīšanas ar skalu un marķieri, kā parādīts attēlā, sagrieziet sauļošanās palagu gabalos.
3) Tagad turiet abus sauļošanās dēļus kopā un uzlieciet uz tā pilienu FeviKwik, lai salīmētu gabalus kopā. Turpiniet savienot gabalus, sekojot attēlam.
4) Pēc visu gabalu apvienošanas šī krāsu šķirošanas mašīna izskatīsies apmēram šādi:
TCS3200 krāsu sensors
TCS3200 ir krāsu sensors, kas ar pareizu programmēšanu var noteikt jebkuru krāsu skaitu. TCS3200 satur RGB (sarkani zaļi zili) blokus. Kā parādīts attēlā mikroskopiskā līmenī, uz sensora var redzēt kvadrātveida lodziņus acs iekšpusē. Šīs kvadrātveida rūtiņas ir RGB matricas masīvi. Katrā no šīm kastēm ir trīs sensori: Viens ir paredzēts SARKANAS gaismas intensitātes noteikšanai, Viens - ZAĻAS gaismas intensitātes noteikšanai, bet pēdējais - ZILAS gaismas intensitātes noteikšanai.
Katrs sensoru bloks šajos trīs blokos tiek izvēlēts atsevišķi atkarībā no prasības. Tāpēc tas ir pazīstams kā programmējams sensors. Moduli var attēlot, lai sajustu konkrēto krāsu un atstātu pārējos. Tajā ir filtri šim atlases mērķim. Ir ceturtais režīms, ko sauc par “ bez filtra režīmu”, kurā sensors nosaka balto gaismu.
Arduino krāsu šķirotāju shēma
Šī Arduino krāsu šķirotāja shēmas shēma ir diezgan viegli izveidojama, un tai nav nepieciešami īpaši savienojumi. Shēma ir dota zemāk.
Šī ir krāsu šķirošanas iekārtas iestatīšanas shēma:
Arduino Uno programmēšana krāsainu bumbiņu šķirošanai
Arduino UNO programmēšana ir diezgan vienkārša un prasa vienkāršu loģiku, lai vienkāršotu krāsu šķirošanas darbības. Pabeigta programma ar demonstrācijas video.
Tā kā tiek izmantots servomotors, servo bibliotēka ir būtiska programmas sastāvdaļa. Šeit mēs izmantojam divus servomotorus. Pirmais servo būs pārvietot krāsainās bumbiņas no sākotnējās pozīcijas līdz TCS3200 detektora stāvoklī un pēc tam pāriet uz šķirošanas vietu, kur bumbu būs samazinājies. Pēc pārvietošanās šķirošanas pozīcijā otrais servo, izmantojot roku, nomet bumbu vajadzīgajā krāsu kausā. Visu darbu skatiet videoklipā, kas sniegts beigās.
Pirmais solis būs visa bibliotēkas iekļaušana un servo mainīgo definēšana.
# iekļaut
Krāsu sensors TCS3200 var darboties bez bibliotēkas, jo krāsas noteikšanai ir nepieciešama tikai sensora tapas nolasīšanas frekvence. Tāpēc vienkārši definējiet TCS3200 PIN numurus.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequency = 0; int krāsa = 0;
Padarīt izvēlieties adatas, kā izejas, jo tas padarīs krāsu fotodiode augsts vai zems, un veikt Out pin TCS3200 kā priekšnodokli. OUT tapa nodrošinās frekvenci. Sākotnēji atlasiet frekvences mērogošanu kā 20%.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Servomotori ir savienoti Arduino 9. un 10. tapā. Pikaps servo kas sagaidīšana krāsu bumbiņas ir pieslēgts pie Pin 9 un kritums servo kas piliens krāsu bumbiņas saskaņā ar krāsu ir pieslēgta pie Pin10.
pickServo.attach (9); dropServo.attach (10);
Sākumā izvēles servomotors ir iestatīts sākotnējā stāvoklī, kas šajā gadījumā ir 115 grādi. Tas var atšķirties un to var attiecīgi pielāgot. Motors pēc nelielas kavēšanās pārvietojas uz detektora reģionu un gaida noteikšanu.
pickServo.write (115); kavēšanās (600); par (int i = 115; i> 65; i--) { pickServo.write (i); kavēšanās (2); } kavēšanās (500);
TCS 3200 nolasa krāsu un dod frekvenci no Out Pin.
krāsa = detektētKrāsa (); kavēšanās (1000);
Atkarībā no atklātās krāsas pilināmā servomotors pārvietojas ar noteiktu leņķi un nomet krāsu lodi attiecīgajā lodziņā.
slēdzis (krāsa) { gadījums 1: dropServo.write (50); pārtraukums; 2. gadījums: dropServo.write (80); pārtraukums; 3. gadījums: dropServo.write (110); pārtraukums; 4. gadījums: dropServo.write (140); pārtraukums; 5. gadījums: dropServo.write (170); pārtraukums; gadījums 0: pārtraukums; } kavēšanās (500);
Servo motors atgriežas sākotnējā stāvoklī, lai izvēlētos nākamo bumbu.
par (int i = 65; i> 29; i--) { pickServo.write (i); kavēšanās (2); } kavēšanās (300); par (int i = 29; i <115; i ++) { pickServo.write (i); kavēšanās (2); }
Funkcija DetectColor () tiek izmantota, lai izmērītu frekvenci, un salīdzina krāsu biežumu, lai izdarītu krāsu secinājumu. Rezultāts tiek izdrukāts uz sērijveida monitora. Tad tas atgriež krāsu vērtību gadījumiem, lai pārvietotu servo motora leņķi.
int discoverColor () {
Rakstīšana uz S2 un S3 (LOW, LOW) aktivizē sarkanās fotodiodes, lai iegūtu sarkanās krāsas blīvuma rādījumus.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); frekvence = pulseIn (sensorOut, LOW); int R = frekvence; Sērijas.druka ("sarkans ="); Serial.print (frekvence); // RED krāsu frekvences drukāšana Serial.print (""); kavēšanās (50);
Rakstīšana uz S2 un S3 (LOW, HIGH) aktivizē zilās fotodiodes, lai ņemtu zilās krāsas blīvuma rādījumus.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); frekvence = pulseIn (sensorOut, LOW); int B = frekvence; Sērijas.druka ("Zils ="); Serial.print (biežums); Serial.println ("");
Rakstīšana uz S2 un S3 (HIGH, HIGH) aktivizē zaļās fotodiodes, lai iegūtu zaļās krāsas blīvuma rādījumus.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Izejas frekvences frekvences nolasīšana = pulseIn (sensorOut, LOW); int G = frekvence; Sērijas.druka ("Zaļā ="); Serial.print (biežums); Sērijas.druka (""); kavēšanās (50);
Pēc tam vērtības tiek salīdzinātas, lai pieņemtu krāsu lēmumu. Dažādās eksperimentālās iestatījumos rādījumi ir atšķirīgi, jo, veicot iestatīšanu, noteikšanas attālums katram ir atšķirīgs.
ja (R <22 & R> 20 & G <29 & G> 27) { krāsa = 1; // Red Serial.print ("Noteiktā krāsa ir ="); Serial.println ("RED"); } ja (G <25 & G> 22 & B <22 & B> 19) { krāsa = 2; // Orange Serial.println ("Apelsīns"); } ja (R <21 & R> 20 & G <28 & G> 25) { krāsa = 3; // Green Serial.print ("Noteiktā krāsa ir ="); Serial.println ("ZAĻĀ"); } ja (R <38 & R> 24 & G <44 & G> 30) { krāsa = 4; // Yellow Serial.print ("Noteiktā krāsa ir ="); Serial.println ("DZELTENS"); } ja (G <29 un G> 27 un B <22 un B> 19) { krāsa = 5; // Blue Serial.print ("Noteiktā krāsa ir ="); Serial.println ("ZILA"); } atgriešanās krāsa; }
Tādējādi krāsu šķirošanas mašīna tiek pabeigta, izmantojot TCS3200 un Arduino UNO. Ja nepieciešams, varat to arī ieprogrammēt, lai noteiktu vairāk krāsu. Ja jums ir šaubas vai ir kādi ieteikumi, rakstiet mūsu forumam vai komentāru zemāk. Pārbaudiet arī tālāk sniegto video.