Reloj en tiempo real DS3231 con comunicaciones I2C

Reloj en tiempo real DS3231 con comunicaciones I2C

Reloj en tiempo real DS3231 con comunicaciones I2C

Un dispositivo microcontrolado es capaz de realizar un control del tiempo muy preciso, especialmente a escala humana pero, mantenerlo «en hora» y por tanto funcionando, es muy costoso en términos de consumo, así que es habitual disponer en un circuito que necesite la hora real un componente capaz de realizar esta tarea de manera autónoma y que se mantenga con un consumo muy bajo para poder alimentarlo con una pequeña batería durante mucho tiempo. A estos dispositivos se los denomina relojes en tiempo real (RTC, por las siglas de Real-Time Clock)

El funcionamiento externo, es decir, de cara al usuario (o al circuito) de los relojes en tiempo real el muy similar. Si además comparten comunicaciones, I2C es popular entre las populares, se puede generalizar bastante a la hora de describir su explotación.

Al igual que todos comparten un esquema de circuito de aplicación típica o una comunicación similar, también comparten un par de (relativos) inconvenientes. Por una parte, su precisión suele ser moderada, adecuada para un uso a escala humana pero que requiere calibración para mantenerse en unos valores aceptables. Un valor característico suele estar entorno a las ±5 partes por millón (ppm) que, muy aproximadamente, puede corresponder con ±5 minutos al año; admisible si se establece un protocolo de sincronización. El inconveniente es que la precisión desciende bruscamente en función de las variaciones de temperatura y no es raro que se multiplique por 10 (o más) en determinadas circunstancias.

Como muchos otros componentes, los relojes en tiempo real necesitan un oscilador con el que funcionar (responsable de la precisión de la que antes hablaba) No es que disponer de un oscilador sea un inconveniente en sí mismo pero será otro componente que añadir al circuito que necesitará su espacio o, alternativamente, otro cálculo que hacer para mantener todo el circuito con cierta frecuencia de base.

Hay otros inconvenientes más obvios, como el consumo y por tanto la duración de la batería que mantiene la hora y la configuración, que por ser algo más universal (aunque irregularmente distribuido, lógicamente) suele considerarse en el diseño de los dispositivos que incorporan RTC y no es un problema específico.

El reloj en tiempo real que describo en este artículo, el DS3231, resuelve la necesidad de un oscilador externo y los inconvenientes de precisión usando uno interno y la tecnología de oscilador de cristal con compensación de temperatura (TCXO, por temperature-compensated crystal oscillator) Una tabla almacenada en la memoria interna del componente determina cómo compensar la hora en función de la temperatura y del tiempo de funcionamiento (la edad) del dispositivo. Con esta técnica, según la hoja de datos, se consigue una precisión de ±3.5 ppm en el rango de temperatura industrial, de -40°C a +85°C, o de ±2 ppm en el rango de temperatura comercial.

Normalmente, los relojes en tiempo real suelen incluir una pequeña memoria en la que almacenar cosas comunes en su uso, como un par de horas de alarma. Tampoco es raro necesitar más memoria para otras aplicaciones horarias algo más específicas, por lo que se suele añadir en las aplicaciones típicas o incluso internamente en algunas versiones de los integrados. Por ejemplo, el DS3232 es igual que el DS3231 que nos ocupa pero con 236 bytes SRAM que también se mantienen, como la fecha y la hora, con la batería de respaldo del dispositivo.

Decía al principio que la comunicación entre circuitos (I2C, por Inter-Integrated Circuit) es de las más populares y más frecuentemente presentes, aunque también es cierto que en determinados montajes las comunicaciones SPI (Serial Peripheral Interface) pueden ser mejor alternativa; en tales casos existen versiones equivalentes, por ejemplo el DS3234 con respecto al DS3231, que sustituyen I2C por SPI.

Al medir la temperatura para compensar el funcionamiento del RTC, este dispositivo puede usarse también como un termómetro dentro del propio montaje. Aunque los valores que devuelve se presentan en intervalos de un cuarto de grado, su precisión no es muy buena, ±3°C según la hoja de datos. Teniendo en cuenta que la temperatura se va a medir en la placa del circuito, junto a componentes calentándose sin mucho control, esta medida es suficiente en muchos casos, sobre todo si lo que interesa es medir tendencia y no sólo temperatura exacta en un instante. Por otra parte, la temperatura siempre está disponible para ser consultada pero se lee de un registro que se actualiza solamente cada 64 segundos, suficiente para mostrar una evolución a lo largo de un periodo largo, insuficiente para saber la temperatura de un instante.

Pinout del RTC DS3231

pinout del reloj en tiempo real RTC DS3231

Circuito típico de uso del RTC DS3231

circuito de aplicación para el reloj en tiempo real DS3231

Publicar comentario

Puede que te hayas perdido