Módulo sensor Color

De Proyecto Butiá
Saltar a: navegación, buscar

Introducción

El sensor de color (o módulo color) es incorporado al kit Butiá en junio de 2016. A nivel comercial son varios los kits que lo incluyen. También existen sensores de color para ser integrados a distintas placas de entrada/salida. Este sensor es utilizado para estimar el color de los diversos objetos del entorno Wikipedia Sensor Infrarrojo Reflexivo.

Es el primer módulo del Butiá que cuenta con un elemento de cómputo distribuido dado que el sensor se basa en un microcontrolador AVR ATtiny.

Manual

Video tutorial

Video-tutorial.jpg

¿Para qué sirve?

Como su nombre lo indica, el sensor de color permite conocer el color o matiz del objeto que está enfrentado a él. En este sentido permite sustituir a una cámara que tienen un costo superior y es más compleja tanto en cómputo como en análisis, y puede ser acoplado fácilmente en el robot Butiá utilizando las fichas de encastre. En general, los desafíos robóticos presentan objetos de distinto color que deben clasificarse para luego tomar una decisión sobre su manipulación o interacción.

Funcionamiento

El módulo color cuenta con un led RGB (Emisor en la figura) que emite radiación por cada uno de los colores básicos (r- red - rojo, g - green - verde y b- blue - azul), cuando un objeto se aproxima a este, se refleja radiación hacia el fotoresistor (Receptor en la figura), generándose una diferencia de potencial (Voltaje, V en la figura) en bornes del mismo, esta diferencia de potencial (que está relacionada con magnitud de luz reflejada) es leída un pin de Datos del microcontrolador ATtiny y puede ser utilizada por el programa que ejecuta en él. La figura sólo se muestra simplificada por razones de claridad.

Color Exp.jpg

Para poder determinar el color de un objeto es necesario conocer la magnitud reflejada para cada uno de los colores del LED RGB sin que interfieran los colores. Entonces, cada color del LED RGB debe encenderse por un lapso de tiempo para poder leer la luz reflejada antes de pasar al siguiente. Aparece entonces la necesidad de un elemento de computo que realice esta tarea.

El microcontroladore ATtiny se encarga encender y apagar los LED RGB de forma secuencuencial, leer las magnitudes de luz reflejadas para cada LED de color e integrar las tres lecturas en un color único. El color obtenido se pone a disposición del Butiá a través de la línea de datos como un valor analógico.

Algoritmo para calcular el color

El algoritmo para calcular el color ejecuta distribuido en el propio módulo sensor. Para esto el módulo incluye un pequeño computador (microcontrolador) que todo el tiempo enciende y apaga cada uno de los LED, calcula el matiz y lo deja disponible a la placa USB4Butia a través de uno de sus pines analógicos.

El algoritmo utilizado se presenta a continuación.

while True:
  encender_solo_led(rojo)
  rojo := leer_luz_reflejada()
  encender_solo_led(verde)
  verde := leer_luz_reflejada()
  encender_solo_led(azul)
  red := leer_luz_reflejada()

  matiz = calcular_matiz(rojo, verde, azul)
  escribir_valor_analogico(matiz)

El código desarrollado para el microcontrolador ATtiny puede descargarse aquí.

Diseño eléctrico


Puede descargar los archivos fuentes del diseños para kicad en el repositorio del proyecto usb4all haciendo click aqui

Si desea construirse la placa a través del método de transferencia por tóner aqui puede descargar el diesño de PCB en formato pdf.

Materiales

  • 1 ATtiny 85
  • 1 LDR (valor:10K-200K OHM)
  • 1 LED RGB (cátodo común - es decir que la pata común va conectada a masa)
  • 1 R de 68kΩ (identificación - provisorio hasta que tenga su propio id)
  • 1 R de 10kΩ (divisor tensión ldr)
  • 1 R de 330Ω (led rgb)}
  • 1 R de 13k Ω (filtro)
  • 1 capacitor de 10uf (filtro)
  • 1 conector Rj45 acodado Hembra x 1
  • 1 zócalo dip 8

Modulo-color.png

ATtiny 85

Debemos tener en cuenta que el ATtiny85 es un pequeño microprocesador y lleva un programa en él. Dicho programa se llama firmware y debe ser grabado en el ATtiny utilizando un dispositivo auxiliar como una placa Arduino o un programador especial para ATiny85. El programa que se debe grabar en la ATtiny es se puede descargar en la sección anterior llamada Algoritmo para calcular el color.

Un ejemplo de cómo cargar el programa utilizando una Arduino se puede encontrar en aquí.

Pieza en 3D

Pära poder disminuir la interferencia de luz externa y la influencia del led RGB sobre el LDR le recomendamos agregarle al sensor la siguiente pieza realizada en 3D.

Capuchon3D.png

El archivo puede ser obtenido desde la siguiente web.
El archivo puede descargarse aqui descarga

Bloque en Turtlebots

Por el momento en el programa Turtlebots se reutiliza el bloque de sensor de luz dentro de la paleta Butiá (en el futuro el sensor de color tendrá su propio bloque). Si conectamos un sensor con el módulo sensor color la placa lo reconocerá perfectamente como un sensor de luz habilitando automáticamente el bloque en la paleta (pintándolo de verde) como muestra la siguiente imagen.

SensorColorActivo.png

El funcionamiento del sensor es el siguiente: el bloque devuelve valores cercanos a 60.000 cuando sensa rojo, cercanos a 20.000 cuando sensa azul y cercanos a 30.000 cuando sensa verde. En caso de sensar blanco, negro u otro color devuelve valores cercanos a 0. En la imagen a continuación se muestra un programa que permite clasificar colores basado en los rangos que devuelve el sensor de color.



ProgramaEjemplo.png

Información adicional

  • Un LDR, por sus siglas en inglés: Light Dependent Resistor (Resistor Dependiente de la Luz) también también conocido en español como: foto-resistencia. Más información en: Wikipedia LDR.
  • Un LED RGB. por sus siglas en inglés: Light-Emitting Diode Red Green Blue (Diodo Emisor de Luz Rojo Verde Azul). Más información en: Wikipedia Led.
  • Un ATtiny es un microcontrolador programable de gama baja con menos de 10kB de memoria flash y conjunto reducido de periféricos. Más información en: Wikipedia AVR.