Construyendo su propio reloj en tiempo real

Como muchos fanáticos de la electrónica, [Pete] descubrió que tenía un deseo abrumador de construirse un reloj para sí mismo. No quería poner un circuito integrado de reloj en tiempo real discreto en una caja y terminarlo, así que decidió construir el suyo propio alrededor de un microcontrolador.

Después de investigar las especificaciones de algunos circuitos integrados de RTC, definió algunos requisitos de precisión para su reloj y comenzó a construir. Comenzó a usar un cristal de reloj de 32,768 Hz, pero descubrió que la precisión se eliminó en aproximadamente 46 ppm después de solo 24 horas de uso. Eso cayó mucho más allá de su objetivo de tolerancia autoimpuesto de +/- 3 ppm, por lo que compró un oscilador con aproximadamente 500 veces la resolución de su cristal frontal.

Después de escribir un puñado de código para asegurarse de que el reloj permaneciera estable, calculó que su precisión debería ser de aproximadamente 0,18 ppm, muy dentro de su tolerancia aceptable.

[Pete] dice que esta es solo la primera parte de la construcción de su reloj, y que las revisiones futuras deberían incluir muchas características adicionales, así que esté atento a las actualizaciones.

  • Addidis dice:

    Creo que lo más llamativo de su arreglo es su tablero. ME ENCANTA como el acrílico? los bordes brillan.
    Creo que algo así funcionaría tan bien como una cama arduino, y también me interesa eso con los nuevos chipkits.

  • Addidis dice:

    No puedo evitarlo, una gran cantidad de Uc se ha integrado en RTCC. Por lo tanto, puede evitar el IC adicional Y tener un RTCC realmente serio que no tiene que depurar lo suficiente, un circuito de configuración incorporado y registros, alarmas, etc. comprobados y verdaderos.

    Aunque apoyo plenamente a cualquiera que elija la forma difícil de aprender primero. Así es como yo también aprendo.

  • DanJ dice:

    Dugg pro "No estoy seguro de por qué es así, pero a los aficionados a la electrónica les gusta hacer relojes. Parece que somos empujados hacia ellos como electrones a una pantalla cubierta de fósforo en un tubo de rayos catódicos. "

    Oh, espera, sitio web equivocado.

    Al igual que el plástico con borde iluminado y de acuerdo con usted además, hacer es casi la mejor manera de aprender.

  • Héctor dice:

    ¿No estaría la estabilidad del cristal AVR por sí sola fuera de la especificación de salida de +/- 3ppm? Una hoja de datos de cristal / oscilador típica tiene un número de estabilidad básico a 25 ° C, un número de variación de voltaje, un número de estabilidad de temperatura y un número asociado con el envejecimiento del cristal. Suelen sumar varias docenas de partes por millón. Esto significa para mí que si el voltaje de entrada o la temperatura cambia, también lo hará la estabilidad de este reloj. Además, el envejecimiento de los cristales suele ser de +/- 5 ppm por año.

  • macegr dice:

    El DS3231 y los RTC similares utilizan sensores de temperatura para cambiar un banco de condensadores que establece un cristal interno en la frecuencia correcta. También tiene un acabado envejecido si alguna vez se necesita un ajuste. Funciona alrededor de las 2 pm, o un minuto al año. El DS3234 es un oscilador MEM que es más resistente al envejecimiento y a los golpes / vibraciones, pero es un poco menos preciso a 3,5 ppm.

  • macegr dice:

    Lo sentimos, el DS3234 también es muy claro, solo SPI en lugar de I2C como el DS3231. El DS3231M es la opción MEM.

  • Alex despedida dice:

    es dueño de koenigsegg?
    Me encanta

  • MoJo dice:

    Me las arreglé para obtener

    Para evitar la desviación a largo plazo, hago que el reloj se vuelva a sincronizar periódicamente con la señal de hora de baja frecuencia de WSF. El único problema que encontré con esa señal es que la recepción es terrible durante el día, por lo que el reloj tiene que volver a sincronizarse a las 3 p.m. ¡También me aseguré de que si la resincronización falla después de una hora, se rendirá para no estropear mi alarma matutina!

  • Gracias dice:

    En un sistema integrado, utilicé GPS-PPS para ajustar el temporizador en una CPU integrada para mejorar la precisión de la interrupción del sistema de 1 ms. Esto se debió a ligeras variaciones en la temperatura del cristal y otras tolerancias en el cristal.

    Puede usar GPS PPS (asegúrese de tener un módulo GPS de buena calidad y una señal de GPS fuerte) para caracterizar el oscilador y tal vez incluso conectar un sensor de temperatura para que pueda hacer pequeños ajustes basados ​​en la temperatura. Entonces, una vez que esté funcionando libremente, puede estar seguro de que mantendrá su precisión tanto como sea posible

  • ColinB dice:

    Realmente debe considerar la precisión del reloj a una temperatura particular, porque la temperatura es la principal influencia en la frecuencia del cristal en la mayoría de los circuitos RTC. Probablemente podría hacer que el reloj sea bastante preciso a una temperatura específica eligiendo exactamente los valores correctos de los componentes (condensadores de carga), pero hacerlo preciso a la temperatura real, no solo a 20 ° C, es una historia diferente.

    Quiero hacer mi propio RTC porque estoy loco por el formato Y / M / DH: M: S de la mayoría de los RTC ... mis requisitos para un buen dispositivo que ahorra tiempo son:

    + Precisión de al menos milisegundos

    + Tiempo ahorrado como un número monótono (por ejemplo, milisegundos desde época) y en UTC; Todos los cálculos se realizan en UTC, convertidos a la hora local solo para entrada / salida, ¡no se requieren ajustes para el horario de verano!

    No he encontrado un RTC temporal que satisfaga estos objetivos.

  • Farkanoid dice:

    Ctrl + F "Arduino" ... ¿QUÉ? ¿NO HAY ARDUINO? Finalmente, un trabajo real: P

    / flamebait

  • Garbz dice:

    @ColinB

    Probablemente porque el requisito más común para RTC es la capacidad de ahorrar tiempo real o contar a 1 Hz o 0,1 Hz con precisión. No he visto una aplicación de cálculo de milisegundos desde una era en uC que generalmente también agrega complejidad porque es un número de 32 bits. YMDHMS se utilizan porque se pueden asignar fácilmente a los registros y hacer cálculos matemáticos.

  • ColinB dice:

    @Garbz: para aplicaciones de registro de datos de alto rendimiento, así como para otros sistemas informáticos integrados de uso más general, es útil tener precisión de almacenamiento secundario secundario. Con una precisión de RTC de milisegundos, el reloj en tiempo real también se puede utilizar para la planificación de eventos de eventos en tiempo real de bajo nivel internamente (por ejemplo, probar un sensor cada 10 ms). Claro, podría contentarse con una precisión de 0,1 Hz, pero ¿por qué? Milisegundos o una precisión superior serán mucho más útiles para varios propósitos.

  • ColinB dice:

    @Garbz:
    "No he visto una aplicación de contar milisegundos desde un tiempo en uC que generalmente también agrega complejidad porque es un número de 32 bits".
    Bueno, estoy usando un ARM Cortex-M3 que es un kernel de 32 bits, ¡así que esto no es un problema! Además, sumar, restar y comparar enteros de 32 bits incluso en un AVR de 8 bits es bastante rápido, y estas son las operaciones comunes que se realizan en un valor de tiempo.

    Rara vez es necesario multiplicar o dividir un valor de tiempo.

    "Los YMDHMS se utilizan porque se pueden asignar fácilmente a registros y matemáticas".
    Eso depende, ¿qué tipo de matemáticas desea hacer con los valores YMDHMS? Puede agregar un día o un mes, pero aún debe preocuparse por casos especiales como cambiar la longitud de la moneda, horas extra, etc. Encuentro que mantener un contador monótono de segundos o milisegundos es una forma mucho más simple y uniforme de ahorrar tiempo, y también le permite tratar varias zonas horarias (incluido el manejo del horario de verano de manera limpia, o al menos lo más limpia posible para ese mal bestia, el tiempo del pecado). el diablo).

  • José dice:

    "¿Reloj relacional?" ¿Contrario a qué? ¿Un reloj falso? ¿Qué bien haría eso?

  • DarkFader dice:

    ColinB: Sí. esos RTC son feos. Lo primero que debe hacer es convertir a hora Unix y volver a moverla a UTC. A partir de ahí, continúe con un temporizador. A veces, vuelva a leer RTC si RTC es más preciso que la sincronización de la CPU.

  • Adán dice:

    @Farkanoid LOL

    @MoJo Usé 32k crystal y 4060 en mi proyecto senior y no vi ninguna pérdida (hasta el segundo) durante varios días. Usé Attiny85 y descubrí que usar interrupciones para detectar el pulso del 4060 era mucho más preciso que votar. Era un controlador de muestreo de sonido para un biólogo. Baso la pérdida atemporal en las propiedades de archivo de Windows de los archivos grabados.

  • error 404 dice:

    Me gusta mucho el truco "NFT" vinculado que usó para calibrar el oscilador; de hecho, es bastante inteligente y útil para muchas cosas.

    Aunque estoy de acuerdo, es probable que la estabilidad de temperatura de su oscilador supere a todos los demás factores. Me pregunto si sería mejor para él mantener su cristal de 32Khz y en lugar de sumar o restar 1 ms de su valor de tiempo, ajustar el siguiente temporizador para interrumpirlo para que sea un ciclo tarde o temprano. Estos cristales de 32K deberían tener mejores ppm y una mejor estabilidad de temperatura, y debido a la menor frecuencia, el error tardará más en aparecer.

  • Bingo dice:

    Eso es lo que hace Peter Danegger aquí (el ajuste del tick)

    http://translate.google.com/translate?hl=en&ie=UTF8&prev=_t&sl=de&tl=en&u=http://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC

    / Bingo

  • Kasper Pedersen dice:

    @ eraro404:
    Me alegro de que te guste.

    Mire un cristal de corte XY (32 kHz) nuevamente, y esta vez mire el gráfico de frecuencia versus temperatura.
    La estabilidad f / T es mucho mejor para los cristales de corte AT que para los de corte XY. Si no necesita el bajo consumo de energía para la duración de la batería, omita XY, son increíbles. Y no importa cuál sea la frecuencia nominal, 1ppm es 1ppm.

Nora Prieto
Nora Prieto

Deja una respuesta

Tu dirección de correo electrónico no será publicada.