La sincronización precisa es algo que siempre me ha interesado. Hoy en día dependemos en gran medida del tiempo que nos llega a través de Internet, a través de ondas de radio de satélites GPS o estaciones de transmisión. Pero quería un reloj que mantuviera un tiempo excelente sin depender del mundo exterior; sin duda, algo mejor que el tiempo proporcionado por el oscilador de cristal de cuarzo utilizado en un reloj digital o microcontrolador típico, que puede variar aproximadamente 1,7 segundos por día, o más. 10 minutos en el transcurso de un año. Por supuesto, podría comprar un reloj atómico, es decir, uno con un oscilador de rubidio en su interior, del tipo que se utiliza a bordo de los satélites GPS. (No del tipo que se comercializa como “reloj atómico”, sino uno que en realidad depende de captar señales horarias de radio). Los relojes de rubidio proporcionan una precisión increíble, pero cuestan miles de dólares estadounidenses. Necesitaba algo intermedio, y la salvación la encontré en la forma del oscilador de cristal controlado por horno, invariablemente conocido como OCXO por razones históricas. Con uno de estos, podría construir mi propio reloj por alrededor de 200 dólares, y uno que es aproximadamente 200 veces más preciso que un reloj de cuarzo típico. Los cambios de temperatura son la mayor fuente de error en los osciladores de cristal convencionales. Hacen que el cuarzo se expanda o contraiga, lo que altera su frecuencia de resonancia. Una solución es realizar un seguimiento de la temperatura y compensar los cambios de frecuencia. Pero sería mejor no tener el cambio de frecuencia en primer lugar, y aquí es donde entra en juego el OCXO. La placa de circuito impreso [center] Se puede cortar en dos piezas, con los componentes relacionados con la sincronización montados en la sección inferior y los componentes de control y visualización montados en la sección superior. James Provost El OCXO mantiene el cristal a una temperatura constante. Para evitar la complejidad de tener que calentar y enfriar un cristal en respuesta a las fluctuaciones ambientales, el cristal se mantiene calentado cerca de 80 °C aproximadamente, muy por encima de cualquier temperatura ambiental que probablemente experimente. En el pasado, los OCXO consumían mucha energía y eran voluminosos o caros, pero en los últimos años han aparecido versiones en miniatura que son mucho más baratas y consumen mucha menos energía. El Raltron OCXO que elegí para mi reloj cuesta 58 dólares, funciona a 3,3 voltios y consume 400 miliamperios en funcionamiento en estado estable. El OCXO resuena a 10 megahercios. En mi reloj, esta señal se envía a un contador de 4 bits, que emite un pulso cada vez que cuenta de 0000 a 1111 en binario, dividiendo efectivamente la señal de 10 MHz por 16. Esta señal de 625 kilohercios (kHz) luego impulsa un temporizador de hardware en un microcontrolador Arduino Nano, que activa una interrupción del programa cada décima de segundo para actualizar la base de tiempo del reloj. (Los detalles completos sobre cómo funcionan la cadena de sincronización y el software están disponibles en una publicación adjunta en el sitio web de IEEE Spectrum, junto con una lista de materiales y archivos de la placa de circuito impreso). Un controlador giratorio conectado directamente al Nano le permite configurar la hora. Nano realiza un seguimiento del tiempo, avanza segundos, minutos y horas, y también controla la pantalla. Esta pantalla se crea utilizando seis “CharliePlex FeatherWings” de Adafruit, que son matrices de LED de 15 por 7 con brillo controlable que vienen en una variedad de colores. Cada uno se controla mediante el protocolo de bus serie direccionable I2C. Surge un problema porque un CharliePlex está cableado para tener solo una de dos direcciones I2C posibles, lo que hace imposible direccionar seis dígitos de reloj individualmente en un solo bus. Mi solución fue utilizar un multiplexor I2C, que toma datos I2C entrantes y los conmuta entre seis buses separados. La cadena de sincronización comienza con el oscilador OCXO y su señal de 10 megahercios y termina con la actualización de la pantalla una vez por segundo. La señal de sincronización sincroniza un temporizador de hardware en el microcontrolador Nano para que active un controlador de interrupciones en el software del Nano 10 veces por segundo. En consecuencia, puede realizar muchas modificaciones o agregar nuevas funciones mediante cambios de software. James Provost El uso de un microcontrolador (en lugar de, digamos, chips lógicos discretos) simplificó el diseño y permite una fácil modificación y expansión. Es trivial modificar el software para sustituir los números por su propio diseño de fuente, por ejemplo, o ajustar el brillo de la pantalla. Los bloques de conectores para interfaces seriales están disponibles directamente en el Nano, lo que significa que puede usar el reloj como temporizador o disparador para algún otro dispositivo. Para tal fin, puede omitir la pantalla por completo, reduciendo considerablemente el tamaño del reloj (aunque tendrá modificar el software para anular la verificación de inicio de la pantalla). La placa de circuito impreso del reloj está diseñada para que pueda cortarse en dos piezas, y el tercio inferior sostiene el microcontrolador, el OCXO y otros componentes electrónicos de soporte. Los dos tercios superiores contienen la pantalla y el codificador giratorio. Al agregar cuatro cabezales y pasar dos cables entre las piezas para conectarlas, puede organizar las placas para formar una amplia gama de configuraciones físicas, lo que le brinda mucha libertad a la hora de diseñar el factor de forma de cualquier gabinete que elija construir para el reloj. De hecho, crear la PCB para que esto fuera posible fue probablemente la parte más desafiante de todo el proceso. Pero la flexibilidad resultante de hardware y software del diseño final valió la pena. Todo el dispositivo se alimenta a través del puerto USB-C del Nano. Se necesitaba USB-C para proporcionar suficiente corriente, ya que el reloj, el OCXO y la pantalla juntos necesitan más que la corriente máxima nominal de 500 mA de los puertos USB anteriores. Se necesita una batería de respaldo conectada a este puerto para evitar reinicios debido a una pérdida de energía; usar uno de los populares relojes de respaldo en tiempo real basados ​​en celdas de botón no tendría sentido debido a su relativa inexactitud. Y en cuanto a ese objetivo de crear un reloj preciso. reloj con una gran inversión, verifiqué la salida de mi OCXO en el circuito con un contador de frecuencia HP 53150A. El resultado es que el reloj no se desvía más de 0,00864 segundos por día, o menos de 3,15 segundos en un año. De hecho, su precisión probablemente sea mejor que eso, ¡pero había alcanzado el límite de lo que podía medir con mi contador de frecuencia! Espero que construyas uno propio; solo requiere unas pocas horas de soldadura y creo que estarás de acuerdo en que sería un tiempo bien empleado.

Source link