26 votos

¿Cómo se puede conseguir una precisión de reloj decente en los microcontroladores (por ejemplo, una desviación máxima de 1 segundo en un año)? ¿Cómo lo consiguen los fabricantes de relojes digitales?

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?

31voto

jns Puntos 449

¿Has probado a comparar con qué precisión te da realmente un reloj digital? No recuerdo que ofrezcan una precisión de "1 segundo al año".

El cristal que enlazaste era de 50ppm. Los que están diseñados para el tiempo de uso parecen ser 10-20ppm pero sólo es algo más preciso, no una diferencia espectacular.

La temperatura y la calibración son importantes. El truco de los relojes no es que estén controlados por un horno -para eso no tienes la pila-, sino que suelen tener una parte trasera metálica, por la que están unidos térmicamente a un humano de temperatura controlada. Eso mantiene el cristal en un rango de 20-30C. No es preciso, pero es mejor que nada.

En algunos países también existe una señal horaria de radio que puede proporcionarle un reloj de sobremesa preciso sin tener que utilizar NTP o GPS.

Edición: afortunadamente hay aficionados a los relojes que nos lo pueden decir:

https://thetruthaboutwatches.com/2021/06/watch-accuracy-rolex-vs-casio/ : "Casio afirma que sus relojes a pila alcanzan una precisión de +/- 15 a 20 segundos al mes"

https://www.hodinkee.com/articles/citizen-caliber-0100-eco-drive-movement-introducing : ah, esto es probablemente lo que estás buscando. De ahí viene lo de "más/menos 1 segundo al año". Parece que tienen cristales especiales y los han diseñado para un coeficiente de temperatura muy bajo y tienen calibración por software. Cuesta 2.900 dólares.

12voto

Justme Puntos 201

La pieza de cristal de 16 MHz de tu enlace tiene una tolerancia inicial de 30 ppm y una estabilidad de temperatura de 50 ppm. También tiene un envejecimiento especificado de 3 ppm durante el primer año y de 1 ppm al año después.

Para ponerlo en perspectiva, está obteniendo una desviación de tiempo de 10 segundos en 2 meses, ¡eso es una tolerancia de menos de 2 ppm!

Es sorprendentemente preciso, ya que podría estar 155 segundos fuera sólo de la tolerancia inicial de 30 ppm.

Está claro que se trata de cristales conectados a la MCU, y que los cristales y los circuitos de la MCU son lo suficientemente buenos para hacer funcionar la MCU, pero ni siquiera están pensados para mantener la hora exacta del reloj de pared.

También hay muchas cosas que no dices o no sabes, como si la capacitancia de carga del cristal coincide con el valor especificado en la hoja de datos, a qué temperatura está funcionando el cristal, e incluso la cantidad de nivel de potencia con la que se maneja el cristal afectará a la frecuencia y el envejecimiento.

Por tanto, la capacidad de mantener la hora no sólo depende del propio cristal, sino también de los circuitos que lo rodean y del entorno en el que debe funcionar.

Los relojes de pulsera son un área completamente diferente a los relojes MCU.

En primer lugar, el circuito y el cristal están diseñados principalmente para medir el tiempo, como es de esperar.

Los cristales son de un tipo diferente, llamados cristales de diapasón, y funcionan con un modo de vibración y un nivel de potencia distintos a los cristales MCU de corte AT "normales".

Los circuitos integrados osciladores de los relojes de pulsera pueden diseñarse para medir y compensar los efectos de la temperatura, pero en la mayoría de los casos el reloj estará a temperatura ambiente o cercana a la corporal, por lo que se encontrará en un entorno estable. La carga capacitiva sobre el cristal puede ajustarse mediante la fabricación de circuitos impresos con patrones/anchos de cableado específicos e incluso configurando el oscilador para activar o desactivar las capacitancias en chip. Cuando se fabrica un reloj, la oscilación puede calibrarse aún más midiendo la frecuencia de oscilación con una precisión suficiente.

La calibración también puede realizarse digitalmente, ya que se puede escribir fácilmente una tabla de consulta para asignar un rango de valores a la frecuencia de impulsos de salida en función, por ejemplo, de la tolerancia inicial, la variación de la temperatura o el envejecimiento supuesto.

Dicho esto, se trata de mecanismos que pueden estar ya presentes en el periférico de reloj en tiempo real de la MCU, destinados a la cronometría con un cristal de reloj, en lugar del cristal principal.

9voto

Lior Puntos 3527

Los relojes digitales normales no suelen mantener la hora con esa precisión. Unos minutos al año de desviación es razonable. Muchos relojes integrados no muestran los segundos, por lo que la deriva es menos perceptible.

Puede mantener la precisión con una fuente de temporización externa. Hay algunas formas clásicas:

La señal MSF

Un radiotransmisor de Cumbria emite constantemente una señal horaria precisa. Utiliza una portadora de frecuencia muy baja que cubre gran parte de Europa Occidental. Usaste un subdominio del Reino Unido para el enlace de Farnell, lo que sugiere que estás dentro del alcance. Es una emisión muy simple de sólo sesenta bits a un bit por segundo. Creo que podrías construir un receptor sin demasiados problemas. Si no quisieras descodificarlo, también podrías sincronizarlo con el marcador de minutos de cada emisión para corregir la deriva.

Tiempo eléctrico

Este método lo utilizan los relojes alimentados por la red eléctrica (poco frecuentes hoy en día) y los temporizadores mecánicos de enchufe. Normalmente se trata de un pequeño motor síncrono que gira a la frecuencia de la red. Aunque la frecuencia de la red no es tan precisa, en el Reino Unido, la National Grid mantiene una frecuencia media exacta, por lo que, aunque puede desviarse, siempre se corrige.

9voto

Chad Johnson Puntos 248

En un año hay aproximadamente 31 millones de segundos, por lo que se necesita una precisión superior a 0,03 ppm. Algunos osciladores de cristal con compensación de temperatura pueden conseguirlo.

Los osciladores controlados por temperatura consiguen una precisión aún mayor, pero el control de temperatura consume demasiada electricidad para un reloj de pulsera. La compensación de temperatura consiste en medir la temperatura y, a continuación, adivinar en qué medida perturbará la frecuencia del reloj y compensar la lectura de la hora en consecuencia.

Los relojes "inteligentes" utilizan Internet o GSM tiempo, por lo que no necesitan osciladores de precisión.

Los relojes radiocontrolados utilizan señales de radio para resincronizarlos.

Los relojes atómicos son relojes radiocontrolados con un marketing engañoso.

Los relojes digitales autónomos no suelen ser tan precisos, y los de consumo normal tienen una precisión de 10 partes por millón.

Tengo un reloj digital kitset que se basa en un DS32315N TCXO/RTC IC. Parece que se ha desviado alrededor de 1,5 minutos en los últimos tres años.

6voto

Sagar Kaushik Puntos 18

Vaya el hecho de que haga esa pregunta es sintomático de lo ubicuos que se han vuelto los estándares horarios realmente precisos. La única razón por la que puedes saber lo "impreciso" que es tu circuito es porque puedes compararlo con fuentes que (eventualmente) dependen de enormes y caros relojes atómicos. (Como ya han dicho otros, ¡están llegando a ser casi asequibles!)

TODOS los componentes electrónicos están sujetos a tolerancias de fabricación y varían con la temperatura, el tiempo y las condiciones de funcionamiento. Sí, los procesos de fabricación y los materiales han mejorado, pero mirar el calendario y decir "Estamos en 2023, ¿dónde están las piezas de tolerancia casi cero?". es ignorar la realidad.

Un cristal es básicamente una barra de xilófono con electrodos. La frecuencia depende literalmente de sus dimensiones mecánicas, de la carga de masa de los contactos chapados y, en pequeña medida, de la reactancia del circuito donde vive.

OK, así termina mi conferencia, a mi versión de una respuesta:

Construí un oscilador de referencia basado en un microcontrolador sub-ppm (PIC) para mi contador de frecuencia. Utilicé un cristal barato de 10 MHz, recortado con un tapón de recorte mecánico y varios variactores en paralelo. No utilicé el circuito oscilador del microcontrolador, sino un circuito basado en un JFET que conducía el cristal con una señal mínima para reducir la deriva por envejecimiento. Todo el circuito está envuelto en una fina capa de espuma de embalaje.

El microcontrolador controla la temperatura con un termistor y acciona los variadores según los datos de calibración almacenados en la eeprom. El microcontrolador controla un DAC en escalera R-2R de 7 bits con el LSB pwm'd para una resolución efectiva de 14 bits. El oscilador y el DAC utilizan su propia fuente de alimentación regulada, también dentro del contenedor aislado.

El objetivo del aislamiento no es mantener una temperatura constante, sino mantener todo a la misma temperatura y ralentizar los cambios de temperatura para que los datos de calibración puedan compensar el efecto neto de las numerosas fuentes de error.

Tuve suerte de que mi contador necesitara un reloj de referencia de 10 MHz, ya que esto facilitó la calibración:

La calibración se realizó mediante el batido a cero del oscilador contra la señal portadora WWV. Observando el medidor S del receptor, es posible conseguir un error inferior a 1/2 Hz, lo que equivale a 1/20 ppm a 10 MHz. La propagación entre Ft.Collins y mi casa modula la señal de WWV en una escala ligeramente más larga, así que esto es lo mejor que puedo hacer. En la práctica, la frecuencia varía hasta casi 2 Hz con las variaciones de temperatura, por lo que la considero buena hasta 1/2 ppm. Lo compruebo cada uno o dos años, pero no he sentido la necesidad de recalibrarlo en la década que ha transcurrido desde que lo construí.

Este es el nivel de esfuerzo que me costó conseguir el equivalente a un reloj con una precisión de unos 15 segundos al año. ¿De algún modo esperas más de un orden de magnitud de precisión, sólo porque estamos en 2023? Buena suerte.

Para un reloj, en lugar de un oscilador de referencia, no es necesario autoajustar la frecuencia real del cristal. Basta con medir la temperatura y aplicar factores de corrección de tiempo en el software según sus datos de calibración. Por supuesto, para obtener esos datos, necesitarás hacer algo al menos similar a mi enfoque, ya que cada punto de datos requeriría meses para el tipo de precisión que buscas, a menos que tengas una forma fiable de comprobar la frecuencia del cristal. Puedes utilizar un contador de frecuencia de dudosa calibración para obtener tu calibración de temperatura, y luego aplicar un factor de calibración global basado en la deriva temporal observada para corregir el error introducido por el contador. Ah, sí: asegúrese de que su contador no carga el circuito oscilador.,

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X