Hola,
Estuve experimentando con el archiconocido reloj en tiempo real DS1307 pero no ha habido manera y lo he tenido que dejar como "misterios de la ciencia", porque le daba exactamente lo que me pedía. Sin embargo, con el DS3231 me funcionó a la primera y estaba utilizando el mismo circuito, sin cambios añadidos.
Se dice que el
DS3231 es el sustituto del DS1307 porque es más moderno y mucho más exacto (creo que también corrige un bug que sale en ciertos años bisiestos), y además tiene el mismo precio que su versión anterior.
Adjunto un zip, en el interior está el módulo principal y un ejemplo en el que se muestran los datos a través del puerto serie. El circuito ejemplo es este:
Arriba, en las "cajas de constantes" se configura la fecha y la hora. El año sólo tiene dos dígitos y en el día de la semana se puede poner un número del 1 al 7; en este caso no importa si el primer día es domingo o lunes, porque es una convención y puedes interpretarla a tu gusto.
Como ejemplo he puesto datos límites (excepto el año) que nos permitirán comprobar que al cabo de 60 segundos cambia la fecha completamente. Lo he puesto como 31 de diciembre de 2021 a las 23:59h.
Los datos de salida del módulo principal los da en BCD de 8 bits; los 4 bits más altos representa la decena y los 4 bits más bajos representa la unidad.
Una vez que subimos el circuito y se pone en marcha mostrará la hora y fecha que tenga retenida, y si no tiene pila, mostrará una fecha fija inicial.
La primera columna (la de la izquierda) es el día, y luego viene el mes, el año, día de la semana, hora, minutos y segundos respectivamente.
La fecha/hora que queramos grabar se hace a través del pulsador llamado "preset" y se memorizará y comenzará a contar el tiempo a partir de esa fecha/hora. La línea amarilla representa un estado inicial (en mi caso sin pila) y cuando pulso "preset" se memoriza los datos que había puesto en las "cajas de las constantes" y comienza a contar a partir de esa configuración temporal.
Si alguien quiere crear alarmas o un programador de riego, decirles que es muy sencillo de hacer y no hace falta tomar todos los datos de salida. Por ejemplo, para un programador de riego no hace falta tener el mes, el año ni los segundos de tiempo. Se puede poner simples comparadores de 8 bits y cuando se cumple la condición hacer que se active un temporizador con el tiempo que gustes. Y para poner más de una alarma o zonas de riego, se pueden poner en paralelo y con fechas/horas distintas.
Saludos.