Home    Master Clock   Word Clock    Kenley Weather   Guestbook

Section   Top     Video   Credits   DCF77 Signal      Dial LEDs    Controls  Schematic    Atmega 328 Pins   Veroboards    Wiring     MAX2719     Wiring Jig   JQ6500   LEDs    DCF77 Receiver     RTC Mod  Speakers  Sounds     Dial Build    Inkjet Transfer    Board Mounting    Dial Surround   MAX2719 Mods    Case Build     Modern Case Build   DCF77 Filter    Code



Arduino DCF77 Analyzer Clock 
Arduino DCF77 Analyzer Clock Animation

Click for larger animation

This Clock displays the DCF77 time code on 2 rings of 60 LEDs on a large 12" (305mm) diameter dial. The inner ring shows the live time code for the next minute as it is received

and the outer ring shows the current time as long as the previous minute was received error free. A further 24 LEDs show decoder status and time info.

Decoded time and date are shown on 2 large 8 digit 7 segment displays while  DCF77 pulse timings and bit information are shown on a further 2 smaller 8 digit 7 segment displays.

The clock uses 2 x Atmega 328 microprocessors  (Arduino Uno) , 1 to control the DCF77 Analyzer and 1 to control a Udo Klein Super Filter.

The Super Filter allows advanced DCF77 signal processing and also tuning of the Arduino quartz crystal.

The filter is switchable and has 10 status LEDs to show the state of signal reception and quality of output.

The clock also chimes the hours, quarter hours and seconds tick through 2 off JQ6500 sound modules.


The clock can be mounted in various housings.

Arduino DCF77 Analyzer ClockArduino DCF77 Analyzer Clock









Picture Frame Version

Using the same dial design mounted in a shadow box picture frame and a round photo mount.


Arduino DCF77 Analyzer Clock



Rear View showing optional desk stand fitted to the base

Arduino DCF77 Analyzer Clock



YouTube Video showing clock power up, display test and DCF77 decoding




Demo YouTube Video Showing Clock Receiving & Decoding DCF77 Pulses as well as Chimming the Qtr/Hours





Demo YouTube Video Showing the Picture Frame style Clock Receiving & Decoding DCF77 Pulses as well as Chiming the Qtr/Hours and general build





Demo of Udo Klein's Super Filter working on this clock



The Analyzer Clock in two different case styles. The old style dial on the left is painted Antique white while the modern dial on the right is painted white.






This short video shows my DCF77 analyzer clock displaying and decoding the DCF77 signal. All sounds are off bar the DCF77 live signal.






Arduino DCF77 Analyzer Clock

This is the MKII version of my clock. Details of the MK1 tower clock  can be found here.











This clock is based on the DCF77 Analyzer Clock by Erik de Ruiter. 

Erik de Ruiter DCF77 Analyzer Clock 

above Erik de Ruiter's DCF77 Analyzer Clock

Erik has provided full details of his clock here on GitHub

See pictures of his clock here Flickr

and Arduino Project Hub

and his other amazing clocks here Flickr

Differences between Eric's Clock and my clock

Although based on Eric's clock I have made a few changes to the hardware. Please mix and match whatever option suits your needs but make sure you change the code to suit.


I use two custom made Arduino UNOs on the Vero board rather than a Uno and a Mega.


I use cheap 7 segment displays and dot matrix modules from China throughout and have changed the code to match. See the section on display errors as they work really well once these mods are carried out.


I use 2x  JQ6500 modules rather than the Adafruit sound board. As one of my boards is software controlled there are some software changes and another library to load.


As I have a Arduino Uno instead of a Arduino Mega I do not have all the spare pins to drive the decoder LEDs so I use a 3rd dot matrix module instead.


I have modified Udo Klein's Super Filter by adding extra status LED's. The brightness of these LEDs are PWM controlled by the DCF77 decoder Uno via 2 transistors not the Super Filter Uno.


There is also an LED test function added to the Super Filter to match the DCF77 decoder test funtion.


I only use 3mm LEDs and have chosen matched brightness LEDs to try and keep the brightness uniform.


I have added 4 seperate intensity levels in software so the Ring/Status LEDs, the large 7 segment displays, the small 7 segment displays and the Super Filter LEDs 

all have custom brightness levels depending on the readings from the single LDR.


I don't have a temperature or week number display on my clock and have modified the code to suit. 


I have added extra monitor LEDs to my Super Filter so on my clock there is only an option for Synthesized and Non Synthesized output. This is not switchable.


The DCF77 Sound on my clock has been modified to accentuate the difference between the incoming 0s and 1s. When the clock detects a 1 it just plays a slightly longer sound than 200mS.








The DCF77 Signal

DCF77 is a German long wave time signal and is transmitted from Mainflingen Germany, about 25 km south-east of Frankfurt am Main.

The DCF77 signal is an amplitude-modulated, pulse-width coded 1 bit/s data signal. As each bit is transmitted every second it makes it a very visible time signal for displaying on my clock.

DCF77 Time Code

The time is represented in binary-coded decimal. It represents civil time, including summer time adjustments.

DCF77 Time Code

The time transmitted is the time of the following minute; e.g. during December 31 23:59, the transmitted time encodes January 1 00:00.


The chart below shows the makeup of the DCF77 time code transmitted a 1 pulse per second over 60 seconds

DCF77 Signal Format






DCF77 signal range

With a relatively high power of 50 kW, the DCF77 transmissions can reliably be received in large parts of Europe, as far as 2,000 km (1,243 mi) from the transmitter in Mainflingen.





Dial LEDs

Inner & Outer LED Rings

DCF77 signal format

Filter & Info LEDs

DCF77 Analyzer Dial LEDs 

7 Segment Display LEDs

DCF77 Analyzer 7 segment displays 








The switch control panel flips down from under the clock



Switch Functions

Tick Sound

Turns the tick tock sound On and Off (removes power from the JQ6500 module)


Tick Volume non locking

Turns the tick tock volume up and down (Tick sound switch must be On)


Chime Control

Off chimes are turned off

24/7 chimes are on 24/7

Timer chimes are only on at set times of the day e.g. off at night


Chime Volume non locking

Up turns volume up

Down turns volume down

After each button press a test chime is played so you can hear the new volume setting


DCF77 Sound

On plays the DCF77 sound being received as beeps through the Piezoelectric sounder.

0 being 100mS and 1 played as a 500mS beep to make it easier to differentiate the received 0 & 1s.

Off the DCF77 beep sound is Off



Reset non locking

Filter resets the DCF77 Super Filter making it re-sync to the DCF77 signal

Analyzer resets the DCF77 Analyzer starting with a display test if enabled and then a clock re-sync. RTC time will be displayed from the time stored in the real time clock


DCF77 Source

Off disconnects the DCF77 signal from the clock

Analyzer the DCF77 signal is fed direct to the clock without any filtering

Filter the DCF77 signal is taken from the Super Filter and if the Super Filter is synchronized this signal is synthesized to the correct error free signal

Arduino DCF77 Analyzer Clock










Note 2 sound card options for tick tock sound JQ9500b or Adafruit Audio FX




LED rings and Info Display Schematic

Click to view 4000x4000 image

I have drawn this schematic  to make it easier when it comes to wiring the LEDs and Dot matrix modules.

Arduino DCF77 Analyzer Clock Schematic

Arduino DCF77 Analyzer Clock 7 Segment Display








Atmega 328 Pin Connections

Two Atmega 328 Microprocessors are used in this project.

One for the decoder and displays and one for the Super Filter.

Decoder and display pins

Super Filter Pins


The pins above are the pin for the ICs.

To convert to the IDE use the chart below.






Vero Board Layouts

All wiring to other boards from the main board is via PCB header connectors. The connections from the main board to the switch panel is directly wired.

This allows the main board and switch panel to be removed for maintenance.

Main Board

Arduino DCF77 Analyzer Veroboard

Main Board Rear

Sound Module Board front & rear

Tick Sound Board Option using Adafruit Audio Effect Sound Board

This board plugs in the socket in place of the JQ6500 Tick Tock module above.

Vero Board Rear

The pins on the bottom of the board plug into the pins on the JQ6500 board in place of the tick tock module

Optional Adafruit Audio FX Mini Sound Board - WAV/OGG Trigger 16MB Flash & Adafruit Mono 2.5W Class D Audio Amplifier Vero Board - PAM8302

Note PAM8302 sound board mounted vertically on bottom left of Vero Board

This board plugs in the socket in place of the JQ6500 Tick Tock module.



Adafruit Audio FX Mini Sound Board - WAV/OGG Trigger 16MB Flash & Adafruit Mono 2.5W Class D Audio Amplifier Vero Board - PAM8302 rear view

The pins on the bottom of the board plug into the pins on the JQ6500 board in place of the tick tock module

RTC Mount and 3rd LED Dot Matrix module connection board




Pre-built board and modules

LM2596 Regulator Module drops the voltage down to 5v.

This is adjusted by the 10K preset resistor on the module and measured after the revearse protection diode D4.

Adjust this before adding the Arduinos to the board.

RTC DS3231 I2C

This module stores the time from the decoded DCF77 signal.

The built in clock has temperature compensation and has battery backup in case of power failure.

Note the RTC module is modified to take non rechargeable batteries.


MAX2719 Dot Matrix Module

These modules drive the inner and outer LED rings (2 modules)  and the 3rd module drives all the other LEDs bar the Super Filter LEDs.

The LED matrix is removed and a PCB header soldered in place.



RCWL 0516 Doppler Radar Sensor Microwave

To turn the clock displays on only when the room is occupied I use motion detection.

You have a choice between the RCWL 0516 below that will detect movement from behind glass or the PIR module below.



PIR Module Infrared

The PIR module can be used instead of the Doppler Radar Sensor above.

The drawback of this device is it can not be used behind glass or Perspex etc.



Max2719 7 Segment Display 0.56"


I had a batch of these already but there are similar modules on tindie. Just make sure you are getting the larger 0.56" displays

Note a small modification may be required to prevent display errors on these modules.








Update Mottram Labs 0.56" MAX2719 7 Segment Display Modules

I have just found these modules online. I have tested them with my 0.56" Max2719 sketch and they work as my modules so no code change required on my sketch.

These are available from ebay for around £5.00

Here is the manufacturers site https://www.mottramlabs.com/

Mottram Labs 7 segment display 

Mottram Labs 7 segment display

These modules come ready assembled with a surface mount MAX2719 chip

Mottram labs 7 segment display 

Rear view shows diodes and capacitors as per MAX2719 datasheet.

Mottram labs 7 segment display

Looking at the schematic below from the Mottram Labs site the diode is wired so as not to give a voltage drop when daisy chaining modules.

I have confirmed this with a meter.

These modules do not need to be modified to work correctly.



Max2719 7 Segment Display 0.39"

This is the smaller 0.39" version used for the the bit, error and pulse displays.

They are available all over eBay and Amazon just make sure you get the modules with the header pins not soldered or the boards with the pins soldered to the back of the module.

Note a small modification may be required to prevent display errors on these modules.







JQ6500 16p Modules

One of these modules are used to play the ticking sound and the other the quarter and hour chimes.

With the sound files included with project you should be able to get away with the cheapest 16p module with 2M of memory.

The modules drive a single 3W 8Ω speaker each.

Sounds are loaded from your PC (not MAC) via USB using a simple program.












Vishay TLHY4400



Vishay TLHR4400-AS12Z



Vishay TLHO4400


Vishay TLHG4400-AS12



I used Vishay TLH44 series High Efficiency LEDs in a Ø 3 mm Tinted Diffused Package

The TLH.44.. series was developed for standard applications like general indicating and lighting purposes.
It is housed in a 3 mm tinted diffused plastic package. The wide viewing angle of these devices provides a high on-off contrast.
Several selection types with different luminous intensities are offered. All LEDs are categorized in luminous intensity groups. The green and yellow LEDs are categorized additionally in wavelength groups.
That allows users to assemble LEDs with uniform appearance.
• Standard Ø 3 mm (T-1) package
• Small mechanical tolerances
• Suitable for DC and high peak current
• Wide viewing angle

(mA) (nm) (mA) (V) (mA)
TLHR4400-AS12Z Red 1.6 13 - 10 612 - 625 10 - 2 3 20 GaAsP on GaP
TLHO4400 Soft orange 1.6 13 - 10 598 - 611 10 - 2.4 3 20 GaAsP on GaP
TLHY4400 Yellow 1.6 10 - 10 581 - 594 10 - 2.4 3 20 GaAsP on GaP
TLHG4400-AS12 Green 2.5 13 - 10 562 - 575 10 - 2.4 3 20 GaAsP on GaP












DCF77 Receiver


above my DCF77 Receiver Module from http://www.pvelectronics.co.uk

These items don't seem to be available anymore but try Amazon







I now use a single DCF77 receiver for all my clocks and have fitted a larger aerial to improve reception.

The aerial is located in the roof of my house away from any electrical noise. The 3.3v signal from the receiver is fed into a digital

repeater circuit built into my Pragotron Master Clock. The 3.3v signal is duplicated over 5 outputs and changed to 5v and can feed up to 10 DCF77 decoders.


PV Electronics DCF77 Receiver Module connections

Connections from left to right

 1.VDD  2.TCON  3.PON  4.GND  5.NC

Provides output in an inverted format (output is low, and goes high once per second).

Low power standby mode - connect PON to Vdd. Connect PON to GND for normal operation.










The clock uses around 450mA max with LEDs at full brightness and drops down to around 80mA with the displays off.

You should be safe with a 1000mA DC PSU from 7 -12volts (the onboard module controls the voltage)

I use a common PSU with 10 battery backed up fuses and 8 non backed up fuses to power all my clocks.

I always fit fuses to my projects as this PSU can put out 10 amps. The individual 2amp fuses in the PSU panel cover the cabling to my projects and I then fit a smaller fuse in my projects.











Before wires can be connected to the MAX 2917 matrix modules they will need to be modified.

Remove the Dot Matrix LEDs as these are not required.

Two sets of 8 90° pin connectors will to be soldered to the lower edge of the existing LED matrix connector.


Modified MAX7219 module with 90° pin connectors soldered in place to the bottom of the old LED Matrix connectors.

Wires are taken away from these points to the LED matrix on the main board.


Side view showing the pins soldered to the side of the old LED Matrix connector pins just above the PCB.




Wiring order

With around 400 odd wires to connect the wiring needs a bit of planning in order to fit the wiring runs in the gaps between the modules.

Buiild and fix all boards to the rear of the dial so the wiring harness runs are visible.

The dot matrix boards are removed and wired away from the clock.

Wire the Super Filter LEDs and fit into the dial.

Wire the DCF77 Status LEDs and fit into the dial.

The Super Filter and DCF77 Status LEDs are connected by header cables to the main board.

Wire all the LEDs on dot matrix module 3 and fit into the dial.

Wire from dot matrix module 3 to the small breakout vero board and then wire away to the LEDs for this module fitted in the step above.

Wire the outer LED ring and then fit into the dial.

Wire the outer ring dot matrix display leaving the wire ends long enough to terminate on the outer ring LEDs.

Re-fit the outer ring dot matrix display and terminate the wiring harness to the outer ring LEDs.

Wire the inner LED ring and then fit into the dial.

Wire the inner ring dot matrix display leaving the wire ends long enough to terminate on the inner ring LEDs.

Re-fit the inner ring dot matrix display and terminate the wiring harness to the inner ring LEDs.

Wire all the LEDs on dot matrix module 3 and fit into the dial.

Wire from dot matrix module 3 to the small breakout Vero board and then wire away to the LEDs for this module fitted in the step above.

Build header cables and connect to all boards.

Fit main Vero Board and then wire to the switch panel.

The LDR is mounted through the hinged wooden door the switch panel is fixed to so this is wired at the same time.

Fit speakers and connect to the Vero Board with the JQ6500 sound modules.



If you have drilled the correct sized holes in the dial all the LEDs will push fit into place with no glue.

Make sure the inner edges of the LED holes are coated with paint/varnish in the painting stage to help with the friction fit.


All LEDs are pre-wired in the wiring jig. See below for details.


Building a wiring Jig for the LEDs

Print out the dial onto a sheet of paper. Print in reverse or lay the paper back to front as you will be working from the rear of the clock.

Lay the sheet on an old bit of wood or melamine. Centre punch all LED centres and drill with a 3mm drill bit.

Arduino DCF77 Analyzer Clock

Wiring JIG for positioning and wiring the LEDs. LED locations are drilled out with 3mm frill bit.

LEDs are pushed into the holes and wired on the jig.

Once wired they are then mounted on the back of the dial.






Wiring the LED Rings


The schematic diagram above shows the wiring for a section of 8 LEDs of the outer LED ring..

First push the eight LEDs into the holes in the jig.

Bend all the anodes so they connect together as per the schematic and solder in place.

A wire is connected to the eight connected anodes from the LED matrix module later.

Fit a small bit of insulation sleeve over the cathodes then bend these legs around 15mm from the LED.

Cut around 5mm from the bend and solder a short length of wire long enough to reach to the next batch of eight LEDs.

Section of 8 LEDs wired on the jig.



Repeat the process above in batches of eight LEDs.

Each batch of eight LEDs will have it's own separate anode connection to the dot matrix module. Eight in total.


Outer ring LEDs completed along with the 16 wires connected to the dot matrix display.

The LEDs are then pushed into the holes in the dial and the matrix module is fixed back onto the dial.

Once in place the 16 wires from the dot matrix module are connected to the outer ring LEDs.

This process is repeated for the inner LED ring.

This is part of the schematic for the picture above.

The 16 wires from the dot matrix module are ready to be connected across the 8 sets of 8 LED sections.

Note the 8th set has only 4 LEDs.

See full schematic here.


Wiring the 3rd Dot Matrix module

This  module has only 24 LEDs connected.

The day of the week LEDs on the 1st section of 8 LEDs (only 7 connected)

The 2nd of 8 LEDs are CEST,CET Leap Yr,RTC Error,Synced, Error Period and Error Pulse Width (only 7 connected)

The 3rd of 8 LEDs are Buffer Full, Parity 3 to 1 pass and fail and Buffer Overflow (all 8 LEDs connected)

The 4th of 8 LEDs just contains 2 LEDs Minute marker and DCF77 Status

I could have just used 3 sets of 8 LEDs but using 4 sets made wiring simpler.

These LEDs are wired on the wiring jig then connected to a small Vero board where they are connected to the Matrix wires.

Note this board also acts as a mount for the RTC. 




Inner & Outer LEDs inserted in the jig holes and wired.

Note LED numbering is revearsed as this is the rear of the dial.

Arduino DCF77 Analyzer Clock 



Completed inner LED ring ready to be inserted into the dial and wired to the Dot  Matrix module PCB





LED wiring completed and wiring away to the switch panel in progress.

Compeleted Switch Wiring from Main Board includes LDR wiring




Wiring on completed clock









JQ6500 Setup


This clock uses 2 x JQ6500 modules one for the tick tock sound and one for the quarter and hour chimes.

The tick tock sound is hardware controlled and the chimes are software controlled.





Chime Circuit

This clock chimes are based on an old carriage clock.

Chimes are struck on a single bell with a chime for each quarter hour and also for every hour.

Switch SW7 is a 3 position locking switch.

The module is controlled over serial hardware pins 13 & 14 on the Arduino. Note the 1K resistor on the receive circuit. See main schematic.

Off - power is removed from the JQ9500 and the 24/7 /timer pin is held high to prevent the Arduino pin from being left floating

24/7 - The chime will sound the four quarters and the hours 24/7

Timed - The four quarter and hour chimes will only sound from 05:15 until 23:00 hrs. (set in code)

The volume is set in software via the Arduino and the Chime Volume up or down switch

Tick Tock Circuit

This is hardware controlled direct to the JQ6500 

Switch SW6 Tick On/Off just removes the power from the JQ6500.

Tick volume SW8 is a 3 way centre locking switch.

Operating the switch up or down sets the volume via the ADKey pin on the JQ6500.

The command to play the tick tock sound arrives  every 2 seconds from the Arduino.

The sound file must be less than 2 seconds.

Diode D15 isolates the ADKey from the Arduino output.


Option 2 using Adafruit Audio FX Sound Board

Connected direct to the 2 sec O/P

SW6 turns power on or off.

SW10 mounted outside the cabinet turns 2 sec pulse On/Off.

Adafruit Audio FX Mini Sound Board - WAV/OGG Trigger 16MB Flash


Adafruit Mono 2.5W Class D Audio Amplifier- PAM8302


Connected direct to the 2 sec O/P

SW6 turns power on or off.

SW10 mounted outside the cabinet turns 2 sec pulse On/Off.










The sound modules are each connected to an 8Ω 3W speaker attached to the side of the clock case.

These are available as a pair from Amazon


Speaker locations in the clock case.


2" speaker grills cover the speakers and were also from Amazon

Left side of clock showing speaker location. 











Your sounds will need to be loaded onto the JQ6500 module.

See these sites for info and Arduino libraries for these modules.

Arduino Library JQ6500_Serial

General info

JQ6500 tools

English Language MusicDownload.exe Uploader for JQ6500-16P
By way of Nikolai Radke an English Language version of the MusicDownload.exe tool.

English Language MusicDownload.exe v1.2a

I just run this file from windows (no need to install it) and it runs in English see details below.


When the file is run this window will open. Click FILES

Click CHOSE FILES and shift select all the files you want to be copied to the module. Note rename the files for the chimes as below.

1 to 12 are the hour chimes. 13 to 16 are the quater chimes and 17 is the test chime used when setting the chime volume using the Chime Volume Switch.

Click OPEN above then click on the FLASH tab.

Click on FLASH and you should get a message saying  FILE PROCESSING

It the files will fit on the module the message will change to FLASHING RUN and a green bar will show progress.


When flashing is completed the message will change to READY......

You can remove your module and plug it into the clock.



Sound Files

You can download my sound files here.

The files contain a grandfather clock tick tock and also the chime files.

 I mixed these sound files up on Audacity at 48KHz sample rate the max quality the JG6500 board can handle.

 The chimes were mixed on multiple channels to get the real harmonics then mixed back down to a single channel for the JQ6500.


12 o'clock chime built in Audacity.

Chimes sounds overlapp to create realistic sounding harmonics.

Tick Tock Sound     Chime Sounds








JQ6500 Library Modification


Using the standard library every time a chime is played the library waits in case there is a reponse. This causes the clock run out of sync and any received data errors until the next minute.

I found this on google and is a reply from the author of the library.


Before sending a command, the library waits for up to 10ms to see if there is any left over data from the device...


after sending the command the library waits for a response for up to 1000ms


and after that it will wait at least 150ms while reading the response


since in the case of playFileByIndexNumber you don't need a response at all


you could perhaps get away with adding

if(!responseBuffer && !bufferLength) return;

immediately after the last command byte is written (currently line 263 of JQ6500_Serial.cpp)


that should reduce the time required to about 10-20ms probably.


After adding the line if(!responseBuffer && !bufferLength) return; the clock worked fine.

JQ6500 library modification







Arduino DCF77 Analyzer Clock 




Modification of DS3231 AT24C32 I2C Precision Real Time Clock Module

My clock uses a DS3231 AT24C32 I2C Precision Real Time Clock Module instead of a DS1307.

The module comes supplied with a Lithium-Ion rechargeable battery see diagram above. I use a non rechargeable battery so have removed resistor R5

from the module as below.


Location of R5 on the DS3231 module.


Charging Resistor R5 removed.












Making The Dial

The dial requires oround 700 seperate drilling operations and numerous aounts of cutting and filling to complete.

I don't have a CNC machine so it was all done by hand.

The dial was drawn up on a Cad program and printed out onto injet water slide decal paper.


Click below to download the dial in various file formats including 2x 4000x4000 png files one for printing the dial and one including all layers for dial cutting


Close up of dial printing with 3mm LEDs to give an idea of scale.

The quality from the water slide decal paper is very good far better than my old ink jet can print.

Arduino DCF77 Analyzer Clock Dial


The dial is cut from 1.5mm thick aluminium sheet as it has to carry the weight of all the electronics and wiring.



Make a template by printing out the dial from your CAD program onto A3 paper.

Make sure it has centre marks for the LED holes and also the cut-outs for the 7 segment LED displays.




Carefully cutout the 7 segment display openings on the template with a craft knife.

Place the template on the alluminium sheet and tape it down to stop it moving.

Center punch all the center marks for the LEDs and draw around the openings for the 7 segment displays with a marker pen.



Remove the template to reveal the cutting/drilling marks on the alluminium sheets protective film.



Draw a circle the size of your dial with a compass using the centre punch mark from the DCF77 symbol LED as a centre point.



Cut out the circle with a hacksaw/jigsaw or bandsaw fitted with a metal cutting blade.



Cut out the 7 segment display openings with a coping/jig or fret saw. Take your time with this as it will save a lot of filing later.



Drill out all the holes for the LEDs. I start with a 1mm bit then a 2mm and then finally a 3mm bit.

This leaves the LEDs a friction fit once the paint and varnish is applied to the dial.



Mark center punch and drill 3 or 4 dial mounting holes.

Arduino DCF77 Analyzer Clock



With the holes drilled the protective film can be removed from the aluminium sheet and the dial rubbed down to remove all rough edges.

This will also give a good key for the paint.



Prime and paint with acrylic paint then a coat of matt varnish.

Antique White looks better on old dials or use pure white on modern dials.







Apply the water slide decal transfer.

I use Water Slide Decal paper from BIGBITE Studio

They have some good tutorials on their site.


bigbite studio transfer paper

Water slide decals are printed out on an inkjet printer soaked in water then slid into place.

They give a very detailed print and once given a coat of varnish are tough.

Don't forget to order transparent transfers so the dial colour can be seen through the transfer.

Follow the instructions with the pack as they do vary.


On my transfers I print out the dial on transfer paper let it dry and then cut it out to just under the size of the dial. I then give it a coat of acrylic varnish.

I set my printer as follows: Plain Paper, Photo & High Speed Off

This stops my printer from over inking the paper

When the varnish is dry the transfer is soaked in water until the transparent transfer comes away from the white backing sheet.




Line up the transfer with the dial and slide it over the dial.






Make sure the centre dots line up with the centre of the holes in the dial then slide the backing sheet back off the transfer.






Carry out any final adjustments then remove any air bubbles.

Allow to dry then apply some clear acrylic varnish to project the transfer.

Once this dries carefully cut away the transfer around the 7 segment display cut-outs with a craft knife.

Then cut the transfer off all the LEDs hole. I used a leather punch just smaller than the hole.

Give it another coat of varnish to seal all the cut edges

Leave it overnight to dry.

Turn the dial over.

The PCB and modules are fixed to wooden mounting blocks cut from off cuts of timber.

These block are glued to the dial with impact adhesive.

Arduino DCF77 Analyzer Clock








Modules in position on the wooden blocks ready to be secured by M2 screws.

The main PCB fits on top of the lower 7 segment modules and is raised up on brackets.




JQ6500 sound module board and LED wiring board in place.

RTC is mounted on the LED wiring board but connected on the main board.






Main board mounted on standoff brackets.








Dial Surround Restoration

The original Oak dial surround was covered in a thick coat of varnish and years of dirt.




I used paint stripper to remove the varnish and then wood bleach to get rid of the very dark areas of wood.



The surround was then varnished with matt acrylic to enhance the grain of the wood.





Back box showing switches folded away. The back box was too badly damaged to strip and re-varnish as some

of the wood was either smashed or broken. I replaced or repaired as required then re-glued the box to make it rigid again.

I then painted it matt black.

DCF77 Analyzer backbox 








Correcting MAX7219 7 Segment Module Display Errors

The 7 segment modules seem to work fine work fine on their own. However, once you start daisy chaining them together the displays tend to error.

The datasheet calls for a 10μF and 0.1μ capacitor across the supply rails as close to the MAX7219 as possible.

I notice the 0.1μF capacitor is in place but the 10μF capacitor is missing. Add this capacitor in the 2 holes above the diode D1 on the rear of the display.


There is also a diode in series with the supply rail. When daisy chaining modules all these diodes are in series so the further down the line of modules the more volts are dropped causing display errors.

Remove this diode on each display and replace it with a wire strap.

0.39" Display

Arduino DCF77 Analyzer Clock 7 Segment Display 




0.56" Display

Note the black tape over the 3rd and 6th digit tp make colons.

7 segment display module .56 inch





10μF capacitor added to the rear of the PCB on the +&- pins of the MAX7219 IC

The 1N4148 diode is replaced by a wire link.

Increasing The Constrast On The 7 Segment Modules

The 7 segment displays traditionally would have a sheet of red perspex to match the LED colour placed over the top of the display.

This was designed to hide the not lit segments and provide contrast to the LED segments that are on.

 I have used Neutral Density Heat Proof Dimming Transparent Acetate Sheet  ND 0.9.

This hide the not lit LED segments and provides the contrast needed in bright conditions. It has the advantage that it work on all colour LEDs.

My 0.56" modules are a deeper red than the 0.39" modules so I would need 2 different matching red Perspex to sheets to work well on both modules.

The acetate sheet is also very cheap the only disadvantage is that it is too flimsy to cover large areas without support.


The picture below shows the effect of the ND sheet. The lit LED segments have more contrast and the unlit LED segments are hidden. It also hides the black tape masking for the colon display.

ND sheet for 7 segment displays







Modification of the RTC Time 7 Segment Display Module to Show Colon Digit Separators

The standard display only has decimal points to separate the digits and has no colon that would normally be used in a clock display

I have set digits 3 and 6 to always display a "o"  lower case o

Black plastic tape is then cut with a craft knife and placed over the 2 digits leaving a small section showing

When the display is on these visible sections now display colons







Clock Case Build

Complete clock case


Arduino DCF77 Analyzer Clock

Dial Bezel Removed Showing Dial Set in the wooden surround and the recess for the dial bezel hinge cut into the dial surround.

Arduino DCF77 Analyzer Clock

7 Segment displays and LEDs removed 

Arduino DCF77 Analyzer Clock

Dial removed showing surround and backbox.

Arduino DCF77 Analyzer Clock Case

Dial Surround removed showing back box

Arduino DCF77 Analyzer Clock Case

Brass Dial Bezal

Arduino DCF77 Analyzer Clock Bezel 

Bezel fitted to dial. These bezels are available from clock making supplies.

With dial surround.






Side view of the clock case.

The top catch releases the dial bezel while the lower catch releases the dial surround and allows it to hinge out from the case allowing access to the circuit boards.



Two of these latches are used both attached to the dial surround.











Alternative Modern Case Style

This case uses a large picture frame with a basic square back box to hold the electronics and to hold the dial away from the wall to give it some depth.

Outer frame and glass removed to reveal the thick photo mount card over the dial (a thin ply or wood  sheet can also be used with a routed edge)

Photo mount removed to show how the dial is fixed to the back plate with 4 small screws.

The backplate holds the dial and has a large circular cut-out for the electronics.

It is hinged at one edge to the dial can swing out.

The speakers are mounted on both sides with holes and grills as per the other case.

The switches are mounted on the side in a cut-out.







DCF77 Filter 

When switched on the Udo Klein's Super Filter actively processes the incoming DCF77 signal

from the antenna/receiver. After a few minutes of sampling the DCF77 signal the Super Filter will predict the DCF77 signal and use this

to determine if the incoming signal contains any errors. The Super Filter will then synthesize a corrected DCF77 signal even if the signal is absent.




Super Filter Mod

See the schematic below I have modified the Super Filter Code to add extra monitor LEDs.

In order to do this I have removed 4 modes from the filter just leaving synthesized and inverted synthesized.

Note the PWM LED brightness control is via the Arduino controlling the DCF77 decoding not the Super Filter Arduino.

I have also added an LED test to the Super Filter to Match the LED Test on the main clock. This activates on reset or power up.

On power up the Supe Filter LED test starts and finishes then the main clock LED test starts.

DCF77 Analyzer Super Filter

The filter will lock onto the DCF77 signal even if the signal is really noisy. As days progress the filter uses the incoming DCF77 signal to adjust the Arduino crystal frequency.

This means the filter will stay in time even if the DCF77 signal is lost for many days.

In my clock the DCF77 signal is always fed to the Super Filter Arduino even if the DCF77 Source switch is set to off.

This allows the Super Filter to stay in sync and keep adjusting the quartz crystal from the Arduino.

Arduino DCF77 Super Filter




Super Filter example

The top row shows the Super Filter turned on.

Once synchronized and tuned into the signal the Super Filter will synthesize a good signal even when the signal is completely lost.

On a noisy signal the Super Filter will search for known signal bits and keep itself synchronized to the transmitter.

The bottom row shows the Super Filter turned off. Whatever signal is received (good or bad) is sent to the decoder.


Below Super Filter correcting a noisy signal as displayed on the DCF77 Scope

Normal Signal No super filter - Normal signal from the DCF77 receiver

Noisy Signal No Super Filter - The aerial is moved near a LCD screen to generate noise over the signal

No Signal- The aerial is disconnected and moved connected via the super filter

Noise On Super filter On- The noise is filtered out leaving a perfect signal.




Super Filter Monitor LEDs

Arduino DCF77 Super Filter

Name  Description 
Filter On   lights when the DCF77 Source switch is set to FILTER and means the Super Filter is decoding and synthesizing the DCF77 signal 
DCF77 Filtered  the DCF77 Synthesized signal coming out from the Super Filter 
DCF77 Signal  the DCF77 signal coming direct from the DCF77 receiver with no filter applied 
Signal Difference  the difference between the incoming DCF77 signal and the Synthesized signal. In normal operation this will flash as the received signal shape is often slightly “wider” than the synthesized signal.
Filter Synchronized  best possible quality, clock is 100% synced
Filter Locked  clock driven by accurate phase, time is accurate but not all decoder stages have sufficient quality for sync 
Sync Lost <200mS   clock was once synced, inaccuracy below 200 ms, may re-lock if a valid phase is detected 
Sync Lost >200mS  clock was once synced but now may deviate more than 200 ms, must not re-lock if valid phase is detected 
Signal Dirty time data available but unreliable 
Signal Bad  waiting for good enough signal 




Filter Synchronized - Timing is completely locked to DCF77 and the data is most up to date.

Filter Locked - If the quality factor of the decoder stages drops but the quality factor of the phase decoder stays high enough the clock will transition into the state locked.

In this state it is still phase locked to DCF77 but it may become out of sync by a second but only if a leap second is transmitted.

Sync Lost <200mS - This indicates that the quality factor of the decoder stage and the quality factor of the phase decoder have dropped. In this state the timer relies on the quartz crystal timings and the clock will slowly drift out of phase with the DCF77 signal. This is a warning that the clock may be running slightly out of sync.

Sync Lost >200mS - Once the clock has started to drift out of phase for more than a set period of time (depending on the tuned accuracy of the quartz crystal) then this LED will light



Below with the Super Filter turned Off and a bad signal the clock errors and will reject this minutes data.

Note the DCF77 Filtered LED pulses as normal but as the Filter is turned off the filtered signal is not fed to the clock decoder.

DCF77 Signal Error




Below with the Super Filter turned On and a bad signal the clock has no errors and the clock is able to decode the data as normal.

Note the DCF77 Filtered LED pulses as normal

DCF77 Superfilter


















Modified Super Filter


DCF77 Analyzer Clock