Problema de falla de energía DS1307

El DS1307 tiene dos fuentes de energía: la fuente VCC principal y la batería de respaldo. Este último alimentará el DS1307 cuando se corte la energía principal para que el reloj pueda seguir corriendo.

Me enfrento a un problema con el RTC DS1307 cuando la energía principal se cae repentinamente y luego regresa el tiempo en la pantalla LCD simplemente se congela. A veces, cuando eso sucede (apagado), el RTC sigue funcionando (parece que el DS está atascado cuando se apaga el interruptor principal).

Este es el circuito exacto que usé y la batería da 3.0V:

esquemas

El código que utilicé está exactamente en la publicación del blog: DS1307 Real Time Clock Working .

¿Cuál podría ser el problema?

¿Está 100% seguro de que es el DS1307 el que falla? ¿Conectó una interfaz I2C independiente a las líneas SCL y SDA e intentó consultar el IC? Su pregunta también se contradice: en un momento dice que la parte sigue sincronizando cuando se apaga la alimentación, luego entre paréntesis dice "atascado cuando la alimentación principal (está) apagada": ¿está o no está atascado?
@Madmanguruman: ¿qué más podría ser? Probé con otro ATmega y el problema sigue ocurriendo, lo conecto a arduino uno y con un monitor en serie -ejemplo de RTClib- envía datos correctos (hora) a la computadora, apago la alimentación, a veces mantiene el tiempo y otras veces te atasca puedo decir que es al azar!!

Respuestas (4)

El esquema es bueno. Ejecute esta lista de verificación:

  • Verifique que su fuente de alimentación tenga onda limpia, especialmente en los tiempos de conexión y desconexión. Si aumenta más de 1V, agregue un capacitor de 4.7uF. Si no soluciona el problema, cambie la fuente de alimentación y renueve el DS1307.

  • Verifique la capacidad de corriente de la batería de 3V, solo sin voltaje, DS1307 necesita 200uA min.

  • Verifique si el bate de 3V tiene una ruta no deseada descargándolo. Especialmente si estás usando protoboard.

  • Compruebe los comandos/software de I2C.

gracias por su ayuda pero un paralelo de 4.7uF con la fuente y resolvió el problema gracias por su ayuda

Por lo general, este tipo de problema surge debido a:

  1. La fuente de alimentación no se ocupa de los transitorios en el corte de energía y cuando se restablece.
  2. Celda defectuosa
  3. En algún momento debido al error de software...
gracias... pero revisé mi fuente de alimentación y la batería y no hay problema... lo resolví con un paralelo c4.7uf con el regulador principal de 5v

Verifique para asegurarse de que está reiniciando el bus I2C correctamente en el inicio. Si no lo está, verá que cuando su programa esté bloqueado, la línea de datos estará baja todo el tiempo. Puede resolver este problema enviando pulsos de reloj desde el maestro hasta que todos los dispositivos hayan liberado la línea de datos.

gracias ... pero el bus I2C se reinicia correctamente ... encontré la solución para agregar un paralelo de 4.7uF con la fuente

¿Se ha asegurado de hacer lo recomendado en la hoja de datos?

RELOJ Y CALENDARIO


El bit 7 del registro 0 es el bit de parada de reloj (CH). Cuando este bit se establece en 1, el oscilador se desactiva. Cuando se borra a 0, el oscilador está habilitado. Tenga en cuenta que el estado de encendido inicial de todos los registros no está definido. Por lo tanto, es importante habilitar el oscilador (CH bit = 0) durante la configuración inicial.


En otras palabras, si olvidó en la inicialización de su software restablecer el bit CH, el oscilador no funcionaría (y el valor del bit es aleatorio al encender)

gracias por su respuesta, hice la inicialización del bit "CH" y encontré una buena solución al agregar 4.7uF en paralelo con el regulador de 5v (en la fuente principal) y funciona bien
Me alegro de que lo hayas solucionado.