RTC se adelanta

Buenas tardes compañeros.

Estoy descubriendo una cosa de lo más curiosa, a alguien le ha sucedido antes?

es tan sencillo como un arduino conectado a un RTC y cada x segundos (varía un poco) se salta un segundo, por lo que se va adelantando.

gracias y un saludo.

Si a mi me sucedió con un DS3231 y me llegó a adelantar 1hora en 4 dias.
Creo que era problema de código (pero no puedo asegurarlo) porque ahora se comporta bien y no cambie nada del hard.

Hola! bueno yo en mi experiencia te puedo comentar que trabaje exhaustivamente con estos modulos a manera industrial, sucede que si estas usando un RTC DS1307 , estos varian segundos u horas con el paso del tiempo, aveces se me adelantaba o retrasaba segundos, pero aveces horas, utilize 30 RTC DS1307 en un proyecto industrial que tenia, y lo que sucedia es que estos modulos son afectados por el calor, en mi caso los tenia a cielo abierto en distintas zonas de la ciudad, asi que mientras el clima varia estos aumentan o se ponen locos, asi que mi solucion fue cambiar al modulo RTC DS3231, que es el Upgrade del DS1307, estos tiene un reloj SMD y un chip compensador de temperatura, lo cual hace que no se vea afectado por lo que te describi arriba, ni el frio ni calor, te puedo decir que llevo 3 años, y solo me han variado 5 seg por años (si, los 30 que utilizo).

Quizás habria que buscar el fallo en otros elementos. No parece lógico que un C.I. diseñado para un rango de temperaturas de: 0ºC a +70ºC (el rango industrial es mayor) pueda adelantar tanto (hablas de horas!).

Leyendo con detenimiento el datasheet del producto veo el siguiente párrafo: "CLOCK ACCURACY The accuracy of the clock is dependent upon the accuracy of the crystal and the accuracy of the match between the capacitive load of the oscillator circuit and the capacitive load for which the crystal was trimmed. Additional error will be added by crystal frequency drift caused by temperature shifts. External circuit noise coupled into the oscillator circuit may result in the clock running fast."

Por lo cual parece que son factores ajenos al propio CI y mas relacionados con el cristal usado y el "external circuit noise".

pues teniendo en cuenta que todos son productos baratos, no me parece raro que el cristal no tenga una precisión demasiado buena, voy a probar a cambiarlo por el otro modelo más moderno, más o menos lo he tenido funcionando en las mismas características, y probé con 2 unidades y se comportan exactamente igual.

El programa no creo que sea porque si en cada vuelta del loop sincroniza la hora, aunque arduino se retrase por ejecutar las funciones, debería ir bien.

pues teniendo en cuenta que todos son productos baratos, no me parece raro que el cristal no tenga una precisión demasiado buena, voy a probar a cambiarlo por el otro modelo más moderno, más o menos lo he tenido funcionando en las mismas características, y probé con 2 unidades y se comportan exactamente igual.

No se trata de precisión. Se trata de que no esta compensado en temperatura. Necesitas un cristal TCXO que es el que usa el DS3231 ni mas ni menos.

Si buscas existe una rutina que compenza el drift que tiene un RTC DS1307 y lo ajustas bastante bien. Estaba por probarlo con mi logger pero se quemó el DS1307