Reloj en Tiempo Real DS3231 y DS3234

Cuando se requiere gran precisión en la medida del tiempo, en lugar de recurrir al clásico RTC (reloj en tiempo real) DS1302, podemos utilizar otras alternativas mejores como son el DS3231 y el DS3234, calificados por el fabricante como “extremadamente precisos”.

DS3231

El primer módulo que analizamos está basado en el chip Maxim DS3231, un RTC dotado de un oscilador de cristal con compensación de temperatura (TCXO).

Dispone de una pequeña pila de botón de 3v que alimenta el módulo y mantiene la fecha aún cuando el dispositivo principal esté apagado. El RTC mantiene segundos, minutos, horas, día, fecha, mes y año. La fecha al final del mes se ajusta automáticamente por meses con menos de 31 días, incluyendo correcciones para años bisiestos hasta 2100. El reloj funciona en el formato de 24 horas o 12 horas con indicador AM / PM e incluye dos alarmas programables y una salida de onda cuadrada. Los datos se transfieren en serie a través de un bus bidireccional I2C.

Características generales:

  • RTC  capaz de manejar todas las funciones temporales
  • 2 alarmas programables
  • Señal de salida de onda cuadrada programable
  • Sensor de Temperatura Digital (Precisión: ±3°C )
  • I2C Interface (dirección 104,  hasta 400kHz)
  • Salida de onda cuadrada programable
  • Pila a 3.3V para funcionamiento continuado
  • Precisión: ±2ppm from 0°C to +40°C
  • Rango de temperatura: 0°C to +70°C
  • Voltaje: 2.3 a 5.5V

Toda la información técnica en el datasheet_DS3231.  Las diferencias entre todos los chips RTC de Maxim pueden verse en este enlace.

Existen varias librerías desarrolladas para facilitar el uso de este chip, aquí vamos a utilizar la librería de Adafruid que me parece más fácil de usar e integrar en proyectos, además es compatible con el módulo RTC DS1307 aunque no proporciona ningún método para obtener la temperatura.

El montaje es extremadamente simple, se puede alimentar directamente con la salida de 5V de Arduino y el bus I2C corresponde a los pines A4(SDA) y A5(SCL) en el caso de Arduino UNO.

Al conectar el módulo por primera vez debemos ponerlo en hora, para eso podemos usar el primer programa de ejemplo. En el código hay que cambiar las líneas con los datos correspondientes, la nueva configuración se grabará cuando pulsemos ENTER en la consola serial.

Ejemplo1: Poner en hora el módulo RTC DS3231

En las primeras pruebas realizadas, observé que el módulo DS3231 se retrasaba unos segundos al día, sin embargo era debido a que la batería estaba casi agotada, una vez restituida por una nueva ya es posible utilizarlo en cualquier proyecto que requiera gran precisión (relojes, dataloggers,…) .

DS3234

El siguiente módulo que analizamos está basado en el chip Maxim DS3234, un RTC dotado también de un oscilador de cristal con compensación de temperatura (TCXO) y SRAM.

Las características son similares al modelo DS3231, salvo que utiliza el bus SPI en lugar del I2C y dispone de 256B de SRAM.

Pin
Descripción
SS
Selección de chip SPI activo-bajo
MOSI
SPI master out, slave in
MISO SPI master in, sl
ave out
CLK
Entrada de reloj SPI
SQW
Salida de onda cuadrada configurable.
Salida de alarma 1 y/o alarma 2
VCC
Alimentación (2.0 -5.5v)
GND
Ground (0V)

Toda la información técnica en el datasheet_DS3234

El integrado puede funcionar directamente con lógica a 3.3 ó 5 V, con un consumo promedio de 120 μA. Cuando se desconecta la fuente de alimentación externa entra en funcionamiento la batería (tipo CR1225 de 12mm) consumiendo tan sólo 2μA lo que le proporciona una autonomía de más de 2 años.

Aparte de sus conexiones SPI, el DS3234 también cuenta con un pin muy versátil, denominado “SQW”. Este pin puede configurarse como una salida de onda cuadrada (con frecuencias de salida que varían de 1Hz a 8.192kHz), o como una salida de interrupción, indicando que se ha disparado una alarma. Esta salida es activa en estado bajo, y requiere una resistencia pull-up de 10KΩ conectada con Vcc.

 

También existen librerías para este modelo de RTC, como la desarrollada por SparkFun, que sin embargo no funciona correctamente con el módulo que dispongo para pruebas, por tanto en el siguiente sketch de ejemplo accedemos al RTC directamente mediante la librería SPI.

Ejemplo2: Poner en hora el módulo RTC DS3234

 

Descarga de los sketch de este tutorial en: https://github.com/playbyte/Arduino

También te podría gustar...