- Components necessaris
- Com es fa el xassís del braç robòtic de classificació per colors
- Sensor de color TCS3200
- Diagrama de circuits del classificador de colors Arduino
- Programació d'Arduino Uno per classificar boles de colors
Com el seu nom indica, l’ordenació del color és simplement ordenar les coses segons el seu color. Es pot fer fàcilment veient-lo, però quan hi ha massa coses per ordenar i és una tasca repetitiva, les màquines de classificació automàtica del color són molt útils. Aquestes màquines tenen sensor de color per detectar el color de qualsevol objecte i després de detectar el servomotor de color, agafeu la cosa i la poseu a la caixa respectiva. Es poden utilitzar en diferents àrees d’aplicació on la identificació del color, la distinció del color i l’ordenació del color són importants. Algunes de les àrees d’aplicació inclouen la indústria agrícola (classificació de gra segons el color), la indústria alimentària, la indústria del diamant i la mineria, el reciclatge, etc.
El sensor més popular per detectar els colors és el sensor de color TCS3200. Prèviament, hem utilitzat el sensor TCS3200 amb Arduino per obtenir el component RGB (vermell, verd, blau) de qualsevol color i també ho hem relacionat amb Raspberry Pi per detectar el color de qualsevol objecte.
Aquí, en aquest tutorial, farem una màquina de classificar el color mitjançant un sensor de color TCS3200, alguns servomotors i una placa Arduino. Aquest tutorial inclourà la classificació de les boles de colors i la seva conservació al quadre de colors corresponent. La caixa estarà en posició fixa i el servomotor s’utilitzarà per moure la mà classificadora per mantenir la pilota a la caixa corresponent.
Components necessaris
- Arduino UNO
- Sensor de color TCS3200
- Servomotors
- Saltadors
- Taula de pa
Com es fa el xassís del braç robòtic de classificació per colors
Per fer la configuració completa que inclou xassís, braç, corró, coixinet, hem utilitzat la placa de sol blanca de 2 mm de gruix. Està fàcilment disponible a les botigues fixes. Hem utilitzat un tallador de paper per tallar el full Sunboard i FlexKwik o FeviKwik per unir les diferents parts.
A continuació es mostren alguns passos per construir el braç d'ordenació del color:
1) Agafeu el full Sunboard.

2) Talleu el full de taula solar en trossos després de mesurar tots els costats amb una escala i un marcador, tal com es mostra a la figura.



3) Ara agafeu els dos trossos de placa solar i aboqueu-hi una gota de FeviKwik per enganxar-los. Seguiu unint les peces seguint la figura.

4) Després d’unir totes les peces, aquesta màquina de classificar el color tindrà un aspecte semblant a això:

Sensor de color TCS3200

TCS3200 és un sensor de color que pot detectar qualsevol quantitat de colors amb una programació adequada. TCS3200 conté matrius RGB (vermell verd blau). Com es mostra a la figura a nivell microscòpic, es poden veure les caixes quadrades dins de l'ull del sensor. Aquestes caixes quadrades són matrius de matriu RGB. Cadascuna d’aquestes caixes conté tres sensors, una per detectar la intensitat de la llum VERMELLA, una per detectar la intensitat de la llum VERDA i l’última per detectar la intensitat de la llum BLAU.

Cadascuna de les matrius de sensors d’aquestes tres matrius es selecciona per separat segons el requisit. Per tant, es coneix com a sensor programable. El mòdul es pot presentar per detectar el color concret i deixar els altres. Conté filtres per a aquest propòsit de selecció. Hi ha un quart mode anomenat " sense filtre" en què el sensor detecta la llum blanca.
Diagrama de circuits del classificador de colors Arduino
El diagrama de circuits d’aquest Arduino Color Sorter és bastant fàcil de fer i no requereix gaire connexions. L’esquema es presenta a continuació.

Aquest és el circuit darrere de la configuració de la màquina de classificació de colors:

Programació d'Arduino Uno per classificar boles de colors
Programar Arduino UNO és bastant senzill i requereix una lògica senzilla per simplificar els passos relacionats amb la classificació del color. Al final es dóna un programa complet amb un vídeo de demostració.
Com que s'utilitza el servomotor, la servoteca és una part essencial del programa. Aquí estem utilitzant dos servomotors. El primer servo mourà les boles de colors de la posició inicial a la posició del detector TCS3200 i després es mourà a la posició de classificació on es deixarà caure la bola. Després de passar a la posició de classificació, el segon servo deixarà caure la pilota amb el braç fins a la galleda de color desitjada. Vegeu el treball complet al vídeo que es dóna al final.
El primer pas serà tota la inclusió de la biblioteca i definir les variables servo.
#incloure
El sensor de color TCS3200 pot funcionar sense biblioteca, ja que només cal la freqüència de lectura del pin del sensor per decidir el color. Per tant, només heu de definir els números de pin de TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequency = 0; int color = 0;
Feu que els pins de selecció siguin de sortida, ja que farà que el fotodiode de color sigui més alt o més baix i agafeu el pin Out de TCS3200 com a entrada. El pin OUT proporcionarà freqüència. Seleccioneu l’escala de freqüència com a un 20% inicialment.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, BAIX); digitalWrite (S1, HIGH);
Els servomotors estan connectats als pins 9 i 10 d’Arduino. El servo de recollida que recollirà les boles de color es connecta al pin 9 i el servo de caiguda que deixarà caure les boles de color segons el color es connecta al pin10.
pickServo.attach (9); dropServo.attach (10);
Inicialment, el servomotor pick està configurat a la posició inicial, que en aquest cas és de 115 graus. Pot variar i es pot personalitzar en conseqüència. El motor es mou després d'un cert retard a la regió del detector i espera la detecció.
pickServo.write (115); retard (600); for (int i = 115; i> 65; i--) { pickServo.write (i); retard (2); } retard (500);
El TCS 3200 llegeix el color i dóna la freqüència des del pin de sortida.
color = detectColor (); retard (1000);
Depenent del color detectat, el servomotor de caiguda es mou amb un angle particular i deixa caure la bola de color a la seva caixa respectiva.
commutador (color) { cas 1: dropServo.write (50); trencar; cas 2: dropServo.write (80); trencar; cas 3: dropServo.write (110); trencar; cas 4: dropServo.write (140); trencar; cas 5: dropServo.write (170); trencar; cas 0: trencar; } retard (500);
El servomotor torna a la posició inicial per a la següent bola a escollir.
for (int i = 65; i> 29; i--) { pickServo.write (i); retard (2); } retard (300); for (int i = 29; i <115; i ++) { pickServo.write (i); retard (2); }
La funció detectColor () s’utilitza per mesurar la freqüència i compara la freqüència del color per arribar a la conclusió del color. El resultat s’imprimeix al monitor sèrie. A continuació, retorna el valor del color per a casos que mouen l'angle del servomotor de caiguda.
int detectColor () {
Si escriviu a S2 i S3 (BAIX, BAIX) s’activen els fotodíodes vermells per obtenir les lectures de densitat de color vermell.
digitalWrite (S2, BAIX); digitalWrite (S3, BAIX); freqüència = pulseIn (sensorOut, LOW); int R = freqüència; Serial.print ("Vermell ="); Serial.print (freqüència); // imprimir freqüència de color VERMELL Serial.print (""); retard (50);
Si escriviu a S2 i S3 (BAIX, ALT) s’activen els fotodíodes blaus per obtenir les lectures de densitat de color blau.
digitalWrite (S2, BAIX); digitalWrite (S3, HIGH); freqüència = pulseIn (sensorOut, LOW); int B = freqüència; Serial.print ("Blau ="); Serial.print (freqüència); Serial.println ("");
Escriure a S2 i S3 (HIGH, HIGH) activa els fotodíodes verds per obtenir les lectures de densitat de color verd.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Lectura de la freqüència de freqüència de sortida = pulseIn (sensorOut, LOW); int G = freqüència; Serial.print ("Verd ="); Serial.print (freqüència); Serial.print (""); retard (50);
A continuació, es comparen els valors per prendre la decisió del color. Les lectures són diferents per a diferents configuracions experimentals, ja que la distància de detecció varia per a tothom quan es fa la configuració.
if (R <22 & R> 20 & G <29 & G> 27) { color = 1; // Red Serial.print ("El color detectat és ="); Serial.println ("VERMELL"); } if (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Orange Serial.println ("Taronja"); } if (R <21 & R> 20 & G <28 & G> 25) { color = 3; // Green Serial.print ("El color detectat és ="); Serial.println ("VERD"); } if (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Yellow Serial.print ("El color detectat és ="); Serial.println ("GROC"); } if (G <29 & G> 27 & B <22 & B> 19) { color = 5; // Blue Serial.print ("El color detectat és ="); Serial.println ("BLAU"); } tornar color; }

Amb això s’acaba la màquina de classificació de colors mitjançant TCS3200 i Arduino UNO. També podeu programar-lo per detectar més colors si cal. Si teniu algun dubte o teniu algun suggeriment, escriviu al nostre fòrum o feu un comentari a continuació. Consulteu també el vídeo que es mostra a continuació.
