Programar sistema horario 12/24 (assembler)

Programación de un reloj LED, para que pueda mostrar la hora en cualquier formato (12h-24h). Esta modificación se realiza en un ‘Reloj-Fecha-Cronómetro-Temperatura‘ con 4 dígitos de 7 segmentos LED, de control serie. El controlador de este reloj está construido a partir del microprocesaror AT89S52, con encapsulado de 44 pines (SMD).

Sistema horario

El sistema horario de 24 horas es una convención de medición del tiempo, en la que el día se contabiliza de medianoche a medianoche. Con formato de 24 horas, las horas se empiezan a contar a partir de la medianoche, y se presenta con los números comprendidos entre el 0 y 23.

Sistema horario de 12/24 horas

El sistema de 24 horas es el más utilizado en la actualidad, y el sistema de 12 horas se utiliza principalmente para la comunicación oral, porque es más intuitivo. A pesar  de que el sistema de 24 horas es el más usado en comunicaciones escritas, en algunos países lo denominan como horario militar o astronómico, y prefieren realizar la presentación de la hora utilizando el sistema tradicional de 12 horas.

Esta actualización se realiza en el Reloj SMD que mostré anteriormente:

Construye un Reloj SMD

Planteamiento al programar el reloj

Cuando se programa el firmware de un reloj, es importante saber si el display de presentación es multiplexado o no, así como el valor de tiempo mínimo a mostrar.

  • Cuando el display es multiplexado, el microprocesador tiene que enviar la información con una cadencia mucho más rápida,  siempre superior a la persistencia del ojo humano. Si se quiere evitar el efecto de parpadeo, la frecuencia de refresco del display debería ser como mínimo de 50 Hz.
  • La cadencia de lectura de la información horaria debe ser igual o superior al valor del tiempo mínimo que se quiera mostrar en el display. Si el reloj muestra décimas de segundos, el microprocesador tendría que leer la información del chip RTC con una cadencia mínima de 1/10 segundos, cada 100 mSeg.

Funcionamiento del reloj

A pesar de que el Reloj SMD no es multiplexado, porque la presentación se realiza enviando los datos en serie (registro de desplazamiento), lo he programado con una frecuencia de refresco muy alta.

CPU: Reloj SERIE

 

Display: Reloj SERIE

Esto lo hice así, porque utilicé la estructura de programa del reloj de esfera rotante FC-209, el cuál si era multiplexado.

Reloj LED con 2 alarmas

Antes de presentar la hora en el display por primera vez, el microprocesador tiene que leer la información del chip RTC (DS1302). Y si el reloj muestra segundos, la lectura se debería hacer que como mínimo una vez por segundo.

Frecuencia de refresco del display

Aprovechando las prestaciones y velocidad del microprocesador que he utilizado, decidí insertar la rutina de lectura del chip DS1302 (RTC) dentro de la rutina de refresco del display. Como se puede ver en la gráfica anterior,  la lectura se está haciendo con una cadencia de 926 veces por segundo.

Actualización del firmware

La nueva actualización del Reloj SMD, la puedes descargar de forma gratuita desde el siguiente enlace:

J_RPM_v2_RELOJ_SERIE.HEX

Con esta actualización es posible configurar el sistema de presentación horaria en el display, pudiendo elegir el sistema de 12/24 horas.  Para incorporar esta función, he utilizado el método más sencillo de hacerlo: Internamente todo funciona en modo 24 horas, y dependiendo del modo en el que se deba mostrar la hora, el programa pasará o no a través de las rutinas de conversión a formato de 12 horas. Y esto lo hará sólo  antes de enviar la hora al display, porque los menús de configuración siempre mostrarán la hora utilizando el formato de 24 horas. Así no será necesario modificar los menús de configuración, ni cambiar el sistema horario del chip DS1302 (RTC). A continuación os muestro el código que he añadido en esta actualización.

Rutinas de programación en assembler

Funcionamiento de la subrutina: ValAB

Funcionamiento de la rutina Val_AB

Menús de configuración

Los menús de configuración de esta versión (v2), no cambian con respecto a la  versión anterior (v1). En esta versión aparece un nuevo menú, y es para configurar el sistema de presentación horaria (12/24) del reloj.

Menús de configuración del reloj

 

Nuevo PCB + Sorteo

Diseño de un nuevo circuito impreso con 2 dígitos de 7 segmentos, LED SMD, incluyendo los dos puntos separadores y el punto decimal. Este circuito impreso es compatible con el anterior de un sólo dígito que utilicé en el ‘Reloj SMD’. Así se pueden utilizar ambas placas en el mismo montaje y construir cualquier tipo de display, sin la necesidad de tener que pegar más diodos en el PCB.

Construye un Reloj SMD

Reloj serie con el nuevo PCB

Display de 4 dígitos

El display del último reloj que hice, estaba construido con 4 circuitos impresos  de un dígito de 7 segmentos. Cada uno del los dígitos permite el control de encendido de un punto decimal, el cuál se incluye en cada PCB. Sin embargo, este reloj utiliza además del punto decimal un separador central, formado por dos puntos LED. Como es lógico, para poder controlar 2 signos es necesario utilizar la salida del control decimal de 2 dígitos. Por otra parte, en los PCBs no estaba contemplada la posibilidad de montar los dos puntos separadores. La solución fue la de colocar 2 LED entre las dos placas centrales, pegando uno en cada tarjeta.

Pegar LED en el display

Ambos LED van conectados en serie. El ánodo de esta serie, como es el punto común, va conectado con la alimentación al +12V.

Cableado LED

El cátodo de la serie lo tuve que cablear hasta la salida de control del punto decimal del dígito anterior (el punto decimal del dígito de la izquierda no se utiliza en este reloj).

Nuevo PCB

A pesar de que la solución que tomé es válida, no queda muy elegante hacer semejante ‘engendro’ en un diseño nuevo. Al final decidí hacer otro circuito impreso, con los dos puntos además del punto decimal, y que fuera totalmente compatible con los circuitos impresos que ya tenía fabricados.

PCB: 2 dígitos de 7 segmentos

Este nuevo circuito impreso contiene 2 dígitos, y los dos puntos LED están montados entre ambos dígitos. Este circuito impreso va montado en el centro del display del reloj de 4 dígitos, ocupando los 2 dígitos centrales; y a cada lado va montada otra placa de un sólo dígito.

Nuevo display del Reloj

¿Dónde fabricar el PCB?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos, pero no en todas podemos conseguir pequeñas tiradas a buen precio. Por suerte, ahora disponemos de Internet y es mucho más fácil que antes. Podemos buscar empresas en cualquier parte del mundo, y es más fácil encontrar un fabricante que haga nuestros prototipos (PCB) a buen precio. Por suerte, se puso en contacto conmigo el fabricante de circuitos impresos PCBWay, preguntando si quería hacer una colaboración con ellos. Lo primero que hice es visitar su página Web, y me pareció muy interesante su manera de trabajar.

Proyectos compartidos en PCBWay

https://www.pcbway.com/project/shareproject/

Esta empresa, aparte de ser grande y tener muy buenos precios, dispone de un apartado en su Web para alojar los diseños y poder compartirlos. Creo que la idea es muy buena para ambas partes. El diseñador recibe un porcentaje de las ventas que se realicen de sus diseños y el fabricante aumenta sus ventas.

Link of my shared project: 
PCB from PCBWay

Lote PCBs

Sorteo por cortesía de: PCBWay

Sorteo patrocinado por PCBWay

El sorteo se realizará el próximo día 23 de Diciembre de 2017, y habrá 3 ganadores. Cada ganador recibirá un cupón de regalo para mandar a fabricar sus propios PCB’s. Los circuitos impresos podrán ser de una o dos caras, y con un tamaño máximo de 100×100 milímetros… con transporte incluido.

PARTICIPANTES

El sorteo se realizará entre los suscriptores de este canal, que dejen un comentario en la línea de comentarios del video (YouTube). Si quieres participar, no te olvides de dejar sin marcar en tu cuenta de YouTube la casilla: ‘Mantener todas mis suscripciones en privado’ (por lo menos el día 23 de Diciembre).

Logo: PCBWay
https://www.pcbway.com/

CIRCUITOS IMPRESOS (PCB)

Archivos GERBER para fabricar este nuevo PCB, con 2 dígitos de 7 segmentos:

PCB_Display_2x7.zip