Stick LED programable #1

Stick de 16 LEDMontaje del kit Shake Stick Flash, de 16 LED por columna. El circuito original incluye el micro controlador AT89S52, y ya viene programado con 4 imagenes diferentes. Lo interesante de este kit es que se incluye el conector ISP (In-system programming), y esto facilita su uso como plataforma de desarrollo para realizar prácticas con este tipo de micro controladores. Principios de funcionamiento del Stick LED (persistencia del ojo humano), descripción del esquema eléctrico, montaje y diseño de un nuevo firmware. Este firmware permitirá la presentación de 16 imagenes diferentes (gráficos o textos) y uno de sus mensajes podrá reprogramarse a través del puerto serie. Los otros 15 mensajes, almacenados en ROM, podrán modificarse editando el archivo del firmware de forma muy simple.

STICK: persistencia del ojo humano
STICK: persistencia del ojo humano

El principio de funcionamiento del Stick LED está basado en la persistencia que tiene el ojo humano. El ojo hace que cualquier imagen vista se grabe en la retina durante 100 mSeg. aproximadamente. Si desplazamos la columna del Stick con los 16 diodos LED encendidos a una velocidad inferior a 100 mSeg., nuestra retina apreciará una imagen continua y plana, con la forma del movimiento que hemos descrito. Si durante ese tiempo (<100 mSeg.) hacemos que los diodos LED se enciendan y apaguen con un intervalo de tiempo fijo, veremos el mismo arco luminoso, pero mostrando la mitad de las líneas verticales apagadas. Para mostrar gráficos o letras, sólo tendremos que codificar los puntos de cada columna y presentarlos en  el intervalo de tiempo adecuado… y eso es lo que hará el micro controlador.

Este firmware se puede descargar de forma gratuita desde el siguiente enlace: J_RPM_v1_STICK.HEX

Montaje: Stick 16 LED
Montaje: Stick 16 LED

Este kit incluye un portapilas para utilizarlo con dos baterías de tipo AAA. Esto supone que si utilizamos dos pilas de 1,5 V estaríamos alimentando el circuito con 3V. Aunque con esta tensión podría llegar a funcionar el micro controlador, estaría funcionando muy cerca del umbral mínimo… y dejaría de funcionar en cuanto las pilas estuvieran un poco descargadas. Además, la luminosidad que obtendríamos del Stick sería bastante baja. Para evitar estos problemas, la mejor solución es alimentar el circuito con una batería recargable, y añadir un circuito de carga con protección (TP4056) junto con otro circuito ‘Step UP’ que eleve y estabilice la tensión de salida hasta 5V.

Esquema: Stick Flash
Esquema: Stick Flash

En el esquema se muestra la numeración de los componentes, según aparece en la serigrafía del PCB (circuito impreso). Si queremos programar el micro controlador utilizando el conector ISP (In-system programming), es conveniente sustituir la resistencia del circuito Reset, original de 1K5, por otra de 10K.

Con el nuevo firmware que se adjunta, es posible mostrar 16 imágenes diferentes, 5 de ellas son dobles. Al final dispondremos de 4 imágenes dobles y 11 simples almacenadas en la memoria ROM, y  otra imagen doble almacenada en la memoria RAM. Esta última podremos reprogramarla cuantas veces queramos, enviando los datos desde un PC o dispositivo móvil. Para ello tendremos que intercalar un interface (RS232, RS485, IR, Bluetooth, etc) y conectarlo a las líneas RX/TX del Stick (UART). Los textos de la memoria ROM también podremos sustituirlos, pero lo haremos con un editor hexadecimal, modificando los textos del firmware antes de programar el micro controlador.

Intervalos de tiempo (Stick LED)
Intervalos de tiempo (Stick LED)

Con el fin de mejorar la presentación de los mensajes más cortos, el micro controlador modificará los intervalos de tiempo en función del número de caracteres-columnas que tenga que presentar (ver la imagen anterior).

Firmware para el Reloj LED: EC1204B

Desarrollo de un nuevo firmware para el kit EC1204B, reloj LED con esfera rotante. Estructura interna del chip de reloj en tiempo real DS1302. Gestión de datos entre el micro-controlador y el DS1302. Direcciones y estructura de los registros del reloj y memoria RAM, envío simple o ráfaga (burst), etc. Gestión del registro para control de carga de la batería de almacenamiento (TRICKLE-CHARGE REGISTER). Modificaciones realizadas sobre el diseño original, con el fin de mejorar las prestaciones y aumentar el brillo del display. Descripción del modo de programar la hora y modificar sus ajustes con el nuevo firmware.

Este firmware se puede descargar de forma gratuita desde el siguiente enlace:
J_RPM_v1_EC1204B.HEX

Esquema del reloj: EC1204B
Esquema del reloj: EC1204B

Antes de comenzar a realizar un nuevo firmware, es importante analizar el esquema y anotar los pines de entrada/salida de todos los dispositivos que se tienen que controlar. Como en este caso, tanto el control del display de 4 dígitos como los 60 diodos led están multiplexados, es conveniente utilizar la frecuencia más alta que permita el micro-procesador. Dado que este procesador (AT89S52) podría funcionar con una frecuencia máxima de 33 MHz, podemos sustituir sin problemas su cristal de cuarzo original de 12 MHz, por otro de 22,118 MHz. Con este cambio conseguiremos un aumento de 1,8 veces en la velocidad de proceso, podremos aumentar la luminosidad del reloj y reducir su parpadeo. Es importante destacar que si cambiamos el cristal de cuarzo y utilizamos el firmware original, el reloj no funcionará.

Firmware original con el cristal de 22,118 MHz.
Firmware original con el cristal de 22,118 MHz.

El problema está en las comunicaciones entre el chip sensor de temperatura (DS18B20) y el micro-procesador. Como las comunicaciones entre ambos dispositivos se hace con un sólo hilo (1-Wire interface), sus comunicaciones son asíncronas y los tiempos deben ser muy precisos. Aunque el resto del reloj podría funcionar sin problemas, debido a que el DS1302 lleva su propio cristal de cuarzo, con el firmware original se muestra un error en el display…  y el reloj no llega a funcionar.

Las comunicaciones entre el micro-controlador y el chip de reloj DS1302 se realizan mediante 3 hilos:

  1. Reloj (SCLK)
  2. Entrada/Salida de datos (I/O)
  3. Habilitación (CE)
Comunicaciones con DS1302
Comunicaciones con DS1302

Como podemos observar en la imagen anterior, las comunicaciones entre el micro-controlador y el DS1302 pueden realizarse en modo simple (un sólo registro) o en modo burst/ráfaga (todos los registros del sector apuntado). Es importante destacar que los datos se transmiten con el flanco de subida de la señal de reloj, y se reciben con el flanco de bajada. Observar el diagrama de lectura en la imagen anterior, que entre el byte de dirección del registro (TX) y el byte de datos (RX) cambia el punto de muestreo.

Registro de carga del DS1302
Registro de carga del DS1302

El chip DS1302 incorpora un circuito para permitir la carga de su batería de almacenamiento. En caso de utilizar una pila no recargable, no se debería activar el circuito de carga. Como podemos observar en la imagen anterior, es posible conectar el circuito de carga y limitar su corriente máxima, mediante la conexión de un diodo o dos en serie y el valor de la resistencia.

Cable ISP (In-system programming)
Cable ISP (In-system programming)

Para programar el micro-controlador de este kit de reloj, podemos utilizar un interface serie (ISP: In-system programming / ICSP : In-Circuit Serial Programming) . En la imagen anterior podemos ver el conexionado que se debería utilizar entre el programador TL866A y el reloj.

Configuración del Reloj LED
Configuración del Reloj LED

En la imagen anterior se muestra la secuencia de programación del reloj  con el nuevo firmware.