- Componentes requeridos
- Cómo hacer el chasis para el brazo robótico de clasificación por color
- Sensor de color TCS3200
- Diagrama de circuito del clasificador de color Arduino
- Programación de Arduino Uno para clasificar bolas de colores
Como sugiere el nombre, la clasificación por color es simplemente clasificar las cosas según su color. Se puede hacer fácilmente viéndolo, pero cuando hay demasiadas cosas que clasificar y es una tarea repetitiva, las máquinas de clasificación automática por color son muy útiles. Estas máquinas tienen un sensor de color para detectar el color de cualquier objeto y, después de detectar el servomotor de color, agarre la cosa y colóquela en la caja respectiva. Se pueden utilizar en diferentes áreas de aplicación donde la identificación de colores, la distinción de colores y la clasificación de colores es importante. Algunas de las áreas de aplicación incluyen la industria agrícola (clasificación de granos según el color), la industria alimentaria, la industria del diamante y la minería, el reciclaje, etc. Las aplicaciones no se limitan a esto y pueden aplicarse a diferentes industrias.
El sensor más popular para detectar los colores es el sensor de color TCS3200. Anteriormente usamos el sensor TCS3200 con Arduino para obtener el componente RGB (rojo, verde, azul) de cualquier color y también lo conectamos con Raspberry Pi para detectar el color de cualquier objeto.
Aquí en este tutorial haremos una máquina clasificadora de color usando un sensor de color TCS3200, algunos servomotores y placa Arduino. Este tutorial incluirá la clasificación de bolas de colores y su mantenimiento en el cuadro de color correspondiente. La caja estará en la posición fija y el servomotor se utilizará para mover la mano clasificadora para mantener la bola en la caja correspondiente.
Componentes requeridos
- Arduino UNO
- Sensor de color TCS3200
- Servomotores
- Jerséis
- Tablero de circuitos
Cómo hacer el chasis para el brazo robótico de clasificación por color
Para realizar la configuración completa, incluido el chasis, el brazo, el rodillo, la plataforma, hemos utilizado el Sunboard blanco de 2 mm de espesor. Está fácilmente disponible en las tiendas de papelería. Hemos utilizado cortador de papel para cortar el Sunboard Sheet y FlexKwik o FeviKwik para unir las diferentes partes.
A continuación se muestran algunos pasos para construir el brazo de clasificación de colores:
1) Tome la hoja de Sunboard.
2) Corte la placa solar en pedazos después de medir todos los lados con la escala y el marcador como se muestra en la figura.
3) Ahora sostenga las dos piezas de la tabla solar juntas y vierta una gota de FeviKwik para pegar las piezas. Sigue uniendo las piezas siguiendo la figura.
4) Después de unir todas las piezas, esta máquina clasificadora de color se verá así:
Sensor de color TCS3200
TCS3200 es un sensor de color que puede detectar cualquier número de colores con la programación correcta. TCS3200 contiene matrices RGB (rojo, verde, azul). Como se muestra en la figura a nivel microscópico, se pueden ver las cajas cuadradas dentro del ojo en el sensor. Estas cajas cuadradas son matrices de matriz RGB. Cada una de estas cajas contiene tres sensores, uno para detectar la intensidad de la luz ROJA, uno para detectar la intensidad de la luz VERDE y el último para detectar la intensidad de la luz AZUL.
Cada una de las matrices de sensores de estas tres matrices se selecciona por separado según el requisito. De ahí que se le conozca como sensor programable. El módulo se puede presentar para detectar el color particular y dejar los demás. Contiene filtros para ese propósito de selección. Hay un cuarto modo llamado "modo sin filtro" en el que el sensor detecta la luz blanca.
Diagrama de circuito del clasificador de color Arduino
El diagrama de circuito de este clasificador de color Arduino es bastante fácil de hacer y no requiere muchas conexiones. El esquema se da a continuación.
Este es el circuito detrás de la configuración de la máquina clasificadora de color:
Programación de Arduino Uno para clasificar bolas de colores
Programar Arduino UNO es bastante simple y requiere una lógica simple para simplificar los pasos involucrados en la clasificación de colores. El programa completo con un video de demostración se da al final.
Dado que se utiliza el servomotor, la biblioteca de servos es una parte esencial del programa. Aquí estamos usando dos servomotores. El primer servo moverá las bolas de colores desde la posición inicial a la posición del detector TCS3200 y luego se moverá a la posición de clasificación donde se dejará caer la bola. Después de moverse a la posición de clasificación, el segundo servo dejará caer la bola usando su brazo al cubo de color deseado. Vea el trabajo completo en el Video que se da al final.
El primer paso será la inclusión de todas las bibliotecas y definir las variables de servo.
#incluir
El sensor de color TCS3200 puede funcionar sin biblioteca, ya que solo se necesita leer la frecuencia del pin del sensor para decidir el color. Así que simplemente defina los 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;
Haga los pines seleccionados como salida, ya que esto hará que el fotodiodo de color sea alto o bajo y tomará el pin de salida de TCS3200 como entrada. El pin OUT proporcionará frecuencia. Seleccione la escala de frecuencia como 20% inicialmente.
pinMode (S0, SALIDA); pinMode (S1, SALIDA); pinMode (S2, SALIDA); pinMode (S3, SALIDA); pinMode (sensorOut, INPUT); digitalWrite (S0, BAJO); escritura digital (S1, ALTA);
Los servomotores están conectados en los pines 9 y 10 de Arduino. El servo de recogida que recogerá las bolas de color está conectado en el Pin 9 y el servo de caída que dejará caer las bolas de color de acuerdo con el color está conectado en el Pin10.
pickServo.attach (9); dropServo.attach (10);
Inicialmente, el servomotor de selección se coloca en la posición inicial que en este caso es de 115 grados. Puede diferir y personalizarse en consecuencia. El motor se mueve después de cierto retraso a la región del detector y espera la detección.
pickServo.write (115); retraso (600); para (int i = 115; i> 65; i--) { pickServo.write (i); retraso (2); } retraso (500);
El TCS 3200 lee el color y da la frecuencia desde el pin de salida.
color = detectColor (); retraso (1000);
Dependiendo del color detectado, el servomotor de caída se mueve con un ángulo particular y deja caer la bola de color en su respectiva caja.
cambiar (color) { caso 1: dropServo.write (50); romper; caso 2: dropServo.write (80); romper; caso 3: dropServo.write (110); romper; caso 4: dropServo.write (140); romper; caso 5: dropServo.write (170); romper; caso 0: ruptura; } retraso (500);
El servomotor vuelve a la posición inicial para recoger la siguiente bola.
para (int i = 65; i> 29; i--) { pickServo.write (i); retraso (2); } retraso (300); para (int i = 29; i <115; i ++) { pickServo.write (i); retraso (2); }
La función detectColor () se usa para medir la frecuencia y compara la frecuencia del color para llegar a la conclusión del color. El resultado se imprime en el monitor de serie. Luego devuelve el valor de color para los casos para mover el ángulo del servomotor de caída.
int detectColor () {
Escribir en S2 y S3 (LOW, LOW) activa los fotodiodos rojos para tomar las lecturas de la densidad del color rojo.
escritura digital (S2, BAJA); escritura digital (S3, BAJA); frecuencia = pulseIn (sensorOut, LOW); int R = frecuencia; Serial.print ("Red ="); Serial.print (frecuencia); // imprimiendo la frecuencia de color ROJO Serial.print (""); retraso (50);
Escribir en S2 y S3 (LOW, HIGH) activa los fotodiodos azules para tomar las lecturas de la densidad del color azul.
digitalWrite (S2, BAJO); escritura digital (S3, ALTA); frecuencia = pulseIn (sensorOut, LOW); int B = frecuencia; Serial.print ("Azul ="); Serial.print (frecuencia); Serial.println ("");
Escribir en S2 y S3 (HIGH, HIGH) activa los fotodiodos verdes para tomar las lecturas de la densidad del color verde.
escritura digital (S2, ALTA); escritura digital (S3, ALTA); // Lectura de la frecuencia de salida frecuencia = pulseIn (sensorOut, LOW); int G = frecuencia; Serial.print ("Verde ="); Serial.print (frecuencia); Serial.print (""); retraso (50);
Luego, los valores se comparan para tomar la decisión de color. Las lecturas son diferentes para diferentes configuraciones experimentales ya que la distancia de detección varía para todos al realizar la configuración.
si (R <22 & R> 20 & G <29 & G> 27) { color = 1; // Rojo Serial.print ("El color detectado es ="); Serial.println ("ROJO"); } si (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Naranja Serial.println ("Naranja"); } si (R <21 & R> 20 & G <28 & G> 25) { color = 3; // Verde Serial.print ("El color detectado es ="); Serial.println ("VERDE"); } si (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Yellow Serial.print ("El color detectado es ="); Serial.println ("AMARILLO"); } si (G <29 & G> 27 & B <22 & B> 19) { color = 5; // Azul Serial.print ("El color detectado es ="); Serial.println ("AZUL"); } color de retorno; }
Esto finaliza la máquina clasificadora de color usando TCS3200 y Arduino UNO. También puede programarlo para que detecte más colores si es necesario. Si tiene alguna duda o sugerencia, escriba a nuestro foro o comente a continuación. También consulte el video que se muestra a continuación.