Estoy aprendiendo con microcontroladores (principalmente PIC16/18 y AVR) desde hace algún tiempo, haciendo varios proyectos experimentales. Una de las cosas que he encontrado sorprendentemente difícil es mantener la precisión del reloj decente.
La mayoría de mis proyectos tienen relojes internos al menos para mostrar el tiempo de actividad, pero muchos de ellos (los que tienen interfaz de visualización) también tienen un reloj ajustable. Incluso he creado mi propio reloj despertador para mi mesita de noche usando un PIC16, pero todos ellos son sorprendentemente inexactos, a pesar de usar osciladores de cristal (usar reloj RC interno es absolutamente terrible.)
He implementado varios ajustes interactivos para configurar la deriva y hacer que el reloj sea lo más preciso posible, pero todavía me encuentro con una deriva de unos 10 segundos después de dos meses en comparación con un reloj calibrado por NTP (en mi teléfono).
Básicamente esta es mi observación:
- Reloj RC interno - se desvía ~10 segundos en 24 horas
- Oscilador de cristal 8 MHz - usando retardos de interrupción por defecto calculados por MPLAB MCC deriva en ~10 segundos en pocos días
- Oscilador de cristal 8 MHz - utilizando retardos calibrados por cada cristal individualmente deriva en ~10 segundos en un mes.
- Oscilador de cristal 16 MHz - utilizando retardos calibrados por cada cristal individualmente deriva en ~10 segundos en dos meses.
Lo que también me ha sorprendido es que cada cristal, aunque sea de la misma frecuencia y del mismo fabricante está dando una frecuencia ligeramente diferente, porque cada uno necesita una calibración diferente para dar la hora exacta. ¿Es algo habitual?
Estoy utilizando cristales baratos que se pueden comprar en Farnell, tales como éste .
Estuve leyendo sobre esto y encontré que hay unos "osciladores de cristal controlados por horno" que son necesarios para la hora exacta que mantienen la temperatura del cristal, pero me cuesta creer que estos pequeños hornos estén instalados en aparatos electrónicos como relojes de pulsera.
Mi mecanismo de calibración me permite ajustar el "intervalo de segundos" a la resolución de un solo ciclo de reloj del microcontrolador, pero sigue sin ser preciso incluso con un cristal de 16 MHz después de varios meses.
¿Cómo resuelven este problema los fabricantes de relojes de pulsera?
-
¿Están usando cristales controlados por horno?
-
¿Calibran cada reloj de pulsera individualmente, ya que cada cristal tiene un desplazamiento/frecuencia de PPM ligeramente diferente del otro?
Muchos aparatos electrónicos vienen con relojes clásicos de 24 horas, pero no utilizan NTP para la sincronización. ¿Cómo se hace generalmente?