- Componente necesare
- Cum se face șasiul pentru brațul robotizat de sortare a culorilor
- Senzor de culoare TCS3200
- Diagrama circuitului Arduino Color Sorter
- Programarea Arduino Uno pentru sortarea bilelor colorate
După cum sugerează și numele, sortarea culorilor este pur și simplu pentru a sorta lucrurile în funcție de culoarea lor. Se poate face cu ușurință vizualizându-l, dar atunci când există prea multe lucruri de sortat și este o sarcină repetitivă, atunci mașinile de sortare automată a culorilor sunt foarte utile. Aceste mașini au senzor de culoare pentru a detecta culoarea oricăror obiecte și după ce a detectat servomotorul de culoare, apucați lucrul și puneți-l în cutia respectivă. Ele pot fi utilizate în diferite domenii de aplicare în care identificarea culorilor, distincția culorii și sortarea culorilor sunt importante. Unele dintre domeniile de aplicare includ industria agricolă (sortarea cerealelor pe bază de culoare), industria alimentară, industria diamantelor și minelor, reciclarea etc. Aplicațiile nu se limitează la aceasta și pot fi aplicate în continuare la diferite industrii.
Cel mai popular senzor pentru detectarea culorilor este senzorul de culoare TCS3200. Am folosit anterior senzorul TCS3200 cu Arduino pentru a obține componenta RGB (roșu, verde, albastru) de orice culoare și, de asemenea, l-am interfațat cu Raspberry Pi pentru detectarea culorii oricărui obiect.
Aici, în acest tutorial, vom realiza o mașină de sortare a culorilor folosind un senzor de culoare TCS3200, câteva servomotoare și placa Arduino. Acest tutorial va include sortarea bilelor colorate și păstrarea lor în caseta de culoare relevantă. Cutia va fi în poziție fixă și servomotorul va fi folosit pentru a muta mâna sortatoare pentru a menține mingea în cutia relevantă.
Componente necesare
- Arduino UNO
- Senzor de culoare TCS3200
- Servomotoare
- Jumpers
- Breadboard
Cum se face șasiul pentru brațul robotizat de sortare a culorilor
Pentru realizarea configurării complete, inclusiv șasiu, braț, rolă, tampon, am folosit placa Sunboard albă de 2 mm grosime. Este ușor disponibil în magazinele staționare. Am folosit un tăietor de hârtie pentru tăierea colii Sunboard și FlexKwik sau FeviKwik pentru îmbinarea diferitelor părți.
Mai jos sunt câțiva pași pentru construirea brațului de sortare a culorilor:
1) Luați foaia Sunboard.
2) Tăiați foaia de plajă în bucăți după ce ați măsurat toate fețele cu scară și marcaj așa cum se arată în figură.
3) Acum țineți cele două bucăți de plajă împreună și turnați o picătură de FeviKwik pe ea pentru a lipi piesele împreună. Continuați să uniți piesele urmând figura.
4) După unirea tuturor pieselor împreună, această mașină de sortare a culorilor va arăta cam așa:
Senzor de culoare TCS3200
TCS3200 este un senzor de culoare care poate detecta orice număr de culori cu o programare corectă. TCS3200 conține tablouri RGB (Red Green Blue). După cum se arată în figura de la nivel microscopic, se pot vedea cutiile pătrate din interiorul ochiului senzorului. Aceste cutii pătrate sunt matrice de matrice RGB. Fiecare dintre aceste cutii conține trei senzori, unul pentru detectarea intensității luminii ROȘII, unul pentru detectarea intensității luminii VERZI și ultimul pentru detectarea intensității luminii ALBASTRU.
Fiecare dintre matricile senzorilor din aceste trei matrice sunt selectate separat, în funcție de cerință. Prin urmare, este cunoscut sub numele de senzor programabil. Modulul poate fi prezentat pentru a simți culoarea particulară și pentru a le părăsi pe celelalte. Conține filtre pentru acest scop de selecție. Există un al patrulea mod numit „ fără modul de filtrare” în care senzorul detectează lumina albă.
Diagrama circuitului Arduino Color Sorter
Diagrama circuitului pentru acest Arduino Color Sorter este destul de ușor de realizat și nu necesită prea multe conexiuni. Schema este prezentată mai jos.
Acesta este circuitul din spatele configurării mașinii de sortare a culorilor:
Programarea Arduino Uno pentru sortarea bilelor colorate
Programarea Arduino UNO este destul de simplă și necesită o logică simplă pentru a simplifica pașii implicați în sortarea culorilor. Programul complet cu o demonstrație video este oferit la sfârșit.
Întrucât servomotorul este utilizat, deci servoteca este o parte esențială a programului. Aici folosim două servo-motoare. Primul servo se va muta bilele colorate de la poziția inițială la poziția detectorului TCS3200 și apoi se deplasează în poziția de sortare în cazul în care mingea va fi scăzut. După deplasarea în poziția de sortare, al doilea servo va lăsa mingea folosind brațul în găleată de culoare dorită. Vedeți lucrările complete în videoclipul prezentat la final.
Primul pas va fi includerea tuturor bibliotecilor și definirea variabilelor servo.
#include
Senzorul de culoare TCS3200 poate funcționa fără bibliotecă, deoarece este nevoie doar de citirea frecvenței de la pinul senzorului pentru a decide culoarea. Deci, definiți doar numerele PIN ale TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequency = 0; int color = 0;
Faceți pinii selectați ca ieșire, deoarece aceasta va face ca fotodioda color să fie ridicată sau scăzută și să ia pinul Out al TCS3200 ca intrare. Pinul OUT va oferi frecvență. Selectați scalarea frecvenței ca 20% inițial.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Servomotorele sunt conectate la pinii 9 și 10 din Arduino. Servo pickup, care va pickup bilele de culoare este conectat la Pin 9 și servo picătură care va scadea bilele de culoare în funcție de culoarea este conectat la Pin10.
pickServo.attach (9); dropServo.attach (10);
Inițial, servomotorul pick este setat în poziția inițială, care în acest caz este de 115 grade. Poate diferi și poate fi personalizat în consecință. Motorul se deplasează după o anumită întârziere în regiunea detectorului și așteaptă detectarea.
pickServo.write (115); întârziere (600); for (int i = 115; i> 65; i--) { pickServo.write (i); întârziere (2); } întârziere (500);
ASR 3200 citește culoarea și dă frecvența de Out Pin.
culoare = detectColor (); întârziere (1000);
În funcție de culoarea detectată, servomotorul de mișcare se mișcă cu un unghi special și lasă bila de culoare în caseta respectivă.
switch (color) { case 1: dropServo.write (50); pauză; cazul 2: dropServo.write (80); pauză; cazul 3: dropServo.write (110); pauză; cazul 4: dropServo.write (140); pauză; cazul 5: dropServo.write (170); pauză; caz 0: pauză; } întârziere (500);
Servomotorul revine la poziția inițială pentru următoarea minge de preluat.
for (int i = 65; i> 29; i--) { pickServo.write (i); întârziere (2); } întârziere (300); for (int i = 29; i <115; i ++) { pickServo.write (i); întârziere (2); }
Funcția detectColor () este utilizată pentru a măsura frecvența și compară frecvența culorii pentru a face concluzia culorii. Rezultatul este tipărit pe monitorul serial. Apoi returnează valoarea culorii pentru carcase pentru a deplasa unghiul servomotorului.
int detectColor () {
Scrierea în S2 și S3 (LOW, LOW) activează fotodiodele roșii pentru a lua citirile pentru densitatea culorii roșii.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); frecvență = pulseIn (senzorOut, LOW); int R = frecvență; Serial.print ("Roșu ="); Serial.print (frecvență); // tipărirea frecvenței de culoare ROȘU Serial.print (""); întârziere (50);
Scrierea în S2 și S3 (LOW, HIGH) activează fotodiodele albastre pentru a lua citirile pentru densitatea culorii albastre.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); frecvență = pulseIn (senzor Out, LOW); int B = frecvență; Serial.print ("Albastru ="); Serial.print (frecvență); Serial.println ("");
Scrierea în S2 și S3 (HIGH, HIGH) activează fotodiodele verzi pentru a lua citirile pentru densitatea culorii verzi.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Citirea frecvenței frecvenței de ieșire = pulseIn (sensorOut, LOW); int G = frecvență; Serial.print ("Verde ="); Serial.print (frecvență); Serial.print (""); întârziere (50);
Apoi, valorile sunt comparate pentru a lua decizia de culoare. Citirile sunt diferite pentru diferite configurări experimentale, deoarece distanța de detecție variază pentru toată lumea atunci când faceți configurarea.
if (R <22 & R> 20 & G <29 & G> 27) { color = 1; // Red Serial.print ("Detected Color is ="); Serial.println ("RED"); } 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 ("Culoarea detectată este ="); Serial.println ("VERDE"); } if (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Yellow Serial.print ("Culoarea detectată este ="); Serial.println ("GALBEN"); } dacă (G <29 & G> 27 & B <22 & B> 19) { culoare = 5; // Albastru Serial.print ("Detected Color is ="); Serial.println ("ALBASTRU"); } returnează culoarea; }
Aceasta termină mașina de sortare a culorilor folosind TCS3200 și Arduino UNO. De asemenea, îl puteți programa pentru a detecta mai multe culori, dacă este necesar. Dacă aveți vreo îndoială sau aveți vreo sugestie, atunci scrieți pe forumul nostru sau comentați mai jos. De asemenea, verificați videoclipul prezentat mai jos.