El Reloj de Tiempo Real (Real Time Clock – RTC) DS1337C de Dallas Semiconductor nos ofrece características muy interesantes que lo convierten en un dispositivo muy particular. Además de sus dos alarmas y de mantener las características básicas que transformaron al DS1307 en un éxito, este RTC ofrece la ventaja de no depender de ningún cristal ni resonador externo. La ventaja de tener integrado todo el conjunto bajo el mismo encapsulado elimina cualquier posibilidad de variación horaria más allá de las especificadas por el fabricante. Sin duda alguna, una solución al clásico problema de cualquier RTC. Esto y mucho más en este artículo.
La aparición en el mercado de los RTC trajo un cúmulo de soluciones muy importantes a los diseñadores que necesitaban “medir el tiempo” con la mayor exactitud posible. Una de las soluciones más populares fue el DS1307, ubicado dentro de una amplia lista de dispositivos que ofrecían, además, la ventaja de conectarse a cualquier microcontrolador mediante el popular bus I2C. Sin embargo, uno de los problemas habituales de estos componentes radicaba (y radica porque se continúan utilizando a diario) en las variaciones de la indicación horaria como resultado de la utilización de cristales resonadores poco apropiados. Es decir, entre varios cristales de una misma frecuencia (32,768Khz), los resultados pueden ser muy diferentes. A esto, si recordamos lo visto en el artículo del DS1307, se le suma la acertada elección del montaje del cristal teniendo en cuenta el largo de los pines de conexión, la puesta (o no) a GND del cuerpo del cristal y tantos “detalles” que acumulados entre sí deforman la medición horaria en valores importantes. Por ejemplo, dos cristales iguales, pero de distinto fabricante, pueden “atrasar” diferentes cantidades de tiempo en una semana. Por el contrario, dos “montajes” diferentes pueden provocar distintos “adelantos” en el mismo lapso de tiempo.
El DS1337 de Dallas Semiconductor no está exento de este problema y al igual que su antecesor, el DS1307, necesita de atenciones especiales en lo que al montaje mecánico del cristal se refiere. Sin embargo, existe una versión que nos ofrece una solución a todos estos inconvenientes, el DS1337C. Si observamos con atención la hoja de datos, que el fabricante nos ofrece sobre el DS1337, encontraremos esta variante del componente que ya trae incorporado en su encapsulado al cristal. De este modo, los problemas relacionados con las variaciones horarias que siempre ocasionaba el montaje mecánico y eléctrico del cristal, ya no serán un problema. De todos modos, no estamos hablando de que esta construcción lo transforma en un reloj de precisión y exactitud comparable a un reloj atómico sino que el diseñador tendrá una preocupación menos a la hora de considerar las precauciones a tomar mientras diseña el PCB que requiere la utilización de un RTC.
Como en cualquier sistema que trabaja a temperatura ambiente, las variaciones son inevitables y se encuentran comprendidas entre las 10 ppm (partes por millón) y esto equivale a valores cercanos a un minuto (o menos) en un mes. De todas maneras, temperaturas cercanas a 25°C proporcionan errores mínimos. En la Nota de Aplicación N°58 de Dallas Semiconductor (Maxim) (que te dejamos al pié del artículo) encontrarás la bibliografía necesaria para saber si estos dispositivos se ajustan a las necesidades de tu aplicación. Por supuesto, la precisión que se gana en el tiempo en cierto modo “se paga” con un encapsulado de mayor tamaño, aunque esta idea es relativa ya que si observamos el resultado con atención, un encapsulado estándar más el cristal, ocuparían el mismo espacio físico que el DS1337C. Otra diferencia importante, que posee este modelo de RTC respecto al DS1307, es la ausencia de conexión a una batería de respaldo para mantener el reloj funcionando al momento de desconectar la energía. Sin embargo, la tensión de alimentación “necesaria” del DS1337 permite “jugar” con esta posibilidad y mediante un sencillo arreglo de hardware en la conexión de alimentación (por supuesto, con una batería de respaldo), podemos mantener nuestro sistema ajustado sin preocuparnos por la falta de energía. Observa:
Las especificaciones del DS1337C al respecto nos muestran que con una tensión comprendida entre 1,8Volts y 5,5Volts, el dispositivo es funcional y si la tensión desciende por debajo del umbral mínimo de tensión (1,8Volts) hasta 1,3Volts, el DS1337C será capaz de seguir funcionando y manteniendo ajustada su hora. Hay que aclarar que para este último punto, se presenta la imposibilidad de comunicar vía I2C con el RTC y por debajo de 1,3Volts deja de funcionar por completo. En este caso, todos los registros se reinician al momento de la re-conexión a la energía y el reloj deberá ser programado. El diagrama superior nos ofrece una muestra de la manera en que podemos asegurar el funcionamiento continuo de nuestro RTC con la aplicación de sólo dos pequeños diodos 1N4148 y una batería del tipo CR2032. Por otro lado, tal como encontrábamos en el DS1307, la salida SQW nos ofrece la posibilidad de entregarnos una referencia de funcionamiento del oscilador. Esto se programa mediante los registros del DS1337C y podemos utilizar esta salida como indicador de segundero. Una segunda función fue agregada a este pin, en este componente, y se trata de una salida de alarma, la identificada como N°2 (INTB). Por su parte, la alarma N°1 posee su pin de salida independiente y se la denomina INTA. Ambas salidas son Open Drain, en consecuencia necesitan una resistencia Pull-Up y trabajan como activas en estado bajo. Es decir, cuando una alarma se inicializa, el pin se conecta a GND. Por este motivo, lo usual para este tipo de conexiones son salidas activas con transistores PNP como veremos en el circuito final de nuestro desarrollo.
Para nuestro ejemplo, como se observa en la imagen superior, no hemos montado un sistema de respaldo de energía ya que no es una construcción definitiva (es solo explicativa) y además, esa carencia nos resulta útil para demostrar como todos los registros se pasan a un valor cero al momento de la desconexión de la energía. Por otro lado, vale recordar que el modo de funcionamiento de este circuito integrado es igual al del DS1307 en cuanto a la manera de almacenar/leer los datos desde los registros, por lo tanto, puedes consultar algunos detalles que aquí no te especifiquemos en el artículo correspondiente a ese RTC. Mientras tanto, aquí te mostramos y explicamos las partes fundamentales del montaje ensayado y haremos hincapié en resaltar algo fundamental. Te ofrecemos una orientación inicial de cómo utilizar el dispositivo, tu trabajo será mejorarlo y optimizarlo para tu aplicación. Si nosotros hubiéramos construido una aplicación “dedicada”, igual hubieras tenido el trabajo de reformarla a tus necesidades. De este modo, te ofrecemos la base y tú luego nos deslumbrarás con las aplicaciones finales. Observa; esto es lo que haremos:
El circuito necesario para concretar esta construcción es muy sencillo, se basa en un PIC 18F25K20 y el programa está realizado con el software libre Amicus. Como se muestra en el video utilizaremos cuatro pulsadores para realizar los ajustes del RTC, del mismo modo que lo hacen los radio-relojes convencionales: un pulsador nos introduce en el menú de programación de la hora y la fecha, otro nos lleva a la programación de la alarma que mostraremos y dos botones estarán dedicados a subir y bajar las unidades hasta alcanzar la fecha y hora deseada, tanto para el funcionamiento normal, como para la alarma. El modo de ajuste es muy sencillo y te lo explicamos de manera clara y práctica en el video final. Lo que debemos recordarte y aclararte es que el software está realizado de una manera simple y sin optimizar. Esto significa que está realizado con instrucciones sencillas y quizás pueda parecer un poco extenso ya que se reiteran las estructuras de las rutinas para programar cada registro dentro del DS1337C. El motivo de esto es una reiteración de lo explicado antes. Tú optimizarás todo a tu necesidad. Además, realizarlo y mostrarlo de la manera en que te lo ofrecemos, te ayudará a comprender la secuencia en que se realizan las lecturas y escrituras sobre los registros, como así también la presentación de la información sobre el LCD, actualizada en todo momento.
El circuito, como te mencionamos antes, es el que utilizamos en nuestros montajes habituales y no supone complicación alguna, más allá del montaje del DS1337C sobre un PCB adaptador para trabajar de manera cómoda en el protoboard. De todos modos, la utilización de un DS1337 convencional en encapsulado DIP puede ayudarte a resolver este problema, aunque podrías tener inconvenientes con la exactitud del reloj, ya que estarás obligado a utilizar un cristal externo. Como puedes ver, el DS1337C es un circuito integrado muy sencillo de utilizar y te permitirá realizar cualquier tipo de contadores de tiempo con elaborados sistemas de alarma. Podrás hacer desde temporizadores industriales para control de procesos, hasta un reloj despertador convencional. (No tan convencional, será único en el mundo: Estará hecho por ti). Si decides programar las dos alarmas tendrás acceso a un controlador de puesta en marcha y detención automática de cualquier evento que requiera un funcionamiento desatendido. Así como programas el horno microondas para que al levantarte el desayuno esté listo, podrás hacer lo mismo con cualquier proceso similar. Desde apagar y encender luces durante la noche, en horarios programables, hasta decidir en que momentos harás funcionar las luces de un comercio luego de cerrar por la tarde. El DS1337C es un circuito que puede ayudarte en muchos desarrollos donde al tiempo lo manejas tú.