¿Cómo se mantiene la hora del módulo de reloj en tiempo real suministrado sin batería?

4

Estoy pensando en comprar este módulo RTC (reloj en tiempo real) .

Dado que este artículo en particular se suministra sin batería, me pregunto cómo se está ejecutando el tiempo en el chip desde que se fabricó hasta que se enchufa una batería en el zócalo.

EDITAR:

Después de revisar las muchas respuestas agradables que ha recibido esta pregunta, creo que no formulé bien mi pregunta.

Se supone que el reloj de tiempo real le brinda información sobre el año (contando los años bisiestos), el mes, el día de la semana, el tiempo (horas, minutos, segundos). Entonces, si el módulo llega sin la batería instalada, ¿a qué hora se mostrará? ¿Y cómo puede establecer la hora correcta en el chip?

    
pregunta James C

5 respuestas

5

La página 8 de hoja de datos DS1307 indica lo siguiente:

  

En la primera aplicación de energía al dispositivo, los registros de hora y fecha se restablecen normalmente al 01/01/00 01 00:00:00.

Por lo tanto, cuando aplica energía al RTC, normalmente se reiniciará en cero. Sin embargo, como James Cameron señaló en su respuesta, la única respuesta garantizada al fallo de alimentación es el bit 7 de detención de reloj (CH) del registro 0. Por lo tanto, los datos pueden estar dañados al inicio. En cualquier caso, después de aplicar energía al dispositivo, deberá configurar el tiempo usted mismo. Entonces comenzará a marcar por sí mismo.

La comunicación con el DS1307 RTC se realiza a través del I 2 C protocol . Uno usualmente usaría un MCU para controlarlo. Usualmente uso un ATmega328P para hacerlo sin problemas. Puedes usar un PIC, Raspberry Pi o un Arduino, o cualquier otra MCU popular que haya por ahí.

Cablearlo es bastante simple. Sólo tienes que seguir la hoja de datos DS1307. La configuración más habitual es la siguiente:

  • Conecte los terminales 5V y GROUND a la fuente de alimentación principal de su placa.
  • Coloque una celda de moneda de 3V en su soporte. Eso permitirá al RTC mantener el tiempo mientras se desconecta la alimentación principal.
  • Conecte los cables SDA y SCL a los pines correspondientes en su placa MCU. En el ATmega328P, esos son los pines 27 y 28, respectivamente. En Arduino Uno, estos son los pines de entrada analógica A4 y A5 respectivamente.
  • Es probable que el terminal SQ esté cableado al pin de salida DS1307 SQW / OUT (Cuadrado / Controlador de salida). Cuando está habilitado, el pin emite una de las cuatro frecuencias de onda cuadrada (1Hz, 4kHz, 8kHz, 32kHz). Es útil para activar interrupciones en su código, para que el programa sepa cuándo ha cambiado el tiempo (segundos), por ejemplo.
  • Hay otro terminal, DS , con el que no estoy familiarizado. Haga que encuentre y lea el manual del módulo y comprenda para qué sirve mientras diseña la placa que utilizará el RTC.

En su programa, necesita hacer que su MCU hable con el RTC usando el protocolo I 2 C. Puede hacerlo usted mismo, pero lo más fácil es encontrar una biblioteca que le facilite la comunicación. Para Arduinos, hay algunas bibliotecas que se desarrollaron específicamente para controlar el DS1307. Estas bibliotecas proporcionarán funciones a las que puede llamar desde su programa para establecer la hora inicial (actual) y luego leer la hora cuando sea necesario.

Espero que esta actualización aborde tu pregunta.

    
respondido por el Ricardo
5

Necesita una batería. Se envía sin una batería para evitar que se activen las regulaciones sobre el envío de baterías y para evitar tener que almacenar baterías que eventualmente pierdan vida útil.

    
respondido por el James Cameron
4

El módulo no viene con una batería. Pero de la imagen, viene con el soporte de la batería. Lo que significa que solo tienes que comprar tu propia batería.

En cuanto a la fecha / hora predeterminada, se establecerá en una época (fecha de inicio arbitraria elegida por los diseñadores), o más probablemente, reinicio a todos los ceros, en el momento del encendido , e inmediatamente comenzará contando Se mantendrá el tiempo hasta que VCC baje de su mínimo (si VBat también es inferior a su mínimo o no haya una batería instalada). Esto se puede confirmar en la hoja de datos para cada IC específico que tenga su módulo, o un IC similar con el mismo formato eeprom como Maxim / Dallas DS1037.

Para establecer / leer la hora, aplicar energía y usar los mensajes i2c como se especifica en la hoja de datos.

    
respondido por el Passerby
4

No estoy de acuerdo con Ricardo un poco, donde él dice

  

vendrá con el reinicio de tiempo

El patrón de restablecimiento de datos solo es típico , no está garantizado. En la hoja de datos, la única respuesta garantizada al fallo de alimentación es el bit 7 de detención de reloj (CH) del registro 0. Si le preocupan los datos, su software debe verificar el bit CH, y si está establezca la fecha y la hora, incluso si ya está claro la mayoría de las veces que lo ve.

Pasé días caracterizando la respuesta a una falla de energía parcial y total de los chips RTC en la computadora portátil OLPC XO, y capturé abundante evidencia de corrupción de los registros de datos cuando VBAT era marginal. CH fue confiable.

    
respondido por el James Cameron
1

El tiempo no se sigue ejecutando: hay que configurarlo cada vez que el RTC pierde energía (es por eso que a menudo tendrá una batería separada). Solo se ejecuta cuando tiene poder.

    
respondido por el Renan

Lea otras preguntas en las etiquetas