Paso 1: diseño
Después de muchos años de la construcción de relojes con lógica fichas que decidí usar microcontrolador debido a la viruta reducida cuentan y por lo tanto facilitan de construcción. Mi anterior reloj maestro 31 lógica ICs y 4 tableros principales y tenía mucho menos funciones ver foto.
Decidí usar el Arduino para controlar mi nuevo maestro debido a su facilidad de programación. La mayor parte del trabajo complicado se realiza por las personas que diseñan y luego compartan las bibliotecas. Arduino es sabia muy bien compatible hardware y muchas mas piezas se pueden comprar listo construido como bloque de construcción para proyectos.
En este reloj un MAX7219 conduce a la pantalla principal y una 4 x 20 que LCD I2C se utiliza para la secundaria estos ayuda mantener cableado y pin Arduino 328 uso al mínimo. Mantuve el mismo tipo de caso roble utilizado en mi viejo maestro reloj había equipado 6 x 1" 7 exhibiciones de segmento perfectamente y me dio espacio para encajar en todos los otros módulos. He utilizado un módulo PIR para apagado/activación de la pantalla con su temporizador y ajuste de la sensibilidad como esto utiliza sólo 1 pin de la 328 de Arduino. Un módulo Bluetooth Serial tarjeta de EZ Link me permite programar el reloj y leer datos de él remotamente desde mi PC de sobremesa y móviles Android.
Una de las consideraciones de diseño al construir este reloj era reducir el consumo de energía como el reloj es de 24/7. Consulte a continuación la mayoría de las veces que el reloj Mk2 dibujará alrededor de 50mA en comparación a 200mA de Mk1.
Consumo de energía
200mA Masterclock Mk1
Masterclock MK2 Inicio 35mA
Pantalla apagado durante el día con ningún movimiento detectado 40mA
Mostrar en la 43mA brillo 0
Mostrar en la 50mA brillo 2
Mostrar en 5 brillo 62mA
Mostrar en 10 brightness78mA
Mostrar en la 15 (máximo) brightness90mA
Bibliotecas de Arduino utilizadas
DCF77.h esta biblioteca es el corazón del reloj y decodifica incluso una señal DCF77 ruidosa auto tunes el cristal de cuarzo.
LedControl.h para la exhibición de LED y retroiluminación de LDC vía un MAX7219 IC.
LiquidCrystal_I2C.h para manejar la pantalla LCD
Wire.h para comunicarse con dispositivos I2C
Tiempo de mantenimiento
Mi viejo maestro reloj era un arquero de muy buen tiempo y como tenía una buena señal DCF77 para mantenerlo sincronizado estaba bien. Cada ahora y después cuando la señal DCF77 se perdió durante algún tiempo que ganaría a un segundo y al corregirlo entonces sería 1 segundo esclavos perder a un segundo. Esto sucedió sólo un par de veces al año pero volver a sincronizar mi 1 segundo esclavos era un dolor.
He decidido seguir utilizando la señal DCF77 el reloj atómico en Alemania. Yo pude han utilizado la señal MSF desde el Reino Unido pero recepción no es buena en Surrey como el transmisor ha mover más del norte. La señal DCF77 se admite también mejor como se utiliza en toda Europa no sólo del Reino Unido.
Va a utilizar la biblioteca de decodificador Arduino DCF77 escrito por Udo Klein. Udo ha desarrollado este código en los últimos años para sincronizar y bloquear a una señal aun cuando existe una enorme cantidad de ruidos e interferencias en la señal. Mientras prototipos mi nuevo reloj que constantemente gestiono para sincronizar y mantener un bloqueo a pesar de que el receptor de la señal DCF77 LED que debería mostrar un constante 1 segundo pulso de Alemania parpadea varias veces por segundo. Código de biblioteca Udo DCF77 es muy muy complejo pero en términos muy básicos que encaje en la frecuencia de DCF77 usando un lazo fase-bloqueado y una vez bloqueado realmente será predecir lo que el código de DCF77 contienen y luego buscar fragmentos de código en una señal muy ruidosa. Como cosas como la fecha no cambian que a menudo su código puede buscar estos datos en la señal de que lo mantengan bloqueados en! Una vez sincronizado con la señal DCF77 utiliza para "auto tune" el cristal de cuarzo backup asegurando que si se pierde la señal DCF77 el reloj todavía se mantiene en sincronía. Puedes leer más detalles sobre el desarrollo de esta biblioteca y sitio web/blog de mucho más en Udo aquí Blinkenlight.
La pequeña parte a esta biblioteca es que necesita una hora exacta en el Arduino para bloquear en la frecuencia de DCF77. Placas Arduino moderno no utilizan un cristal de cuarzo (una que ves en el tablero es para el puerto serie) pero un resonador cerámico inferior de 16MHz. Udo ha escrito un programa de prueba para comprobar si tu Arduino tableros resonador de cristal hasta el trabajo de ejecutar su biblioteca y se puede encontrar aquí Alcance DCF77 . Si la placa no está hasta el trabajo es muy fácil quitar el resonador y reemplazarlo con un cristal de cuarzo y un par de condensadores. He modificado mi Arduino UNO y funciona perfectamente con la biblioteca.
Ver fotos y esquemas de la ONU antes y después de la modificación.
Reloj principal
Usé 1"(26mm) tiempo de a exhibición de segmento 7 como estos han trabajado perfectamente en mi viejo maestro reloj y son legible desde una buena distancia en la noche y también durante el día. Estos son conducidos por una pantalla MAX7219 driver como puede hablar directamente con el Arduino utilizando un par de cables ha multiplexado pantalla simplifica el cableado.
Reloj secundario
La pantalla secundaria así como Mostrar la fecha y le dará información sobre el funcionamiento del reloj en particular el rendimiento decodificación DCF77. He usado una pantalla de LCD de I2C 4 x 20 para esto. Otra vez estos talk muestra directamente a la Arduino sobre un interfaz de 3 cables y son muy bueno en mostrar un montón de información de cerca. Ver Mostrar la animación en esta sección.
Monitor de pulso
Monitoreo pulso utiliza LED simple ya que proporcionan una rápida indicación visual de qué impulsos están siendo transmitidos por el reloj.