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.

Construye un Reloj LED – EC1204B

Montaje de un reloj LED con esfera rotante. Este reloj se puede comprar en kit, circuito impreso y componentes, y es muy interesante para realizar prácticas de programación con micro-controladores. Como el micro-controlador ya se compra programado, también es un kit muy interesante para principiantes en electrónica. En este video se muestra el modo de alimentar el reloj con una batería reciclada de un PC. Para cargar la batería se utiliza un módulo de carga con protección (MT4056) y un sencillo módulo DC-DC para elevar la tensión de la batería hasta los 5 voltios que necesita el reloj. Para albergar todo el conjunto, se fabrica una caja a medida.

MONTAJE - Reloj LED
MONTAJE – Reloj LED

Para obtener una tensión estabilizada de 5V a partir de una batería de 3,7V, utilizamos un pequeño circuito conversor DC-DC de alta eficiencia.

Convertidor DC-DC (5V)
Convertidor DC-DC (5V)

El  control de la PFM es similar al control de PWM, porque ambos crean un tren de impulsos rectangulares para determinar la tensión de salida del regulador. Sin embargo, en lugar de alterar el ciclo de trabajo del tren de impulsos a una frecuencia fija para establecer el voltaje de salida, el PFM altera la frecuencia del tren de impulsos con un ciclo de trabajo fijo. Durante el funcionamiento del PFM, la potencia de salida es proporcional a la frecuencia media del tren de impulsos. El convertidor sólo funciona cuando la tensión de salida cae por debajo de la tensión de salida ajustada, en base a la medida del circuito de realimentación. El controlador aumenta la frecuencia de conmutación del convertidor, hasta conseguir que el voltaje de salida alcance un valor entre la tensión de salida ajustada y entre un 0,8 a 1,5 por ciento por encima. La ventaja del control PFM es la eficiencia significativamente mejorada con cargas bajas, porque hay períodos en los que los MOSFET’s cambian lentamente o nada en absoluto, reduciendo las pérdidas de conmutación. En algunos dispositivos, cuando se omiten los impulsos, el regulador está apagado por completo, reduciendo aún más su eficiencia.

Esquema del reloj: EC1204B
Esquema del reloj: EC1204B

Como podemos apreciar en el esquema del reloj, el micro-procesador se puede programar utilizando un interface serie (ISP).

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

También podemos observar que en este módulo de reloj se incluye un sensor de temperatura, controlado por un sólo hilo (DS1820), muy interesante para realizar prácticas con micro-controladores.

Esquema interno: DS1302
Esquema interno: DS1302

El corazón de este módulo (EC1204B) es el chip DS1302, encargado de controlar la cuenta del tiempo (fecha y hora), además de almacenar los datos de sus alarmas (hora y temperaturas) dentro de su memoria RAM. Este pequeño chip (DS1302) necesita tener conectado una pequeña pila, si queremos mantener en marcha el reloj y salvar los datos de configuración cada vez que desconectamos la alimentación del módulo.

DS1302 - Transferencia de datos
DS1302 – Transferencia de datos

Aunque en el video comento que las comunicaciones entre el DS1302 y el micro-controlador se realiza con dos hilos, en realidad son necesarios 3. Además de los dos hilos I/O y SCLK, la entrada de habilitación (CE) del chip DS1302 tiene una doble función, y no puede conectarse directamente a nivel alto como en otros dispositivos. El pin CE, como podemos observar en la imagen anterior, controla el inicio y fin del paquete de datos, y es necesario su control para poder enviar cadenas de datos  con longitud variable (Burst mode).