Reloj con control remoto

Desarrollo de un nuevo firmware para el kit EC1204B, reloj LED con esfera rotante. Con esta actualización es posible controlar todas las funciones del reloj a distancia, utilizando un interface serie RS-232, USB o Bluetooth.

Reloj controlado por Bluetooth

Configuración manual del reloj

El reloj FC-209 se puede configurar en modo manual, utilizando los 3 pulsadores que lleva en su parte trasera. A continuación se muestra el diagrama de configuración, válido para este kit (FC-209) como para el reloj de pared, mediante el uso de sus 3 pulsadores.

Diagrama de programación
Diagrama de programación

Tipos de interface serie

Con esta última actualización del firmware (5.1), es posible controlar y programar el reloj a distancia. Lo único que se necesita es conectar un interface serie con el reloj, ya sea por cable (RS-232/USB) o inalámbrico (Bluetooth). En la siguiente imagen se muestran las conexiones necesarias, para conectar un interface RS-232 con el reloj.

Interface RS-232 básico

En la siguiente imagen se muestran las conexiones entre el reloj y el interface serie, utilizando uno de tipo USB y otro Bluetooth
Conexión del interface BT con el reloj

Interface serie Bluetooth

Antes de conectar un interface de tipo Bluetooth con el reloj, es necesario configurar como mínimo su velocidad. El sistema Bluetooth permite la comunicación inalámbrica entre dispositivos, transmitiendo la información a la máxima velocidad que le permita el sistema. El terminal BT receptor dispone de un buffer en el que almacena los datos recibidos, y los entrega al equipo remoto con la velocidad (bps) a la que haya sido programado. En este caso, el reloj espera recibir los datos  a 4800 bps (4800,N,8,1)

Configuración del interface Bluetooth

Configuración remota del reloj

A través del interface serie y mediante una aplicación instalada en un PC o dispositivo móvil, es posible configurar y controlar el reloj en modo remoto. Los datos que espera recibir el reloj son siempre caracteres de texto, facilitando así el uso de cualquier software ‘Terminal’ y tecleando las cadenas de texto en su editor.

Lista de comandos serie (4800,N,8,1)

En caso de recibir información serie, el reloj enviará una respuesta indicando si ha recibido información correcta o ha detectado algún error. Pero siempre hay que tener la precaución de enviar los valores correctos, porque el reloj no analiza los datos que recibe, solamente comprueba los caracteres de control de inicio (color rojo) y los comandos (color verde y negro) que le indican lo que debe hacer con la información que recibe y guarda en memoria (color azul).

Actualizar el firmware del reloj

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 siguiente podemos ver el conexionado que se debería utilizar entre el programador TL866A y el reloj.

Lo ideal sería utilizar un programador que tuviera dicho interface, o desmontar el chip y programarlo fuera.  En caso de que no dispongas de un programador, podrías hacerlo por ICSP con ARDUINO.

El archivo que necesitas para programar este reloj (firmware), lo puedes descargar de forma gratuita desde el siguiente enlace:

J_RPM_v5.1_EC1204B.HEX

Circuitos impresos

PCBWay es un fabricante de circuitos impresos para electrónica, especializado en la fabricación de prototipos de calidad profesional a un precio muy reducido. Por ejemplo, ahora puedes encargar 10 circuitos impresos de 10×10 cms, a doble cara y con serigrafía, por tan sólo 5 dólares.

Logo: PCBWay

https://www.pcbway.es/

 

Construye un Reloj SMD

Fabricación de un Reloj-Cronómetro-Temperatura, encadenando 4 módulos SMD de 7 segmentos con control serie. El controlador de este reloj está construido a partir del micro controlador AT89S52, con encapsulado TQFP de 44 pines (SMD).

Hora en el display

ESQUEMAS

CPU: Reloj SERIE

 

Display: Reloj SERIE

Módulo RTC: DS1302

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)
Módulo RTC: DS1302
Módulo RTC: DS1302

El módulo RTC ya incluye el cristal de cuarzo que necesita el chip DS1302, y una pila de 3V para mantener sus datos cuando falta la alimentación. La conexión entre este módulo y la CPU es de 5 hilos, 2 de la alimentación y 3 de control.

Comunicaciones con DS1302
Comunicaciones con DS1302

Sensor de temperatura: DS18B20

El control de este sensor de temperatura es bidireccional y se realiza mediante un sólo pin, así su encapsulado sólo tiene 3 pines: VCC, GND y Datos.

Sensor: DS18B20
Sensor: DS18B20

El DS18B20 se puede comprar con encapsulado normal, su aspecto es el de un transistor, o ya montado dentro de una cápsula de acero inoxidable. El encapsulado en acero inoxidable permite sumergir el sensor en líquidos, y también es muy aconsejable para utilizarlo en el exterior.

El chip DS18B20 es un sensor temperatura digital,  su resolución es configurable entre 9 y 12 bits. Por defecto, de fábrica está configurado con 12 bits. A máxima resolución, sus últimos 4 bits se corresponden con las lecturas decimales de: 0,5°/ 0,25° / 0,125° / 0,0625°.  Puedes ver más detalles técnicos de este sensor en el siguiente artículo:

Firmware Reloj LED #2 (Temperatura, Hora de Verano)

FUENTE DE ALIMENTACIÓN

Para alimentar este reloj se necesita una fuente de alimentación de 12 VDC, con una corriente mínima de 200 mA. La solución más barata y eficaz, es incluir dentro de la caja del reloj una pequeña fuente de alimentación conmutada de 12V / 400 mA.

Fuente conmutada 12V

CONFIGURACIÓN

Para cambiar los datos de fecha, hora, cronómetro y el resto de parámetros de configuración, se utilizan dos pulsadores:

  1. MODE
  2. PLUS

Para modificar los datos del reloj, seguir el siguiente diagrama de configuración:

Configuración RELOJ SERIE

SELECCIONAR MODO: RELOJ/CRONÓMETRO

El modo de funcionamiento RELOJ/CRONÓMETRO se determina durante la fase de arranque, mientras se está mostrando en el display  un mensaje de texto rotando, en la que se muestra la versión del firmware. Si no se toca ningún pulsador, el modo de funcionamiento será: RELOJ. Para cambiar a modo CRONÓMETRO en cualquier momento, seguir los siguientes pasos:

  • Pulsar los dos botones a la vez: RESET
  • Cuando aparezca el mensaje rotante, mantener pulsado el botón 1 (MODE)

Cronómetro en el display

Una vez que que hayamos entrado en el modo CRONÓMETRO, ya podremos configurar sus parámetros de funcionamiento. Estos valores se guardarán en el chip de memoria del reloj (DS1302), y estos serán los nuevos valores de arranque del cronómetro. Al igual que sucede con los parámetros del reloj, tendremos que tener conectada la pila de tampón en el chip, si no queremos perder todos los datos cuando falte la alimentación.

Detalles de la presentación del Display

Cuando se está funcionando en modo RELOJ, es posible seleccionar entre 3 tipos de presentación. La información que muestra el display se cambia mediante una breve pulsación del botón 2 (PLUS):

  1. Hora / (*) Alterno: Hora y Temperatura
  2. Temperatura
  3. Alterno: Hora, Fecha y Temperatura

(*) El modo alterno de la presentación 1ª, se muestra en caso de que se active la alarma de temperatura en el menú de configuración. En caso contrario, la presentación 1ª mostrará la hora de forma permanente.

Temperatura en el display

Cuando se active el modo de presentación alterno, la temperatura se mostrará de forma síncrona con el reloj, y lo hará cada 5 segundos. Entre el segundo 5 y el 55 de cada minuto, nunca se mostrará en el segundo ‘0’ de cada minuto. La temperatura sólo aparecerá durante un segundo de cada 5, en total 11 veces en cada minuto.

Alarma de Temperatura

La lectura del sensor de Temperatura se realiza cada 10 segundos. De manera que entre dos presentaciones sucesivas de 5 segundos, sólo una de las lecturas será en tiempo real. Cuando está utilizando la presentación 1ª en modo alterno, los segundos acabados en ‘0’ mostrarán la temperatura leída anteriormente, excepto en el segundo ‘0’ de cada minuto que no se muestra. En el caso de que la temperatura sobrepasara alguno de los dos umbrales de alarma, el aviso acústico se realizará cuando el valor acaba de ser leído. Es decir, la alarma de temperatura sólo sonaría en los segundos acabados en ‘5’.

Alarmas horarias

El reloj permite configurar 2 alarmas horarias, sin prioridad entre ellas pero siguiendo este criterio: Cuando una de las dos alarmas se dispara, mientras permanezca en su periodo activo, la otra alarma nunca podrá dispararse. 

Las dos alarmas horarias pueden valer para los 7 días de la semana, o estar limitadas a los 5 días laborables, quedando inactivas todos los Sábados y Domingos. En modo RELOJ, el punto decimal del dígito de la derecha (esquina inferior derecha del display) esta asociado a la alarma horaria. Las alarmas horarias pueden configurarse para que suenen una sola vez (1 minuto si no se silencia antes) o con repeticiones. Las repeticiones se realizarán cada 5 segundos. Para silenciar el sonido de una alarma, realizar una breve pulsación en el botón 2 (PLUS). Si después de sonar una alarma se quieren anular todas sus repeticiones sin cambiar la configuración del reloj, es necesario pulsar los dos botones a la vez (RESET).

Estados posibles del LED indicador de alarma horaria:

  • APAGADO: No existe ninguna alarma horaria en las próximas 24 horas
  • PARPADEANDO: Existe alguna alarma horaria dentro de las próximas 24 horas.
  • FIJO: Alarma ACTIVA, sonando o dentro del periodo de repetición.

Hora: Verano/Invierno

En algunos países existen dos tipos horarios:

  1. Horario estándar, el que corresponde con el huso horario (Horario de invierno).
  2. Horario de verano:

El cambio de hora se aplica una vez al año, haciendo que del horario estándar (o de invierno) se pase al horario de verano. Aunque la primera vez que se aplicó este cambio de hora fue durante la Primera Guerra Mundial, dejo de aplicarse hasta la crisis del petróleo de 1973. El objetivo es el de aprovechar mejor la luz solar, consumiendo menos electricidad.

Cambios horarios (Invierno/Verano)
Cambios horarios (Invierno/Verano)

HORARIO DE VERANO

Último domingo de MARZO:  A las 2:00 AM  se adelanta a las 3:00 AM

… se adelante 1 hora el reloj

HORARIO DE INVIERNO

Último domingo de OCTUBRE: A las 3:00 AM  se atrasa a las 2:00 AM

… se atrasa 1 hora el reloj

FIRMWARE

El firmware de este reloj se programa una vez montado el micro controlador (AT89S52) en su circuito impreso, a través de su interface de programación serie ICSP. Lo ideal sería utilizar un programador que tuviera dicho interface, pero si no lo tienes, puedes hacerlo con ARDUINO.

Programador ICSP con ARDUINO

El archivo que necesitas para programar este reloj (firmware), lo puedes descargar de forma gratuita desde el siguiente enlace:

J_RPM_v1_RELOJ_SERIE.HEX

FABRICAR LA CAJA CON UNA CNC

Archivos para cortar la madera tipo DM de 10 mm, en una CNC, y fabricar la caja de este reloj:

Caja_CNC_RELOJ_.zip

Piezas cortadas para montar la caja

CIRCUITOS IMPRESOS (PCB)

Archivos GERBER para fabricar el PCB de la CPU:

PCB_CPU_RELOJ.zip

PCB: CPU del Reloj SERIE

Archivos GERBER para fabricar el PCB de la CPU (v2):

PCB_CPU2.zip

PCB: CPU del Reloj SERIE (Modificada)

En esta versión se corrige el tamaño de los taladros, se incluye la posibilidad de utilizar dos tipos de conector en sus salidas y se añade una toma auxiliar de +5V

Archivos GERBER para fabricar el PCB del Display ( 1 dígito de 7 segmentos):

PCB_Display_RELOJ.zip

PCB: Display 7 segmentos serie

Si quieres ver los detalles de fabricación, configuración y puesta en marcha de este reloj, echa un vistazo al siguiente video:

 

Reloj LED con 2 alarmas

Kit Reloj LED (FC-209)
Kit Reloj LED (FC-209)

Incorporación de una segunda alarma horaria, en el firmware para el reloj LED de esfera rotante. Esta es la versión v5c para el kit FC-209 y la v6C para el reloj de pared. En esta versión también se cambia el menú de configuración, con el fin de facilitar el ajuste de las dos alarmas horarias. Antes estaba dentro del menú de configuración, pero este menú ha ido creciendo de tamaño poco a poco a medida que se han ido incorporando  nuevas funciones al reloj. Al final  se hacía muy incómodo cambiar la hora de la alarma, ya que era necesario pasar a través de todos los parámetros de configuración del reloj.

A continuación se muestran un diagrama, válido tanto para el kit de reloj FC-209 como para el reloj de pared, una con la versión de los textos en español y la otra en inglés.

Diagrama de programación
Diagrama de programación
Programming in English
Programming in English

Gestión de las 2 alarmas horarias

Con esta versión se podrían configurar 2 alarmas horarias, sin prioridad entre ellas pero siguiendo este criterio:  Cuando una de las dos alarmas se dispara, mientras permanezca en su periodo activo, la otra alarma nunca podrá dispararse. (ver el diagrama que se muestra a continuación)

Gestión de alarmas
Gestión de alarmas

 

 

Programador ICSP con ARDUINO

Construcción de un programador serie (ICSP) utilizando Arduino. Si no disponemos de un programador, esta es la solución más barata. Sin embargo, tanto el código de Arduino como el software de programación, son específicos para programar el micro-controlador AT89S51/AT89S52… y no sirven para programar cualquier otro modelo.

AT89S52
AT89S52

FICHEROS

En la página del autor del proyecto: TIKTAK’S PROJECTS , encontrarás además de la información de este proyecto, el link de acceso directo a la descarga de los archivos que necesitas. El fichero que debes cargar a tu Arduino para que funcione como programador, y el programa que necesitarás para exportar el archivo hexadecimal (firmware) hacia el micro-controlador AT89S51/AT89S52.

INFORMACIÓN

He creído conveniente incorporar esta información en el blog, con el fin de ampliar un poco más los detalles de funcionamiento de este programador, y también porque en este canal tenéis otros proyectos en los que se utiliza el mismo tipo de micro-controlador. Si eres aficionado a la electrónica y no dispones de un programador, este montaje te podría ser de mucha utilidad.

Montaje ICSP
Montaje ICSP

Si quieres fabricarte un programador ICSP (In-Circuit Serial Programming) , solo necesitarás una placa de Arduino -no importa el modelo- y montar el circuito que se muestra a continuación:

Esquema ICSP
Esquema ICSP

El ejemplo siguiente muestra cómo puedes programar un circuito, en el que ya existe una entrada para su programación en serie:

  •  ISP (In-system programming) 
  • ICSP (In-Circuit Serial Programming)
Programador ICSP
Programador ICSP

INCONVENIENTES

Existen algunas limitaciones y desventajas si comparamos este programador con otro de tipo convencional. La primera y más importante, es que el software NO permite verificar la integridad de lo que se ha grabado. Si existiera algún error durante la escritura, el software no lo detectaría. En estos casos, lo normal es que el dispositivo programado no llegara a funcionar, pero dependiendo del tipo de error, podría funcionar de manera defectuosa.

La segunda no es tan importante, pero ha tardado 4 minutos en programar los 6.813 bytes del fichero con el que he realizado las pruebas. Con un programador convencional  el proceso completo: borrado, escritura y comprobación, se realiza en algo menos de 13 segundos.

Termómetro digital para fluidos

Utilizar el kit de reloj LED FC-209, como medidor de temperatura para fluidos. Para realizar esta modificación, sólo tenemos que sustituir el sensor de temperatura DS18B20 por otro del mismo tipo, pero con encapsulado en acero inoxidable. DS18B20A pesar de que el nuevo sensor que instalemos sea del mismo modelo que el original, es muy posible que no funcione con el firmware que viene cargado al comprar el kit… y será necesario actualizarlo. Si cargamos la versión 5 del firmware (disponible en el blog), además de disponer de un termómetro para fluidos, también dispondremos de las funciones de reloj con cambio automático de hora, despertador, cronómetro y alarmas.

Sensor: DS18B20 (pineado)
Sensor: DS18B20 (pineado)

Es muy importante no equivocarse al conectar el sensor de temperatura, porque si lo alimentamos al revés nos quedaremos sin sensor. Si no viene información técnica con la correspondencia entre los colores del cable y los pines de conexión del sensor, tendremos que averiguar su correspondencia haciendo medidas comparativas con otro sensor del  mismo modelo.

La versión 5 del firmware, instalada en este montaje, puedes descargarla de forma gratuita desde el siguiente enlace:

J_RPM_v5_EC1204B.HEX

Configuración del Reloj LED (v5)
Configuración del Reloj LED (v5)

Los menús de configuración y manejo de este Termómetro-Reloj, los puedes ver en la imagen anterior.

Reloj LED de pared

Kit Reloj LED (FC-209)
Kit Reloj LED (FC-209)

Partiendo del desarrollo del kit de reloj de esfera rotante FC-209, fabricaremos un reloj de mayor tamaño para poder colgarlo en la pared. Los pulsadores irán situados en el frontal de la esfera, y así podremos utilizarlo en modo cronómetro… muy útil para temporizar los ejercicios en un gimnasio, utilizarlo como temporizador en la cocina, etc. Este reloj dispondrá de las mismas funciones que tenía la última revisión del firmware (v5), pero en esta versión (v6) vamos a utilizar un cristal de cuarzo de frecuencia más alta (con el fin de mejorar la velocidad de refresco) y también sustituiremos la pila de botón por una pequeña batería recargable.

Registro de carga del DS1302
Registro de carga del DS1302

La recarga de esta batería será permanente, siempre que esté alimentado el reloj, y la controlará el propio chip de reloj DS1302.

La versión 6 del firmware, se puede descargar de forma gratuita desde el siguiente enlace: J_RPM_v6_EC1204B.HEX

En este reloj, el display de 4 dígitos BCD lo construimos con diodos LED. Montaremos 2 diodos por cada segmento (se podrían montar más), de los 7 que se compone un dígito BCD. Al conectar 2 diodos en serie de alto brillo, necesitaremos una tensión de alimentación superior a los 5V que disponemos para alimentar el reloj. Con el fin de poder adaptar este circuito con cualquier configuración que utilicemos para construir los dígitos (número de diodos en serie por segmento), utilizaremos el módulo elevador de tensión MT3608.

Esquema MT3608
Esquema MT3608

La tensión de salida de este módulo la utilizaremos para alimentar los 4 dígitos del reloj. Mediante el potenciómetro de ajuste de tensión, podremos adaptar la tensión de alimentación  y modificar el brillo de los 4 dígitos centrales.

Esquema del Reloj (v6)
Esquema del Reloj (v6)

En este esquema se muestran los componentes que irán instalados en la placa de circuito impreso. Tanto los diodos LED como sus resistencias limitadoras, irán instalados en una placa de plástico.

Ensamblado de los diodos LED
Ensamblado de los diodos LED

Con el fin de facilitar la realización del circuito impreso, no he utilizado un programa de diseño PCB, simplemente lo he dibujado utilizando el software ‘Paint’ que incorpora Windows en todos sus sistemas operativos. El circuito impreso de la imagen siguiente, está a escala DIN-A4. Puede imprimirse directamente en papel, o utilizar una lámina transparente (especial para impresoras láser) para conseguir un fotolito a escala.

Fotolito del Reloj LED
Fotolito del Reloj LED

Siguiendo el esquema de conexionado que se muestra en la imagen siguiente, podremos terminar el montaje. Como la tensión de alimentación de este reloj es de 5V, podremos utilizar cualquier cargador que tengamos para alimentar dispositivos móviles. El alimentador de 5V podría instalarse en el interior… o fuera con el fin de poder utilizar este reloj con baterías (Power Bank).

Montaje: Reloj 15x15
Montaje: Reloj 15×15

El modo de funcionamiento y ajustes de este reloj (v6), es idéntico al que se mostró en la última versión del firmware (v5):

Configuración del Reloj LED (v5)
Configuración del Reloj LED (v5)

En la primera parte del video se muestra el diseño del reloj, la construcción del PCB y el montaje de todos los componentes:

En la segunda parte del video se muestra el proceso de fabricación de la carcasa, ensamblado y grabados con la CNC (fresadora de control numérico) de la carátula frontal:

 

Cronómetro LED #5 (FC-209)

Utilizando los mismos componentes  del kit de reloj FC-209 (hardware), podemos convertir el reloj en un cronómetro de precisión… sólo tenemos que reprogramar el micro-controlador AT89S52. Si programamos en el cronómetro las funciones de cuenta hacia delante, cuenta atrás y auto-arranque, podríamos utilizar el cronómetro como marcador de tiempo en eventos deportivos.

Cronómetro de 24 segundos
Cronómetro de 24 segundos

Haciendo unas pequeñas modificaciones en el hardware, sería posible convertir este pequeño reloj en un marcador de gran tamaño, y utilizarlo en un recinto deportivo. Después de sopesar las posibles opciones, decidí incluir la funcionalidad del cronómetro dentro de la última versión del firmware (v4). De esta manera no será necesario sustituir el micro-controlador cuando queramos utilizar este kit de reloj (FC-209) como cronómetro. La versión 5 del firmware, se puede descargar de forma gratuita desde el siguiente enlace: J_RPM_v5_EC1204B.HEX

Como este reloj sólo dispone de dos pulsadores para realizar maniobras, ya que el tercer pulsador es el del Reset del micro-controlador, es necesario definir cuál será su modo de funcionamiento (Reloj/Cronómetro) en la fase de arranque, y mantenerlo fijo hasta un nuevo reinicio. Como la función principal es la de Reloj-Temperatura, definimos este modo como ‘arranque por defecto’. Es decir, si no tocamos ningún pulsador en la fase de conexión, funcionará como Reloj-Temperatura. Para cambiar de modo reloj a cronómetro, realizaremos los siguientes pasos:

  • Pulsaremos el botón ‘RESET’
  • Cuando aparezca el mensaje rotante, mantendremos pulsado el botón ‘MODE’
Configuración del Reloj LED (v5)
Configuración del Reloj LED (v5)

Una vez que que hayamos entrado en el modo ‘cronómetro’, ya podremos configurar sus parámetros de funcionamiento. Estos valores se guardarán en el chip de memoria del reloj (DS1302), y estos serán los nuevos valores de arranque del cronómetro. Al igual que sucede con los parámetros del reloj, tendremos que tener conectada la pila de ‘tampón’ en el chip, si no queremos perder todos los datos cuando falte la alimentación.

Firmware Reloj #4 (Compatible FC-209)

Kit Reloj LED (FC-209)
Kit Reloj LED (FC-209)

La versión 4 del firmware es totalmente compatible con el kit de reloj FC-209 (EC1204B). El funcionamiento y prestaciones son las mismas que las de la versión 3, pero en este caso se ha deshabilitado el límite máximo de temperatura. Como el sensor DS18B20 podría mostrar temperaturas de hasta 125ºC, podríamos sustituir el sensor de temperatura interno –coloreado en amarillo– por otro prolongado y con encapsulado en acero inoxidable. Así sería posible utilizar este reloj como termómetro, para medir con precisión la temperatura de fluidos, calefactores, circuitos electrónicos, frigoríficos, etc.

La versión 4 del firmware, se puede descargar de forma gratuita desde el siguiente enlace: J_RPM_v4_EC1204B.HEX

Sensor de temperatura: DS18B20
Sensor de temperatura: DS18B20

Al sustituir el sensor de temperatura de la placa por otro externo, podremos utilizar este reloj como termómetro para medir temperaturas ambientes y además objetos sólidos o líquidos,  comprendidas entre -10 y +125ºC. Solo tenemos que  fijar el modo de presentación Temperatura,  mediante una breve pulsación del botón [PLUS]. Este reloj dispone de 3 modos de presentación:

Hora  >>> [PLUS] >>> Tempertura >>> [PLUS] >>> Fecha+Temperatura 

Las funcionalidades de la versión 4 son idénticas a la de la versión 3. A continuación se muestra un diagrama con la secuencia de programación de todos los parámetros, válido para  ambas versiones.

Configuración del Reloj LED (v3)
Configuración del Reloj LED (v3-4)

Firmware Reloj LED #3 (Brillo nocturno)

En la versión 3 del firmware del Reloj LED, se incluye la posibilidad de reducir el brillo del display de forma automática. Este cambio se realiza dentro de un horario programable, no mediante un sensor de luz. La hora de inicio y fin de esta reducción de brillo, está asociada a las horas de inicio y fin de la activación acústica de las señales horarias. Con esta reducción de brillo se evita la molestia que podría ocasionar un exceso de luz, cuando se utiliza el reloj como despertador en una habitación oscura, y además se mejora la autonomía de la batería (se reduce el consumo).

La versión 3 del firmware, se puede descargar de forma gratuita desde el siguiente enlace:

J_RPM_v3_EC1204B.HEX

Configuración del Reloj LED (v3)
Configuración del Reloj LED (v3)

Este es el nuevo diagrama para la programación del Reloj LED, utilizando la versión 3 del firmware.

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.