Reloj Analizador DCF77 Arduino MK2 – Visualización Precisa de Código Horario en Anillo de 60 LEDs
Componentes y materiales
| Arduino Nano R3 | × | 1 |
Nota: Usé ATmega328 en placa propia, pero sirve Nano o UNO. El Superfilter Nano/UNO necesita cristal de cuarzo, no resonador.
Sobre este proyecto
Detalles en mi web: Arduino DCF77 Analyzer Clock MK2

Este reloj muestra el código horario DCF77 en 2 anillos de 60 LEDs en una esfera de 12" (305 mm). El anillo interno muestra el código en vivo del minuto siguiente según se recibe; el externo muestra la hora actual si el minuto previo se recibió sin errores.
24 LEDs adicionales muestran estado del decodificador e info horaria. Hora y fecha decodificadas en 2 displays 7 segmentos de 8 dígitos grandes; tiempos de pulso y bits DCF77 en 2 displays 7 segmentos de 8 dígitos pequeños.
Usa 2 × ATmega328 (Arduino Uno): uno para el Analizador DCF77 y otro para el Super Filtro de Udo Klein. El Super Filtro permite procesamiento avanzado de señal DCF77 y ajuste del cristal del Arduino. Es conmutable y tiene 10 LEDs de estado para recepción y calidad. El reloj también suena horas, cuartos y segundos mediante 2 módulos JQ6500.
La mayor electrónica va en la parte trasera de la esfera, adaptable a distintas cajas.
Incluyo diseños para caja estilo retro y moderno: retro en caja de reloj antiguo, moderno en marco negro.

Paso 1: Créditos
Basado en el DCF77 Analyzer Clock de Erik de Ruiter, versión actualizada de mi MK1.


Arriba: reloj de Erik; abajo: mi MK1. Erik publicó detalles en GitHub.
Diferencias con el reloj de Erik:
- Dos Arduino UNO caseros en veroboard (no Uno + Mega).
- Displays 7 segmentos y matriz de puntos baratos de China; código adaptado (ver corrección de errores).
- 2 × módulos JQ6500 (no Adafruit sound board); uno por software, requiere librería extra.
- Sin pines libres en Uno para LEDs decodificador → uso 3er módulo matriz de puntos.
- Super Filtro modificado: LEDs de estado extra, brillo PWM controlado por Arduino decodificador (no por Super Filtro). Añadido test de LEDs al Super Filtro.
- Solo LEDs 3mm con brillo igualado para uniformidad.
- 4 niveles de intensidad software (anillos/LEDs estado, displays grandes, displays pequeños, LEDs Super Filtro) según única LDR.
- Sin display de temperatura o semana; código adaptado.
- Más LEDs monitor en Super Filtro: solo opción Señal Sintetizada / No Sintetizada (sin cambio de modos como en Erik).
- Sonido DCF77 modificado: '1' suena 500ms vs 100ms del '0' para diferenciarlos.
Paso 2: Videos
- Video 1: Reloj funcionando con tic-tac y campanadas hora/cuartos. Esquema esfera y lectura displays.
- Video 2: Encendido, test displays, decodificación hora/fecha.
- Video 3: Funcionamiento Super Filtro Udo Klein.
- Video 4: Versión marco cuadro funcionando con sonidos.
- Video 5: Señal DCF77 en vivo decodificada (solo sonido señal).
Paso 3: Controles

7 interruptores en barra metálica, montados en puerta abatible bajo el reloj.


Funciones:
- Sonido Tic-Tac On/Off: Alimenta/desalimenta módulo JQ6500.
- Volumen Tic-Tac (no bloqueo): Sube/baja volumen (requiere Tic-Tac On).
- Control Campanadas: Off / 24/7 / Timer (solo 05:15–23:00, configurable en código).
- Volumen Campanadas (no bloqueo): Sube/baja; suena test tras cada pulsación.
- Sonido DCF77 On/Off: Reproduce señal recibida por piezo: '0'=100ms, '1'=500ms.
- Reset (no bloqueo): Filter → reinicia Super Filtro (re-sincroniza); Analyzer → reinicia Analizador (test displays + re-sync; muestra hora RTC).
- Fuente DCF77: Off (desconecta) / Analyzer (señal directa) / Filter (señal del Super Filtro, sintetizada si sincronizado).
Paso 4: Esquemáticos
3 esquemáticos: placa principal, módulos matriz de puntos, módulos display 7 segmentos.

El 2º es muy grande (4000x4000): ver a tamaño real.

Paso 5: Conexiones pines ATmega
2 ATmega328 en veroboard custom. UNO estándar sirve para Analizador; para Super Filtro UNO con cristal de cuarzo (no resonador). Cómo añadir cristal a Arduino UNO.



Paso 6: Layouts en Veroboard
Módulos pre-construidos se enchufan; placa principal (Arduinos, sonido, 3ª matriz) en veroboard.


LEDs mostrados en placa principal solo referencia. Conexiones a otras placas vía conectores PCB header. Cableado a panel interruptores directo (permite extraer placa principal y panel para mantenimiento).




Nota: RTC montado aquí pero conectado por cable header.
Paso 7: Módulos pre-construidos

- Regulador LM2596: baja a 5V. Ajusta preset 10K (mide tras diodo D4) antes de poner Arduinos. Consumo: ~450mA máx (LEDs al máx), ~80mA (displays apagados). Fuente 1000mA 7-12V segura.
- RTC DS3231 I2C: Guarda hora decodificada. Compensación temperatura, batería backup. Modificado para pila no recargable (ver paso 18).
- Módulo Matriz MAX7219: 3 módulos. 2 para anillos interno/externo, 3º para LEDs estado (excepto Super Filtro). Matriz LED original retirada, header PCB soldado.
- Sensor Radar Doppler RCWL-0516: Detección movimiento tras cristal. Alternativa: PIR (no funciona tras cristal).
- Display 7 segmentos MAX7219 0.56": Hora/fecha. Requiere modificación para evitar errores (ver paso 24).
- Display 7 segmentos MAX7219 0.39": Bits, errores, pulsos. Pines header sin soldar o en cara posterior. Misma modificación.
- JQ6500 16 pines: 1 para tic-tac, 1 para campanadas. Archivos de sonido incluidos; módulo barato 2MB basta. Altavoz 3W 8Ω cada uno. Carga sonidos desde PC (no Mac) vía USB.
- Receptor DCF77: Módulo PV Electronics (web). Conexiones (izq→der): 1.VDD 2.TCON 3.PON 4.GND 5.NC. Salida invertida (baja, pulso alto/seg). PON a VDD = standby; PON a GND = normal. Alejar de ruidos eléctricos; orientar al transmisor.
Paso 8: Orden de cableado
~400 cables → planificación esencial. Fija placas a trasera de esfera para ver tendidos.
- Modifica módulos matriz y cablea lejos del reloj.
- Cablea LEDs Super Filtro y monta en esfera.
- Cablea LEDs estado DCF77 y monta.
- Conecta ambos a placa principal por headers.
- Cablea LEDs en módulo matriz 3, monta en esfera.
- Conecta módulo 3 a veroboard pequeño y de ahí a LEDs.
- Cablea anillo externo, monta en esfera.
- Cablea matriz anillo externo (cables largos), refija matriz, conecta a LEDs.
- Repite para anillo interno.
- Repite paso 5-6 (duplicado en original).
- Construye cables header y conecta a todas las placas.
- Fija veroboard principal, cablea a panel interruptores (LDR en puerta abatible, cableado simultáneo).
- Fija altavoces y conecta a veroboard con JQ6500.

Si taladras agujeros correctos, LEDs encajan a presión sin pegamento. Pinta/barnica bordes internos para mejor ajuste.
Paso 9: Modificación módulo matriz MAX7219

Retira matriz LED original (no se usa).


Suolda 2 juegos de 8 pines 90° en borde inferior del conector original.

Módulo modificado con pines 90° en parte inferior del conector original. Cables salen hacia matriz LED en placa principal.
Paso 10: Plantilla de cableado (Jig)
La plantilla mantiene LEDs en posición con espaciado correcto para cablear fuera del reloj.

Imprime esfera en papel (invertido o por detrás). Centro y taladra centros LEDs con broca 3mm (ajuste a presión; prueba antes).


Útil: escribe números de LED e info en jig (los LEDs van en reverso/antihorario).

Paso 11: Cableado anillos LED interno y externo


Inserta 8 LEDs en jig. Dobla ánodos juntos según esquema y suelda. Conecta cable a los 8 ánodos unidos (irá a módulo matriz). Pasa funda termo en cátodos, dóblalos ~15mm, corta ~5mm del doblez, suelda cable corto al siguiente grupo de 8.



Cada grupo de 8 LEDs tiene su conexión de ánodo separada al módulo matriz (8 total). Último grupo: solo 4 LEDs. Repite para anillo interno.

16 cables del módulo matriz conectados a 8 secciones de 8 LEDs. Esquema completo 4000x4000 aquí.
LEDs utilizados
Vishay TLH44 serie Alta Eficiencia, Ø3mm paquete difuso tintado. Ángulo visión amplio → alto contraste on/off. Categorizados por intensidad luminosa para uniformidad.




Paso 12: Cableado 3er módulo matriz de puntos

Solo 24 de 64 LEDs conectados:
- Sección 1 (8 LEDs): Día semana (7 conectados).
- Sección 2: CEST, CET, Año bisiesto, Error RTC, Sincronizado, Error período, Error ancho pulso (7).
- Sección 3: Buffer lleno, Paridad 3-1 pass/fail, Desbordamiento buffer (8).
- Sección 4: Marcador minuto, Estado DCF77 (2).
Usé 4 secciones para simplificar cableado. LEDs en jig → veroboard pequeño → cables matriz. Este veroboard también soporta RTC.
Paso 13: Cableado panel interruptores

Panel abatible bajo reloj, fijado a puerta trasera. Cableado soldado directo a placa principal (incluye LDR).




Paso 14: Sonidos campanadas y tic-tac en JQ6500


2 × JQ6500: 1 tic-tac (control hardware), 1 campanadas (control software).
Circuito Campanadas

SW7: interruptor 3 posiciones bloqueo. Control serie pines 13/14 Arduino. Resistencia 1K en Rx (ver esquema principal). Off: corta alimentación JQ6500, pin 24/7/timer a HIGH (evita flotante). 24/7: suena cuartos y horas siempre. Timer: solo 05:15–23:00 (en código). Volumen por software via Arduino y switches volumen.
Circuito Tic-Tac

Control hardware directo a JQ6500. SW6 On/Off: corta alimentación. SW8 Volumen: 3 vías centro bloqueo; arriba/abajo ajusta volumen via pin ADKey JQ6500. Comando play cada 2s desde Arduino. Archivo sonido < 2s. Diodo D15 aísla ADKey de salida Arduino.
Paso 15: Altavoces

Cada módulo JQ6500 → altavoz 3W 8Ω en lateral de caja (pares en Amazon).




Paso 16: Cargar sonidos en JQ6500
Recursos: Librería Arduino JQ6500_Serial, Info general, Herramientas JQ6500.
Normalmente traen cargador chino (no funciona en Mac). Instrucciones en mi web. Los míos venían sin cargador; usé versión inglesa de Nikolai Radke: English Language MusicDownload.exe v1.2a (JQ6500_English_MusicDownload_V1_2a.zip). Ejecuta sin instalar.
- Conecta JQ6500 por USB.
- Ejecuta programa → clic FILES.
- CHOOSE FILES → selecciona archivos (nombra: 1-12 horas, 13-16 cuartos, 17 test volumen).
- OPEN → pestaña FLASH → FLASH → "FILE PROCESSING" → "FLASHING RUN" (barra verde) → "READY". Retira módulo.
- Repite para tic-tac (1 archivo) en 2º módulo.
Sonidos mezclados en Audacity a 48kHz (máx calidad JQ6500). Campanadas: multicanal para armonías reales, luego mono. Archivos: bell.zip, tick_tock.zip.
Paso 17: Modificación librería JQ6500
Modifica JQ6500_Serial.cpp en carpeta librerías Arduino.
La librería estándar espera respuesta tras cada comando (hasta 10ms antes, 1000ms tras enviar, 150ms leyendo). Esto desincroniza el reloj. Solución del autor (sleemanj): añade tras línea 263:
if(!responseBuffer && !bufferLength) return;
Reduce espera a ~10-20ms. Reloj funciona bien.

Paso 18: Modificación RTC (pila no recargable)


Módulo DS3231 AT24C32 I2C trae pila Li-ion recargable. Yo uso pila no recargable → elimina resistencia R5.


Paso 19: Plano construcción esfera

Esfera requiere ~700 taladros + cortes/fresados. Sin CNC: todo a mano.



Diseño en TurboCAD, impreso en papel transferencia inyección agua. Calidad excelente. Archivos en TurboCad_Drawings.zip (varios formatos, PNG 4000x4000). Contacta para otros formatos.
Paso 20: Corte y taladrado esfera

Esfera en chapa aluminio 1.5mm (soporta peso electrónica).

Plantilla: imprime plano en A3, centra marcas LEDs y recortes displays. Recorta recortes displays con cúter. Fija plantilla a chapa, centra todos los centros LEDs, marca recortes displays.




Corta círculo con sierra caladora/metal. Recortes displays: sierra de calar/copiar, con calma (ahorra lijado). Taladra LEDs: 1mm → 2mm → 3mm (ajuste a presión tras pintar). Marca y taladra 3-4 agujeros fijación esfera. Retira film, lija bordes (clave para pintura).



Imprimación + pintura acrílica + barniz mate. Blanco antiguo para estilo retro, blanco puro para moderno.
Paso 21: Aplicar transferencia (calcomanía) a la esfera

Transferencias agua: imprimen en papel especial, secan, sumergen en agua, deslizan a posición. Detalle alto, resistentes con barniz. Pide transferencias transparentes para ver color base. Sigue instrucciones del paquete.
Mi proceso: imprimo, seco, recorto casi a tamaño esfera, barniz acrílico. Seco → sumerjo hasta que transfer se separa del papel blanco.



Alinea puntos centro con agujeros, retira papel soporte. Elimina burbujas. Seca → barniz acrílico. Recorta transfer en recortes displays (cúter) y agujeros LEDs (punzón cuero ligeramente menor). Otra capa barniz sella bordes. Deja secar 24h.

Busca "Papel Transferencia Agua Transparente A3".
Paso 22: Soportes PCB/Veroboard en esfera

PCBs y veroboards en bloques madera (restos), pegados a esfera con adhesivo contacto (aplica ambas caras, espera tacto, presiona: unión instantánea, endurece 24h).



Módulos inferiores en bloques, atornillados M2. Placa principal sobre displays 7 seg, elevada en soportes custom. Placa JQ6500 y cableado LEDs en su sitio. RTC en placa cableados pero conectado en principal.
Paso 23: Restauración aro y caja trasera
Aro (bezel) esfera: Caja de eBay sin aro ni caja trasera (rota).


Decapante pintura → lejía madera para zonas oscuras.


Barniz mate acrílico realza veta.
Caja trasera: Muy dañada → atornillada/pegada, masilla grietas, pintada negro mate.
Paso 24: Corrección errores display MAX7219 7 segmentos
Módulos funcionan solos, pero en cascada fallan.
Display 0.39"

Datasheet pide 10µF + 0.1µF cerca del MAX7219. Solo tiene 0.1µF. Añade 10µF en 2 agujeros sobre diodo D1 (cara posterior).


Diodo en serie con alimentación: en cascada caen voltios → errores. Elimina diodo y puenta con hilo.
Display 0.56"



Igual: 10µF en pines +/– del MAX7219 (cara posterior). Diodo 1N4148 → puente hilo.
Paso 25: Aumentar contraste módulos 7 segmentos

Tradicional: lámina plexi rojo sobre display (oculta segmentos apagados, da contraste). Yo uso Lámina Acetato Transparente Neutra Densidad ND 0.9 (resistente calor). Oculta segmentos apagados, da contraste en luz fuerte, sirve para cualquier color LED. Ventaja: barata. Desventaja: frágil para áreas grandes sin soporte.
Imagen muestra efecto: segmentos encendidos con más contraste, apagados ocultados. También oculta cinta negra de los dos puntos.
Paso 26: Modificación display RTC hora para mostrar dos puntos

Display estándar solo tiene puntos decimales, sin dos puntos para reloj.

En código: dígitos 3 y 6 siempre muestran "o" minúscula.


Cinta negra recortada con cúter sobre esos dígitos dejando ventana. Al encender: se ven dos puntos.
Paso 27: Montaje esfera en caja retro


Esfera tras aro latón (conseguido en proveedor relojería).


Aro sujeto por cierre latón embutido en aro madera. Mi bisagra distinta a original → tallé frente con formón, rellené trasera con madera teñida.



Esfera retirada: agujeros fijación en aro madera y caja trasera. Panel interruptores plegado arriba sobre trampa base.

Vista lateral: esfera y aro madera cerrados con mismo tipo de cierre. Tornillo latón bajo pestaña aro asegura alineación al cerrar.
Paso 28: Montaje esfera en caja estilo moderno

Marco grande con caja trasera simple (separa esfera de pared para profundidad).






Trasera sujeta esfera (4 tornillos), recorte circular para electrónica, bisagrada para acceso. Altavoces y rejillas como en caja retro. Interruptores en recorte lateral con rejilla encima.
Paso 29: Filtro DCF77 (Super Filtro Udo Klein)
Activado, procesa señal DCF77 entrante. Tras minutos de muestreo, predice señal y detecta errores. Sintetiza señal corregida incluso si señal ausente.

Mod Super Filtro: Ver esquema. Código modificado: LEDs monitor extra. Eliminados 4 modos → solo Sintetizada / Invertida Sintetizada. Control PWM brillo LEDs via Arduino decodificador (no Super Filtro). Test LEDs añadido (coincide con test reloj). Al encender: test Super Filtro → test reloj principal.

Se sincroniza incluso con señal muy ruidosa. Ajusta frecuencia cristal Arduino con señal entrante → mantiene hora días sin señal. En mi reloj, señal DCF77 siempre va a Super Filtro (incluso con switch Off) para mantener sincronía y ajuste cristal.

LEDs estado:
- Filter On: switch en FILTER → Super Filtro decodificando/sintetizando.
- DCF77 Filtered: señal sintetizada saliendo.
- DCF77 Signal: señal directa receptor (sin filtro).
- Signal Difference: diferencia señal entrante vs sintetizada (parpadea normal: recibida suele ser más "ancha").
- Filter Synchronized: mejor calidad, 100% sincro.
- Filter Locked: fase precisa, hora exacta, pero no todas etapas decodificador con calidad para sync.
- Sync Lost <200ms: sincronizado antes, deriva <200ms, puede re-bloquear si fase válida.
- Sync Lost >200ms: deriva >200ms, no debe re-bloquear aunque detecte fase válida.
- Signal Dirty: datos hora disponibles pero poco fiables.
- Signal Bad: esperando señal suficiente.
Detalles:
- Filter Synchronized: timing bloqueado a DCF77, datos más actualizados.
- Filter Locked: calidad decodificador baja pero fase alta → estado locked. Fase bloqueada pero puede desincronizar 1s si segundo intercalar.
- Sync Lost <200ms: calidad fase y decodificador bajan. Reloj usa cristal → deriva lenta. Aviso: puede estar ligeramente fuera de sync.
- Sync Lost >200ms: deriva supera umbral (según precisión cristal ajustado) → enciende este LED.


Fila superior: Super Filtro ON. Sincronizado y afinado, sintetiza señal buena incluso sin señal. En señal ruidosa, busca bits conocidos y mantiene sync. Fila inferior: Super Filtro OFF. Lo que llegue (bueno/malo) va al decodificador.

Señal normal sin Super Filtro → Señal ruidosa (pantalla LCD cerca) sin Super Filtro → Sin señal (antena desconectada) con Super Filtro → Ruido con Super Filtro ON: ruido filtrado, señal perfecta.

Super Filtro OFF + señal mala: reloj da error, rechaza minuto. LED DCF77 Filtered pulsa normal pero no alimenta decodificador (switch Off).

Super Filtro ON + señal mala: sin errores, decodifica normal. LED DCF77 Filtered pulsa y alimenta decodificador.
Paso 30: Código horario DCF77

Esquema esfera para leer señal DCF77 entrante.
Paso 31: Código
2 códigos separados: Super Filtro y Analizador.

DCF_77_ANALYZER_CLOCK_Mk2_43.zip | Superfilter07DCF77AnalyzerMK2.zip
Código
- Código Decodificador DCF77
- Código Super Filtro
Código Decodificador DCF77 (Arduino)
No preview (download only).
Código Super Filtro (Arduino)
No preview (download only).
GitHub
https://github.com/sleemanj/JQ6500_Serial
Piezas personalizadas y envolventes
Archivos CAD para esfera y plantilla (formatos CAD e imagen): turbocad_drawings_TESmpq119g.zip
Sonidos para JQ6500 campanadas: bell_wYLvJG1pUl.zip
Sonidos para JQ6500 tic-tac: tick_tock_FLj9XHTJoB.zip
Esquemáticos
Esquemático principal: 
Esquemático cableado módulo matriz MAX7219 a LEDs: 
Esquemático cableado módulos display 7 segmentos MAX7219: 
Proceso de manufactura
- Reloj de cuco: historia, artesanía y evolución moderna
- Reloj POV con Arduino: Construye una pantalla LED de persistencia de visión
- Construye un reloj Numitron retro con Arduino: Simple, fiable y eficiente energéticamente
- Construye un Reloj de Pared Elegante con Anillo Neopixel 60 LEDs Adafruit y Arduino
- Reloj de Palabras DIY con Arduino: Construye una Pantalla Elegante en Tiempo Real
- Construye un reloj en tiempo real con Arduino para horarios de oración islámica
- Construye un Spybot controlado por Bluetooth con Arduino
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Monitor de Temperatura y Reloj en Tiempo Real con Arduino Due y Pantalla TFT 3.2"
- Reloj Preciso de 7 Segmentos con Arduino Pro Mini y RTC DS1302
- Construye un reloj despertador fiable con RTC DS1302 y Arduino UNO