viernes, 16 de marzo de 2012

Primeros pasos con la matriz RGB

Matriz RGB.
Tras recibir la matriz RGB, hemos configurado unas pruebas para ver el funcionamiento de los drivers RGB y la multiplexación.
Para ello, hemos conectado a un Arduino Dueminalove dos chips TLC5940 en configuracion daisy-channel, enlazados a través de la interfaz SPI, siguiendo el esquema de referencia de la libreria TLC5940 para Arduino.
Grosso modo, esta libreria usa los Timers 1 y 2 de Arduino (deshabilita PWM en algunas salidas) para las entrada de reloj del TLC5940 (GSCLK) y para la señal XLAT. En la datasheet del TLC5940 viene todo explicado con cronogramas. Una descripción bastante buena del funcionamiento, con código en C para PIC16F876, puede encontrarse aqui.
La libreria incluye funciones integradas para realizar shades y shifts.

Para multiplexar las filas, aún no hemos construido los drivers para controlar las filas con el Arduino, por lo que, de momento, cada LED se enciende con unos 5mA, dando unos 40 por fila, que el máximo que Arduino puede aportar por cada pin. Posteriormente construiremos uno que soporte unos 500mA, ya que cada LED admite hasta 50mA, aunque se puede aumentar ya que está encendido 1/8 del tiempo como máximo.
Un papel ayuda con la mezcla.


Para la multiplexación, se realiza una secuencia de:
  • escribir fila i en los drivers
  • esperar cierto retraso
  • activar fila i 
  • esperar cierto retraso
  • apagar filai
  • aumentar i para la siguiente fila.

Probando a minimizar los retrasos, hemos llegado unos retrasos de  900 y 1000 microsegundos, ya que si se apuran más, se produce un solapamiento de colores entre la fila actual y la anterior.
Si reducimos aún más el tiempo que le damos a la libreria para escribir los driver, conseguimos un curioso efecto, aunque se trate de bugs de software.




Con esta velocidad, no tenemos una visión óptima, puede apreciarse un siguiente parpadeo. Hay una versión de la libreria TLC5940 optimizada para multiplexación, pero experimental y con algunos fallos, orientaremos los esfuerzos en implementarla.
Las imágenes del artículo son de nuestra matriz, las fotografías han sido subexpuestas para apreciar los colores y con exposición larga para que no se note el barrido.
La matriz ha sido rellenada con colores aleatorios generados al inicio, en un array tridimensional de 8x8x3, con miles de millones de colores posibles.



No hay comentarios:

Publicar un comentario