- Componenti richiesti
- Come realizzare il telaio per il braccio robotico con smistamento del colore
- Sensore di colore TCS3200
- Schema del circuito del separatore di colori di Arduino
- Programmazione di Arduino Uno per ordinare palline colorate
Come suggerisce il nome, l'ordinamento dei colori serve semplicemente a ordinare le cose in base al loro colore. Può essere fatto facilmente vedendolo, ma quando ci sono troppe cose da ordinare ed è un compito ripetitivo, le macchine automatiche per la selezione dei colori sono molto utili. Queste macchine hanno un sensore di colore per rilevare il colore di qualsiasi oggetto e dopo aver rilevato il servomotore del colore, afferrare la cosa e metterla nella rispettiva scatola. Possono essere utilizzati in diverse aree di applicazione in cui l'identificazione del colore, la distinzione del colore e l'ordinamento del colore sono importanti. Alcune delle aree di applicazione includono industria agricola (selezione dei cereali in base al colore), industria alimentare, industria mineraria e dei diamanti, riciclaggio, ecc.
Il sensore più diffuso per rilevare i colori è il sensore di colore TCS3200. In precedenza abbiamo utilizzato il sensore TCS3200 con Arduino per ottenere il componente RGB (rosso, verde, blu) di qualsiasi colore e lo abbiamo anche interfacciato con Raspberry Pi per rilevare il colore di qualsiasi oggetto.
Qui in questo tutorial realizzeremo una selezionatrice di colori utilizzando un sensore di colore TCS3200, alcuni servomotori e una scheda Arduino. Questo tutorial includerà l' ordinamento delle palline colorate e il loro mantenimento nella relativa casella dei colori. La scatola sarà in posizione fissa e il servomotore sarà utilizzato per muovere la mano dello smistatore per mantenere la pallina nella relativa casella.
Componenti richiesti
- Arduino UNO
- Sensore di colore TCS3200
- Servomotori
- Ponticelli
- Breadboard
Come realizzare il telaio per il braccio robotico con smistamento del colore
Per la configurazione completa, inclusi telaio, braccio, rullo, pad, abbiamo utilizzato il Sunboard bianco di 2 mm di spessore. È facilmente reperibile nei negozi di cancelleria. Abbiamo utilizzato tagliacarte per tagliare il foglio Sunboard e FlexKwik o FeviKwik per unire le diverse parti.
Di seguito sono riportati alcuni passaggi per creare il braccio di ordinamento dei colori:
1) Prendi il Sunboard Sheet.
2) Tagliare a pezzi il foglio del sunboard dopo aver misurato tutti i lati con scala e pennarello come mostrato in figura.
3) Ora tieni insieme i due pezzi di sunboard e versaci sopra una goccia di FeviKwik per incollare i pezzi. Continua a unire i pezzi seguendo la figura.
4) Dopo aver unito tutti i pezzi, questa selezionatrice di colori sarà simile a questa:
Sensore di colore TCS3200
TCS3200 è un sensore di colore in grado di rilevare qualsiasi numero di colori con la giusta programmazione. TCS3200 contiene array RGB (Red Green Blue). Come mostrato in figura a livello microscopico si possono vedere le caselle quadrate all'interno dell'occhio sul sensore. Queste scatole quadrate sono array di matrice RGB. Ciascuna di queste scatole contiene tre sensori, uno per il rilevamento dell'intensità della luce ROSSA, uno per il rilevamento dell'intensità della luce VERDE e l'ultimo per il rilevamento dell'intensità della luce BLU.
Ciascuno degli array di sensori in questi tre array viene selezionato separatamente a seconda del requisito. Quindi è noto come sensore programmabile. Il modulo può essere caratterizzato per percepire il colore particolare e lasciare gli altri. Contiene filtri per tale scopo di selezione. Esiste una quarta modalità chiamata "modalità senza filtro" in cui il sensore rileva la luce bianca.
Schema del circuito del separatore di colori di Arduino
Lo schema del circuito per questo Arduino Color Sorter è abbastanza facile da realizzare e non richiede molte connessioni. Lo schema è riportato di seguito.
Questo è il circuito dietro l'installazione della macchina per la selezione dei colori:
Programmazione di Arduino Uno per ordinare palline colorate
La programmazione di Arduino UNO è piuttosto semplice e richiede una logica semplice per semplificare i passaggi coinvolti nell'ordinamento dei colori. Alla fine viene fornito il programma completo con un video dimostrativo.
Poiché viene utilizzato il servomotore, la libreria del servo è una parte essenziale del programma. Qui stiamo usando due servomotori. Il primo servo sposterà le palline colorate dalla posizione iniziale alla posizione del rilevatore TCS3200 e quindi si sposterà nella posizione di smistamento in cui la pallina verrà rilasciata. Dopo essersi spostato in posizione di smistamento, il secondo servo lascerà cadere la palla usando il suo braccio nel secchio del colore desiderato. Guarda il lavoro completo nel Video dato alla fine.
Il primo passo sarà l'inclusione di tutte le librerie e la definizione delle variabili servo.
#includere
Il sensore di colore TCS3200 può funzionare senza libreria poiché è necessaria solo la frequenza di lettura dal pin del sensore per decidere il colore. Quindi basta definire i numeri di pin del TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequency = 0; int color = 0;
Rendere i pin di selezione come output in quanto ciò renderà il fotodiodo a colori alto o basso e prenderà il pin Out di TCS3200 come input. Il pin OUT fornirà la frequenza. Selezionare inizialmente il ridimensionamento della frequenza al 20%.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
I servomotori sono collegati ai Pin 9 e 10 di Arduino. Il servo pickup che raccoglierà le sfere colorate è collegato al Pin 9 e il servo drop che farà cadere le sfere colorate in base al colore è collegato al Pin10.
pickServo.attach (9); dropServo.attach (10);
Inizialmente il servomotore di presa è impostato nella posizione iniziale che in questo caso è di 115 gradi. Può differire e può essere personalizzato di conseguenza. Il motore si sposta dopo un certo ritardo nella regione del rilevatore e attende il rilevamento.
pickServo.write (115); ritardo (600); for (int i = 115; i> 65; i--) { pickServo.write (i); ritardo (2); } ritardo (500);
Il TCS 3200 legge il colore e fornisce la frequenza dal pin di uscita.
color = detectColor (); ritardo (1000);
A seconda del colore rilevato, il servomotore di caduta si sposta con un'angolazione particolare e lascia cadere la sfera colorata nella rispettiva casella.
switch (color) { case 1: dropServo.write (50); rompere; caso 2: dropServo.write (80); rompere; caso 3: dropServo.write (110); rompere; caso 4: dropServo.write (140); rompere; caso 5: dropServo.write (170); rompere; caso 0: rottura; } ritardo (500);
Il servomotore ritorna alla posizione iniziale per la selezione della palla successiva.
for (int i = 65; i> 29; i--) { pickServo.write (i); ritardo (2); } ritardo (300); for (int i = 29; i <115; i ++) { pickServo.write (i); ritardo (2); }
La funzione detectColor () viene utilizzata per misurare la frequenza e confronta la frequenza del colore per trarre la conclusione del colore. Il risultato viene stampato sul monitor seriale. Quindi restituisce il valore del colore per i casi per spostare l'angolo di caduta del servomotore.
int detectColor () {
Scrivendo su S2 e S3 (LOW, LOW) si attivano i fotodiodi rossi per acquisire le letture per la densità del colore rosso.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); frequenza = pulseIn (sensorOut, LOW); int R = frequenza; Serial.print ("Red ="); Serial.print (frequenza); // stampa di colore ROSSO frequenza Serial.print (""); ritardo (50);
Scrivendo su S2 e S3 (LOW, HIGH) si attivano i fotodiodi blu per ottenere le letture per la densità del colore blu.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); frequenza = pulseIn (sensorOut, LOW); int B = frequenza; Serial.print ("Blue ="); Serial.print (frequenza); Serial.println ("");
La scrittura su S2 e S3 (HIGH, HIGH) attiva i fotodiodi verdi per ottenere le letture per la densità del colore verde.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Lettura della frequenza di uscita frequency = pulseIn (sensorOut, LOW); int G = frequenza; Serial.print ("Green ="); Serial.print (frequenza); Serial.print (""); ritardo (50);
Quindi i valori vengono confrontati per prendere la decisione sul colore. Le letture sono diverse per diverse configurazioni sperimentali poiché la distanza di rilevamento varia per tutti quando si effettua la configurazione.
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 ("Detected Color is ="); Serial.println ("GREEN"); } if (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Yellow Serial.print ("Detected Color is ="); Serial.println ("GIALLO"); } se (G <29 & G> 27 & B <22 & B> 19) { color = 5; // Blue Serial.print ("Colore rilevato è ="); Serial.println ("BLU"); } colore di ritorno; }
Questo termina la macchina per la selezione dei colori usando TCS3200 e Arduino UNO. Puoi anche programmarlo per rilevare più colori, se necessario. Se hai dubbi o suggerimenti scrivi al nostro forum o commenta qui sotto. Controlla anche il video riportato di seguito.