La detección de color es el proceso de identificar y distinguir colores en una imagen, vídeo, escena u objeto. Muchas aplicaciones integradas y robóticas requieren esta función, ya que es útil para clasificar, clasificar, leer tiras reactivas, determinar rutas y más.
Dos sensores estándar utilizados para la detección de color incluyen TCS230 o TCS3200. El TCS3200 reconoce varios colores según su longitud de onda y es fácil de interactuar con cualquier microcontrolador que utilice GPIO. El TCS230 es un poco más sensible y detecta una gama más estrecha de colores con mayor precisión.
En este proyecto, conectaremos el sensor TCS230/TCS3200 (se puede usar cualquiera de los dos) con el Arduino Mega, calibraremos el sensor y derivaremos los valores RGB para colores específicos.
Componentes necesarios
- Arduino UNO/Arduino Mega x1
- Sensor de color TCS230/TCS3200 x1
- Cables de conexión/DuPont
Sensores de reconocimiento de color
Los sensores TCS230 y TCS3200 detectan y miden la intensidad de la luz en diferentes longitudes de onda para determinar el color de un objeto. Pueden detectar múltiples colores usando una variedad de fotodiodos con diferentes filtros.
El TCS230/TCS3200 contiene cuatro LED blancos que iluminan el objeto frente a usted.
Normalmente, los sensores de reconocimiento de color tienen cuatro canales: rojo, verde, azul y transparente (sin filtro). El TCS3200 tiene una matriz de fotodiodos con cuatro filtros. En total cuenta con 16 fotodiodos con filtros rojo, verde y azul que son sensibles a las longitudes de onda roja, verde y azul; y tiene 16 fotodiodos sin filtros.
Estos sensores controlan el tiempo de integración durante el cual recogen la luz. Esto les permite flexibilidad para adaptarse a diferentes condiciones de iluminación para una mayor precisión en el reconocimiento del color. TCS230/TCS3200 proporcionan señales de salida analógicas proporcionales a la intensidad de la luz de cada canal de color. También tienen un convertidor de frecuencia a voltaje que convierte la información del color en una señal de voltaje, que se puede medir fácilmente.
Además, el TCS230/TCS3200 utiliza una técnica de modulación y filtrado para eliminar la interferencia de la luz ambiental, mejorando aún más la precisión de la detección del color. Al elegir selectivamente las lecturas del filtro de fotodiodo, se puede identificar la intensidad del color.
Estos sensores funcionan a un voltaje de 2,7 ~ 5,5 V CC y tienen el siguiente diagrama de pines.
Descripción de la configuración de pines TCS230/TCS3200:
Los pines S2 y S3 se utilizan para leer la intensidad de la luz de un color específico. Los fotodiodos están conectados en paralelo, por lo que configurar S2 y S3 en BAJO y ALTO en diferentes combinaciones permite que los fotodiodos coincidan con los colores correspondientes.
Los colores se seleccionan según la siguiente tabla.
Los pines S0 y Si escalan la frecuencia de salida al 100%, 20% o 2% de los parámetros preestablecidos. El escalado de salida optimiza las lecturas del sensor para diferentes microcontroladores o contadores de frecuencia.
Cuando se utiliza Arduino, el 20% es típico. El dimensionamiento utilizando los pines S0 y S1 se realiza según la siguiente tabla.
Conexiones de circuito
Para este proyecto, conectaremos el sensor de color TCS230/TCS3200 al Arduino Mega de la siguiente manera:
- Conecte S0, S1, S2, S3 y los pines de salida de TCS230/TCS3200 con GPIO13, GPIO12, GPIO11, GPIO10 y GPIO9 de Arduino respectivamente.
- Luego, conecte los pines VCC y GND del TCS230/TCS3200 con los pines 5Vout y tierra del Arduino, respectivamente.
Bosquejo de Arduino
Como funciona
El Arduino lee la intensidad de la luz de cada color utilizando el sensor TCS230/TCS3200 eligiendo los canales rojo, verde y azul uno tras otro. Los valores "leídos" se asignan a sus valores calibrados apropiados para una salida de color RBG. Tenga en cuenta que el valor de color RGB solo se obtiene después de la calibración.
El sensor se ve afectado por la luz ambiental. Por lo tanto, la calibración de la detección de color solo es posible después de la calibración de la luz ambiental. Estos valores RGB no corresponden a los verdaderos valores de color RGB, pero son una estimación decente y valiosa para clasificar o seleccionar objetos.
Calibración
El sensor TCS230/TCS3200 debe calibrarse con la misma luz en la que se utilizará. Imprima los colores rojo (#FF0000), verde (#00FF00) y azul (#0000FF) en una hoja, junto con un color de prueba, como se muestra en la imagen a continuación.
Primero, gire el sensor a "rojo verdadero" y registre las lecturas de los canales rojo, verde y azul. Repita lo mismo con los colores “verde verdadero” y “azul verdadero”.
Cuando el sensor esté en color rojo verdadero, la salida de frecuencia del canal rojo estará en el nivel más bajo. Cuando sea verde verdadero o azul verdadero, la salida de frecuencia será máxima para cualquiera de los colores. La frecuencia más baja se asigna a 255 y la frecuencia registrada más alta se asigna a 0.
Después de obtener los valores mínimo y máximo para cada color, asígnelos en el boceto usando la función de mapa. Esto ya se ha hecho en el boceto de arriba. Pero tendrás que hacer esto en función de la iluminación de tu habitación. De esta manera, el sensor se calibrará para las condiciones de luz ambiental según las condiciones operativas de su proyecto.
Código
El boceto comienza definiendo las asignaciones de pines para el sensor de color TCS230/TCS3200. A continuación se declaran las variables para almacenar los valores RGB. En la función de configuración, los pines conectados a S0, S1, S2 y S3 se definen como salidas digitales y el pin conectado a TCS230/TCS3200 se define como entrada digital. El pin S0 está configurado en ALTO y S1 en BAJO, seleccionando una escala del 20%, que es más adecuada para Arduino. La velocidad en baudios para la comunicación en serie está establecida en 9600 bps.
En la función de bucle, Arduino primero selecciona el canal rojo del sensor configurando los pines S2 y S3 en BAJO. Lee la frecuencia del color rojo y mapea sus valores calibrados usando la función de mapa. El valor del filtro rojo está impreso en el puerto serie. Luego, Arduino selecciona el canal verde del sensor configurando los pines S2 y S3 en ALTO. Lee la frecuencia del color verde y mapea sus valores calibrados usando la función de mapa. El valor del filtro verde está impreso en el puerto serie.
Finalmente, Arduino selecciona el canal azul del sensor configurando el pin S2 en BAJO y el pin S3 en ALTO. Lee la frecuencia del color azul y la asigna a sus valores calibrados mediante la función de mapa. El valor del filtro azul está impreso en el puerto serie.
Esto proporciona un valor de color RGB aproximado, que resulta útil al seleccionar o clasificar objetos.
Vídeo de demostración