Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Relojes de tiempo real (RTC) en temporizadores de microcontroladores

Este artículo es el tercero de una serie sobre temporizadores de microcontroladores que describe los RTC dentro de un microcontrolador.

Este artículo es el tercero de una serie sobre temporizadores de microcontroladores. El primer artículo describe las características principales de la mayoría de los tipos de temporizadores y cubre los temporizadores periódicos, y el segundo cubre los temporizadores MCU de modulación de ancho de pulso.

Los relojes en tiempo real (RTC) son temporizadores dedicados a mantener una base de tiempo de un segundo. Además, un RTC se usa a menudo para realizar un seguimiento de la hora del reloj y la fecha del calendario, ya sea en software o hardware. Muchas de las características de un RTC son muy especializadas y necesarias para mantener una alta precisión y una operación muy confiable. Hay dispositivos RTC externos a un microcontrolador que interactúan con un I 2 Bus C o SPI.

Este artículo describe los RTC dentro de un microcontrolador.

Descripción general de los relojes en tiempo real

La función básica del reloj en tiempo real es producir intervalos de un segundo y mantener un conteo continuo.

Puede ver una representación de esto en el diagrama a continuación.

Figura 1. Este diagrama de tiempo describe la función básica de un RTC

También se muestra una función de programa, A, que lee un contador de segundos y programa un evento, B, para que ocurra tres segundos en el futuro. Esta acción se llama alarma. Observe que el contador de segundos funciona continuamente y no se detiene ni se inicia. Los dos requisitos principales de un RTC son la precisión y el funcionamiento continuo.

El siguiente diagrama muestra las características de hardware comunes de un RTC.

Figura 2. Funciones de hardware del reloj en tiempo real

Un RTC a menudo tiene su propio oscilador interno con un cristal externo y una opción para usar una referencia de frecuencia externa. Todas las fuentes de reloj funcionan a 32,768 Hz. Una fuente de reloj externa permite el uso de un dispositivo muy preciso y estable, como un TCXO (oscilador de cristal con compensación de temperatura).

Se selecciona una fuente de reloj con un multiplexor y se ingresa a un preescalador que divide el reloj por un factor de 32,768 (215) para producir un reloj de un segundo.

Un RTC básico tiene un contador de segundos que suele ser de 32 bits o más. Algunos RTC tienen contadores especializados para realizar un seguimiento de la hora del día y la fecha del calendario.

Un RTC básico sin contadores de fecha y hora utiliza software para este propósito. Una opción común es una onda cuadrada de 1 Hz desde un pin de salida. Un RTC tendrá varios eventos posibles para generar una interrupción del procesador.

Un RTC a menudo tiene un pin de alimentación dedicado para permitir el funcionamiento cuando el resto del microcontrolador está apagado. Esta clavija de alimentación generalmente está conectada a una batería o una fuente de alimentación separada.

Precisión de RTC y compensación de frecuencia

La precisión de un RTC depende de la fuente de reloj de 32,768 Hz. En un oscilador de cristal bien diseñado, la principal fuente de error es el cristal. Se puede usar un TCXO externo para una sincronización de alta precisión, o se usan técnicas especiales de compensación de frecuencia con cristales menos costosos y el oscilador interno. Hay tres fuentes principales de error de un cristal.

El siguiente gráfico muestra varios conceptos relacionados con la precisión de RTC.

Figura 3. Gráfico que muestra la medición del error utilizando la temperatura utilizada por cortesía de Texas Instruments

El trazo azul oscuro en este gráfico muestra una tolerancia inicial típica y el cambio con la temperatura. El trazo rosa muestra solo el error de temperatura. La clave para compensar la temperatura es el hecho de que el comportamiento de un cristal es bien conocido y se predice con una ecuación cuadrática. Si el error inicial se mide después de fabricar la placa de circuito y se conoce la temperatura, es posible compensar las fuentes de error más grandes.

La banda amarilla es un objetivo razonable de precisión después de una cuidadosa compensación. Tenga en cuenta que 1 ppm durante un año equivale aproximadamente a 30 segundos. El envejecimiento de los cristales es difícil de compensar. Afortunadamente, el envejecimiento suele ser de unas pocas ppm por año.

Cómo cambiar la sincronización del RTC

Aquí hay dos formas de cambiar la sincronización de un RTC como parte de un sistema para compensar errores.

El primer diagrama (Figura 4) muestra el número de ciclos del oscilador contados por el preescalador para cada período del contador de segundos.

Los primeros dos segundos son los habituales 32,768 ciclos. El software usa lecturas de temperatura y el error inicial para determinar que el oscilador está funcionando un poco rápido y 32,768 ciclos es en realidad un período de 0.99990 segundos. Para compensar este pequeño error, el software le dice al RTC que cambie el módulo del pre-escalador a 32,781 por cada cuarto segundo para agregar algo de tiempo.

Figura 4. Una representación de los ciclos del oscilador contados por un preescalador

Esta técnica tiene la ventaja de un pequeño cambio en el período de segundo a segundo. Sin embargo, la técnica requiere un preescalador ajustable y registros adicionales para mantener el recuento de preescala especial y el número de segundos entre la aplicación del recuento especial. Yo pienso que esto es genial. Un poco complicado pero genial.

¿Qué pasa si el RTC no tiene un preescalador especial para ajustar la sincronización? Este diagrama muestra otro método.

Figura 5. La misma situación que se muestra en la Figura 4, pero sin un preescalador

En este caso, el número en las casillas es el contador de segundos. El recuento que se muestra es 100251 seguido de 100252. El software ha estado calculando continuamente el ajuste y realizando un seguimiento del recuento de segundos del RTC. Cuando el error se acumula exactamente en un segundo, el software agrega o resta un segundo para ajustar el error acumulado.

Una desventaja de esta técnica es que el cambio de segundo a segundo es grande cuando se realiza un ajuste. Esta técnica tiene la ventaja de ser compatible con cualquier RTC.

Seguridad en RTC

La seguridad es un requisito interesante. Hay aplicaciones en las que se utiliza tiempo para facturar a los clientes por utilizar un servicio o consumir un recurso. Existe una amplia práctica en torno a la prevención o detección de piratería de RTC. Las técnicas van desde la detección de intrusiones para envolventes hasta funciones especiales dentro del microcontrolador.

El RTC en un microcontrolador que estoy usando actualmente tiene registros especiales para permitir que el software bloquee permanentemente los registros críticos. Una vez bloqueados, no se pueden cambiar y están protegidos contra piratería o código fuera de control. Cambiar la hora requiere un reinicio completo del microcontrolador.

Hora y fecha

Algunos RTC tienen contadores de hardware para mantener la hora del día y la fecha del calendario. Esto requiere contadores de minutos, horas, días, meses, años y consideración de los años bisiestos. El software también puede mantener la hora del día y las fechas del calendario.

Un ejemplo destacado serían las funciones de la biblioteca estándar de C que se ven en el archivo time.h. Para un microcontrolador, este sistema puede basarse en el contador de segundos de un RTC. Se deben escribir cuatro pequeñas funciones personalizadas para admitir completamente la biblioteca time.h.

La única función de interés aquí es llamada por la función time () en la biblioteca, que devuelve el tiempo como el número de segundos desde un punto de inicio llamado "época", generalmente el 1 de enero de 1970. Por lo general, la función personalizada para leer el temporizador de hardware se llama get_time () o una variación similar. Todo lo que hace get_time () es leer el contador de segundos y devolver el valor. La biblioteca hace el resto para convertir esta hora en segundos a la hora actual del día y la fecha.

Problemas con los segundos contadores de 32 bits

Un contador de segundos de 32 bits funciona durante mucho tiempo, pero no para siempre. Puede haber problemas graves debido al rango de recuento limitado. Por ejemplo, una hora del sistema basada en un contador de 32 bits que usa la biblioteca estándar C y una época del 1 de enero de 1970, podría fallar en enero de 2038 cuando el contador se reinicia después del conteo máximo. Este problema se conoce como el problema Y2038.

Se produjo un error durante la misión espacial Deep Impact de la NASA para estudiar un cometa. Se logró el objetivo principal de la misión y la nave continuó estudiando otros objetos. Sin embargo, la comunicación se perdió repentinamente en 2013. Aquí hay un comentario oficial de la NASA.

"Aunque se desconoce la causa exacta de la pérdida, el análisis ha descubierto un problema potencial con el etiquetado de la hora de la computadora que podría haber llevado a la pérdida de control de la orientación de Deep Impact".

- Comunicado de prensa de la NASA en 2013

Una causa probable de falla es que un temporizador de 32 bits mantenía el tiempo en incrementos de 0.1 segundos y se volcó, lo que provocó la "terminación" de la misión.

Mi sugerencia, cuando se trata de fecha y hora, es utilizar una vida útil más larga de la esperada en su diseño.

Qué sigue

El siguiente artículo concluye la serie con temporizadores Watchdog.


Tecnología Industrial

  1. Es hora de hacer de la gestión de la nube una práctica de TI real
  2. Carga y descarga de condensadores
  3. Ecuaciones de constantes de tiempo
  4. Cálculos de voltaje y corriente
  5. La verdadera oportunidad es la oportunidad industrial
  6. Equipo de trabajo:¿Es hora de actualizarlo?
  7. 7 impulsores de la transformación digital
  8. ¿Es hora de adoptar el mecanizado de alto rendimiento?
  9. El robot detecta y comparte cambios en 3D en tiempo real
  10. Un mejor sensor detecta la acumulación de hielo en tiempo real
  11. Interoperabilidad empresarial en tiempo real