Home    Master Clock   LCD Master Clock    Kenley Weather

Section   Top  About  Features   TFT   PWR Supply   Switches    Atemega 328   Advance  Retard  PS100   Lavet   Sound Module   Sound Files   DC Step Up    H Bridge    Quartz Removal    Sw Locations    Vero Board  Schematic    Backlight     Light Switch    LED Strips    EEPROM Erase    Code




Arduino Pragotron PJ42 Clock

DCF77 Synchronized 24v Lavet Type Clock Motor Driver




Many Pragotron clocks supplied from antique shops or architectural salvage dealers have had their original 1 minute drive movements removed and replaced by quartz movements.

Although they work perfectly well and keep reasonable time these quartz modified clocks lose their original look and feel as they now tick once a second and no longer have the animated step forward of the hands and soft "clunk" sound once every minute.

This circuit enables the original movement to be used, powered from an Arduino Microprocessor from 5 volts and has a modular design to keep the design simple and build time short. The main board for this clock is built on Vero Board and should take around 4 hours to build from scratch. All modules can be unplugged for easy repair or fault finding in the future. The circuit is designed to run 24/7 and has built in fuse protection from the power supply, for the board and a thermal fuse in the PS100 clock motor.

This circuit differs from my other Pragotron design as it has the chimes removed but has a DCF77 synchronized tick added. Different types of tick are downloaded and loaded onto the sound module and are controlled over serial by the Arduino. This controller is designed to run from inside the hood of my Arduino Longcase Clock so the synchronised tick tock simulates the sound of a real Longcase Clock. If you want chimes then just use this version or if you don't want any of them leave then out.

The clock controller display  uses a 2.2" TFT LCD screen with the software based on code designed by Peter Hillyer.

Pragotron PJ42 clock dials are made of white plastic and I have included a circuit for backlighting the dial using a strip of LEDs. The circuit fits in a modified 240v light switch plate and back box.

below the Pragotron PJ42 clock is almost a half a meter across



Download Manuals from One Drive

PDF                                           Word











Circuit Features/Functions

This clock circuit uses an Atmega 328 microprocessor to drive a Pragotron type clock movements from a 5 volt supply.

The Arduino Code is based on my Master Clock code and has been completely re-written for Udo Klein's V3 library by Peter Hillyer.

Peter has added code for a 2.2" TFT SPI display and sound via a JQ6500 sound module controlled over the serial port.

It should also be able to drive other clock movements that require a 1 minute alternating pulse to drive them.

Pragotron movements have different drive voltages so a step up voltage module is used to set the correct voltage for the movement is use.

A DCF77 receiver module is used to synchronize time to the "Atomic" Clock in Germany and clock functions and controls are monitored on a 2.2" TFT display.

The circuit is built onto Vero Board and can be located remote from the clock movement that is being driven.

An off the shelf Arduino Uno can be used but will required a 16MHz quartz crystal added in place of it's built in 16MHz resonator.

Other Arduino boards can also be used but must use a quartz crystal for the microprocessor timings  as this clock design uses Udo Klein's DCF77 library.

See details here UNO Mod

Switches are mounted on the Vero Board to start Auto summer advance and also winter retard. To advance or retard 1 hour the Advance/Retard button is pressed once. Complete auto advance/retard was built into the original Peter Hillyer design and can easily be re-enabled in code if required.

DCF77 synchronized ticking including volume are controlled by the Arduino and played through a JQ6500 sound module.

Battery backup is provided by 3 x 1.5v Alkaline batteries and will keep the clock running (clock ticking auto disabled) during power cuts.

The DCF77 repeater function is omitted from this clock but can be added if required see DCF77 repeater here.

Dial backlighting from LED strip lights controlled from a remote box fitted into a modified light plate and back box. The original inline controller is modified and I have added push buttons mounted on a light blanking plate to control the backlight brightness. The original control included a number of auto fade and strobe options and these are still an option if you really want them.


below left 49cm Pragotron PJ42 mounted on a wall with the backlight controller mounted underneath                     below & right 44cm Pragotron C401 mounted in the other end of the same room

Both clocks are synchronized to the DCF77 "Atomic" Clock and will step forward on the minute in unison as they where originally designed to.

Pragotron PJ42                  



below LED Dial backlight and controller built into a light switch blanking plate

LED backlighting is controlled by fitting a modifiedLED strip controller into a custom light switch plate and back box








TFT Module

The 2.2" LCD in the TFT01 is a IL19341 and has a 240 * 320 resolution.





§  SDO: Serial clock output

§  LED: 3.4V Power Supply pin

§  SCL: Serial clock input

§  SDA / SDI: Serial data input

§  DC: Data / Command selection

§  RST: Reset, Low level active

§  CS: Chip Selection, Low level active

§  GND: Ground

§  VDD33: 3.3V Power Supply pin


A level converter is used between the Arduino and some of the TFT display pins as they require 3.3v.

See schematic for details.


The display is split into 5 sections.

The first shows the current decoded time and date from the DCF77 transmitter 

The 2nd row  shows the following information:

Makers name and S/W version

Time first synchronised. This will show you the length of time the clock has been running.

Quartz accuracy and Quartz frequency. The quartz crystal is only used when the DCF77 signal is lost and while the clock is in sync the quartz crystal in continuously "tuned" to the highly accurate DF77 signal.

This row will show the actual "tuned" frequency of the quartz crystal along with the accuracy in Htz with 1Htz being the best.

Seconds lost or gained. This will show the number of times the clock has been out of sync with the DCF77 clock and auto corrected for more and less than 1 second.

This is useful if the clock is driving 1 second slave clocks as they could be out of sync if the auto correction fails. The auto correction adds or removes a 1 second pulse to maintain sync of the 1 second slaves.

You would expect a 1 second loss to be registered for example when a leap second is injected.


The 3rd row shows the DCF77 signal status and quality


The 4th row has the BST (british summer time) indicator and slave pulse output monitor


The 5th row is the ticking sound status monitor and shows the ticking tack selected along with the volume of the ticking.

The 6th row shows the type of Pragotron clock motor being driven and the polarity of the last drive pulse. This is useful when setting up as you can see when the drive polarity has changed when pressing the motor sync button. The animation below shows the polarity change at 00 seconds as the clock motor is driven forward to the next minute.


below TFT display over 1 minute in normal clock mode







Power Requirements

I use a common 12 volt power supply unit to drive many different types of clocks. This 12 volt supply is then stepped down locally at each clock with a 5 volt module to supply power for the control board and various modules.

If you are running just this one clock then any regulated 5volt supply will do as long as it can supply the current for your circuit use.


below my common power supply has 18 individually fused 12v circuits each with a 2A fuse. 9 of these are battery backed up.

Clock boards also have their own on board fuse.






Control Switches

The clock has 12 switches 10 mounted on the main circuit board and 1 (sound module on off) outside the case.

The Volume- / Prev, Play/Stop and Volume+ / Next are hard wired to the sound module and only really work in on initial start-up on this clock.

Once the clock has synchronized to the DCF77 transmitter volume and track are controlled over serial by the Arduino. Just omit them if not required.

There is no code associated with these buttons.

Switch Type   Function
Reset 1 way non locking press On   Reset Atemega 328 & TFT display
Vol Up 1 way non locking press On   Turns volume of ticking clock up from 0 to 30
Vol Down 1 way non locking press On   Turns volume of ticking clock down from 30 to 0 at zero sound module enters sleep mode
Step Track 1 way non locking press On   Select next ticking sound each time it's pressed
Advance 1 way non locking press On    Advances the clock by 1 hour
Retard 1 way non locking press On   Retards the clock by 1 hour
Cancel Adv/Rtd 1 way non locking press On   Cancels advance or retard
Motor Sync 1 way non locking press On   When first powered up or if the clock hands have been manually adjusted synchronises the motor with the H Bridge output
Volume- / Prev 1 way non locking press On   * Press to play previous sample on sound module Press and hold while playing to lower volume
Play/Stop 1 way non locking press On   * Press to play current sample on sound module Press again to stop playing
Volume+ / Next 1 way non locking press On   * Press to play next sample on sound module Press and hold while playing to increase volume
Sound Module 1 way locking  Turns sound module power on & off

*only used in start-up mode (can be omitted)






Atmega 328

The board uses an Atmega 328 (Arduino Uno) microprocessor

IC Pin IDE Pin Function
1 Reset Reset DCF77 Analyzer & TFT Display
2 0 Rx
3 1 Tx & Tx for sound module
4 2 Retard
5 3 Reset Advance/Retard
6 4 Vol Down
7 NA 4.4v
8 NA Gnd
9 NA Xtal1
10 NA Xtal2
11 5 Advance
12 6 Step Track
13 7 Clock 01
14 8 Clock 02
15 9 TFT DC
16 10 TFT CS
17 11 MOSI
18 12 MISO
19 13 SCK
20 NA 4.4v
22 NA Gnd
23 A0 enable01
25 A2 Motor Sync
26 A3 Vol Up
27 A4 DCF77 I/P
28 A5 Chime Busy







Clock Advance

The clock is advanced for winter to summer time by pressing the "advance" button until the clock starts to advance.

The TFT display will change to advance mode and count down the number of pulses from 60.

If when advancing the seconds reach 00 the advance count down will stop (see animation below count at 23 pauses).

below the PJ42 clock advancing an hour. The TFT display is superimposed over the top to show the advance count down.

Once the clock has advanced an hour the TFT display reverts to normal and the clock waits for the next minute pulse beofre advancing as normal.







Clock Retard

The clock is retarded for summer to winter time by pressing the "retard" button.

Once the seconds reach 00 the retard mode is entered and the clock waits exactly an hour before restarting.

The TFT display counts down each time a minute is missed.

below speeded up TFT with clock in retard mode showing the TFT display counting down the missed 1 min pulses.








Pragotron PS100 Movement Modification - adding a thermal fuse

I use a common power supply to drive my many clocks and these can deliver 8 amps of current. Each clock has it's own fuse but as a failsafe I have fitted a thermal fuse inside the PS100 movement in case the coil overheats.

To fit the fuse the case will need to be taken apart and this means drilling out the welded studs in the case  with the possibility of destroying your movement.

If you don't want/need to fit the thermal fuse then just ignore the following.



The PS100 movement case measures 60mm x 80mm x 20mm the terminals at the bottom of the movement are 10mm long and the minute shaft protrudes around 15mm

from the face of the case. The hand adjuster a further 5mm from the back of the movement.




The case is not designed to be opened and is secured with welded plastic studs in the four corner holes

seen from the the front of the case. To take the movement apart the plastic welds are drilled out using a 4mm drill.

The top and bottom of the case can then be carefully prised apart.





Once the case is apart you find the movement is split in two.

Below, the hour drive cog and shaft with adjustment cog along with the drive coil, rotor, stator and connector terminals.




Below the top half of the movement containing the minute shaft drive and rotor/adjustment cog.

Behind the minute shaft cog is a sprung metal plate that pushes the minute cog away from the plate ensuring engagement with the plastic hour drive cog.




Below thermal fuse fixed to the drive coil with a twisted length of wire. In the event of the drive coil overheating the fuse will trip disconnecting the coil.

The fuse wire (slate white) is connected in series to one of the brown coil wires near the terminal block.



Re-fitting the case is a bit tricky.

Put the spring plate under minute shaft cog and press in under the rotor cog and it should hold in place.

With a finger holding the hour shaft in place from the outside gently press the two parts together and with a bit of wiggling they should click into place.

Turn the hand adjuster to ensure the movement is free.

The two case parts can then be secured with plastic tape or some hot melt glue.






Pragotron PS100 Lavet Type Stepper Motor Movement Operation


This movement uses the Lavet type stepping motor action.

Minute hand shaft, attached cog and rotor drive cog removed for clarity.

The rotor is a permanent magnet with it's opposing poles shown by the red and green dots.


With the stator coil non energised  the stators have no magnetic field and the rotor will be stationary in it's last energised position.

When the 1 minute pulse of 24volts is applied with an opposite polarity to the previous pulse

the stators become magnetised with their North and South matching the rotor poles.

The rotor is then forced around clockwise and stops with it's North and South poles opposite the North and South poles of the stator.

The rotation of the rotor drives the movement forward 1 minute.

The 24 volt 1 minute pulse is then removed also removing the stator magnetic field. The rotor stays where is was.


The next minute the another 1 minute pulse is received with the opposite polarity to the previous pulse.

The stator is then energised with it's poles reversed matching the polarity of the stationary rotor.

The rotor is again forced around clockwise and stops with it's North and South poles opposite the North and South poles of the stator.

The rotation of the rotor drives the movement forward 1 minute.

The 24 volt 1 minute pulse is then removed also removing the stator magnetic field.

The rotor stays where is was and it has now turned 1 full revolution ready for the whole process to repeat from the start: above.







JQ6500 Sound Module

 Sound Module




General Communication

The device (appears to) accepts commands at any time.  Commands consist of 4 or more bytes,

Each command starts with byte 0x7E

Followed by a byte indicating the number of  bytes which follow including the terminating byte (including termination)

Followed by a byte indicating the command to execute

Followed by an optional first argument byte

Followed by an optional second argument byte

Followed by the byte  0xEF as the termination byte

for example, the command ”PLAY” (0x0D) is constructed with the following 4 bytes

0x7E – Start Byte

0x02 – 2 Bytes Follow

0x0D – Command Byte

0xEF – Termination Byte

and the command  to play a specific file (0x012) has two arguments (folder number and file number) so it looks like this

0x7E – Start

0x04 – 4 Bytes Follow

0x12 – Command

0x02 – 1st Argument  (in this case,  “Folder 02”)

0x03 – 2nd Argument (in this case,  “File 003”)

0xEF – Termination Byte

Please note that you are not sending ASCII characters here, but those raw bytes (ie 0x7E is 8 bits, not 4 characters!).

Normal commands provide potential response of two ascii characters  “OK” and maybe  “ERROR”, but generally ignore responses to normal commands (it’s best to clear your serial buffer before and after issuing a normal command).

Query commands return an unsigned integer as hexadecimal characters (ie if the response is the integer 1234, then the response is the 4 ASCII characters  “04D2”, so yes, the commands are sent as raw bytes, and the response is ASCII).



Send commands


0x0D – Play, No Arguments

0x0E – Pause, No Arguments

0x01 – Next, No Arguments

0x02 – Prev, No Arguments

0x03 – Play file by index number, 2 Arguments.  The index number being the index in the FAT table, or upload order.  Argument 1 = high 8 bits of index number, Argument 2 = low 8 bits of index number.

0x0F – Change folder. 1 Argument.  Argument 1 = 0x01 for Next Folder, 0x00 for Previous Folder. 

0x12 – Play file by folder and name, 2 Arguments.  This applies to SD Card only where you have folders named 01 through 99, and files in those folders named 001.mp3 through 999.mp3.  Argument 1 = folder number, Argument 2 = file number.  Note that arguments are a single byte, so effectively I think you can only access up to file 255.mp3 in any folder.

0x04 – Vol Up, No Arguments

0x05 – Vol Dn, No Arguments

0x06 – Set Volume, 1 Argument.  Argument 1 = byte value from 0 to 30

0x07 – Set Equalizer Mode, 1 Argument.  Argument 1 = byte value 0/1/2/3/4/5 for Normal/Pop/Rock/Jazz/Classic/Bass (actually  “Base” in the datasheet but I think they mean Bass)

0x11 – Set Loop Mode, 1 Argument.  Argument 1 = byte value  0/1/2/3/4 for All/Folder/One/Ram/One_Stop – I don’t know what  “Ram” is, it’s not Random, it seems the same as  “One”.

0x09 – Set the source, 1 Argument.  Argument 1 = 0x01 for SDCard and 0x04 for the on board flash memory.

0x0A – Sleep mode, No Arguments.  Supposedly a low power mode.

0x0C – Reset, No Arguments.  It’s advisable to wait 500mS or so after issuing this.






Parameter Query

None of the query commands have arguments. 


0x42 – Get Status. Response integer (as hexadecimal ascii characters) 0/1/2 for Stopped/Playing/Paused.  Note that  built in memory never  “Stops”, it only  “Pauses” after playing a track.  And when playing you occasionally seem to get the odd  erroneous “Paused” response, it may be power issues, but in the Arduino library I sample this command several times to get a  “consensus” of results!

0x43 – Get Volume.  Response integer (as hexadecimal ascii characters) from 0 to 30.

0x44 – Get Equalizer. Response integer (as hexadecimal ascii characters) from 0 to 5 (see set equalizer above for definitions).

0x45 – Get Loop. Response integer (as hexadecimal ascii characters) from 0 to 4 (see set loop above for definitions).

0x46 – Get Version.  Response appears to be an integer (as hexadecimal ascii characters).

0x47 – Count files on SD Card. Response integer (as hexadecimal ascii characters).

0x49 – Count files in on board flash memory.  Response integer (as hexadecimal ascii characters).

0x53 – Count folders on SD Card. Response integer (as hexadecimal ascii characters).

0x4B – Get the index number (FAT table) of the current file on the SD Card.  Response integer (as hexadecimal ascii characters).

0x4D – Get the index number MINUS ONE (!!) of the current file on the on board memory.  Response integer (as hexadecimal ascii characters).

0x50 – Get the position in seconds of the current playing file.  Response integer (as hexadecimal ascii characters).

0x51 – Get the total length in seconds of the current playing file.  Response integer (as hexadecimal ascii characters).

0x52 – Get the name of the current file on the SD Card.  Response ASCII characters.  Note that this will return a name even if the file is not playing, even if a file from the on board memory is playing, even if the SD Card has been removed… !  It’s also not really the file name, it lacks the file extenstion separator for a start (.), and is probably 8[nodot]3 max length.











Adding Sound to the Module

Plug the module into your PC and run the file MusicDownloader.exe on the module.



Click on the 2nd tab then clock on the button to the right of the black box


A file requester will open. Select your sound files and clock on Open



Go back to the first tab and click the button after a short delay the files will start to be copied


When complete you will get this message



Further info on this module can be found here JQ9500 info







Sound Files

The sound files I used on my module can be downloaded here.

They are just various 2 second mp3 files that will be played back in synch to the DCF77 signal






DC to DC Step Up Module

A DSN6009 4A DC-DC high efficiency switching boost converter module provides the DC to DC step up to drive the 24v Pragotron PS100 clock stepper motor. The module has a preset resistor so the output voltage can be adjusted to suit your combination of stepper motor, size of hands and distance from the drive board. I have found that even the large PJ 42 clock can be driven at 15volts. This makes the clock stepping much quieter and reduces the wear on the stepper motor components.

DSN6009 4A is a high-performance step-up switching current (BOOST) module. The module uses the second generation of high-frequency switching technology XL6009E1 core chip, with performance exceeding the first generation technology LM2577. The XL6009 boost module offers lower cost and superior performance over the older LM2577 module which is soon to be discontinued.

● Wide input voltage 3V ~ 32V, optimum operating voltage range is 5 ~ 32V;
● Wide output voltage 5V ~ 35V;
● Integrated 4A MOSFET switches enable efficiency up to 94%; (LM2577 current is 3A)
● High switching frequency of 400KHz, allowing the use of compact small-capacity filter capacitors that achieve very good results with lower ripple. (LM2577 frequency is only 50KHz)

Technical Parameters :-
Input Range: 3V~32V
Output Range: 5V~35V
Input Current: 4A (max), no-load 18mA (5V input, 8V output, no-load is less than 18mA. Higher the voltage, the greater the load current.)
Conversion efficiency: <94% (greater the differential, the lower the efficiency)
Switching frequency: 400KHz
Output Ripple: 50mV (higher the voltage and current, the greater the ripple)
Load Regulation: ±0.5%
Voltage Regulation: ±0.5%
Operating Temperature: -40℃ ~ +85℃
Dimensions: 43mm * 21mm * 14mm (L*W*H)

Important :-
Observe correct polarities.
IN+ Input Positive, IN- Input Negative.
OUT+ Output Positive, OUT- Output Negative.

Test comparison sample reference :-
Input 3V Output 12V 0.4A 4.8W
Input 5V Output 12V 0.8A 9.6W
Input 7.4V Output 12V 1.5A 18W
Input 12V Output 15V 2A 30W
Input 12V Output 16V 2A 32W
Input 12V Output 18V 1.6A 28.8W
Input 12V Output 19V 1.5A 28.5W
Input 12V Output 24V 1 A 24W
Vin * Iin * Efficiency = Vout * Iout

Vin: Input Voltage
Iin: Input Current
Vout: Output Voltage
Iout: Output Current






Dual H Bridge Module

I have connected my clock movement to connection 02.

Important remove link from the onboard regulator as shown as this is not used.

5v is derived from the Arduino power supply to the screw terminal marked "5v Arduino"

Ground is common ground and 24v is the stepped up supply from the step up module

Remove the link from ENA and ENB as the H bridge is enabled from the Arduino.

I have connected ENB to my Arduino as I am using output 2. Whenever ENB is set to 5v from the Arduino whatever 5v voltage polarity set on IN3 & IN4 pins from the Arduino is sent out at 24v from the H bridge module to step the clock on 1 minute.


H bridge Module specifications

L298N as main chip
Low heat,outstanding anti-interference performance.
High working power to 46v,large current can reach 3A MAX and continue current is 2A, power to 25w.
Can drive one 2-phase stepper motor, one 4-phase stepper motor or two DC motors.
Built-in 78M05,get power from drive power,however, when drive power over 12V, please use the external 5v power as power supply.
Large capacity filter capacitance,afterflow protection diode, more stable and reliable.

Double H bridge drive
Chip: L298N (ST NEW)
Logical voltage: 5V
Drive voltage: 5V-35V
Logical current: 0mA-36mA
Drive current: 2A(MAX single bridge)
Max power: 25W
Size:43 x 43 x 26mm(LxWxH)

This module has a built-in 5v power supply, when the driving voltage is 7v-35v, this supply is suitable for power supply
DO NOT input voltage to +5v supply interface, however leading out 5v for external use is available.
When ENA enable IN1 IN2 control OUT1 OUT2
When ENB enable IN3 IN4 control OUT3 OUT4









Removing the old quartz movement

To get to the old movement to remove it place the clock on it's face on a soft cloth to protect it from damage.

Remove all the bolts holding the dial to the dial surround.

Carefully remove the dial with the quartz movement attached from the clock case.

The dial feels quite brittle and I imagen could break if handled carelessly. First remove the minute hand by undoing the brass grub screw under the minute hand holding it to the minute shaft.

The hour hand should be a friction fit and can be gently pulled off. If you are lucky the original hand collet should till be in place.

One of my clocks had the collet removed and replaced with a metal plate glued to the back of the hour hand. A hole was drilled in the metal plate to take the smaller quartz clock hour shaft.

In order to fit the hour hand to the original PS 100 movement I had to fix in another collet I had spare from another clock.

My other Pragotron still had the original collet on the hour hand and was simply pushed back on.

Now unscrew the collar holding the quartz movement to the dial and remove the movement.

You will probably find the old Pragotron fixing bolts were cut down and glued over the fixing holes on the dial. Remove these bolts and discard and carefully drill out any glue covering the holes.

You will need to find 3 replacement bolts and cut them down to fit.






Control Switch Locations






Vero Board

Vero Board with 5v, 3.3v & 0v runs.




Vero Board with 5modules plugged in.


Vero board rear




Completed Vero Board layout mounted on stained softwood blocks ready for mounting into my Longcase Clock



The Veroboard is mounted into my Arduino Longcase Clock Hood the seconds tick providing the sound for the Longcase Clock.

The Pragotron Drive is cabled away to my Pragotron PJ42 Clock in another room.


below the lower board is the Arduino Longcase Clock control and the upper board is the Pragotron Clock control.













Dial Backlight Control

The Pragotron PJ42 clock face is made of plastic and can be backlit using a strip of LEDs.

A LED controller switches the LED strip On/Off and also adjusts the brightness up and down

and has additional built in functions for various dynamic flashing and fading modes if required.

The controller is made up from a blank chrome wall switch plate and a modified

12V 12A Mini Single Colour LED Strip Tape Controller Dimmer board.




Below, modified 12V 12A Mini Single Colour LED StripTape Controller Dimmer

Item color: white
Auto memorize function
Single color dynamic modes
Work Voltage : 12V DC
Control: Brightness, flashing, flashing modes
Button:3 Keys
Used for:Single color led strip(5050,3528,5630)







Hacking the controller

Peel off the label from the heat shrink sleeve and set it aside.


Cut away the white plastic heat shrink over the circuit board to reveal the PCB with stick on buttons.

The buttons are held in place by clear tape.

Peel away the clear tape and remove the button tops.


This will leave the button contacts exposed so the wires from the PCB switches can be soldered in place.


Turn the board over and remove the soldered 12v and LED wires.






Controller Construction

Connect 3 PCB mount switches to the Vero board then fix the control board above

to the top of the Vero board with hot melt glue.

Connect 6 control wires from the old button contacts on the PCB to the new switches on the Vero board.



A terminal block is then soldered to the (LED) OUT +ve and +12v of the circuit board.

The block is hot melt glued to the Vero board.

Stick the button label removed earlier onto the Vero board.



Glue the Vero board with attached ctrl PCB to the back of the wall plate making sure the holes are aligned with the switches.

Mount the main switch in place.


Main Switch Wiring

Using the connections below the LED "Halo" light will come on when the switch is On and mimic the LEDs state.

I have connected a 100K resistor between the A terminal of the switch to the Out- of the control board to dim the Halo LED on the switch.

Main Switch Terminal Connection Block LED Ctrl Board
C -12V  
NO   -12V
LED   Out+
A   Out-

The 12 volt supply is from a 12 volt LED power converter. I have measured the current from my LEDs and the max current drawn is .6 Amp.

I have used a 2amp power supply and 2.5amp wire to connect the power and switch connections.







Blanking Plate

The controller circuit is mounted in a standard Chrome metal blanking plate made for mains wall switches.


Hole are drilled in the plate to take the three switch tops and the main On Off switch.


The cutaway show the PCB mounted switches below the blanking plate. The buttons protrude through the plate by a few millimeters.



The completed plate with main On Off switch top and three control switches below.

The "light" button puts the controller into normal light mode from auto flashing/fade mode.

While in normal light mode the "Light" and "Pwe/Brite/Spd" control the dimming up and down.

Hold the "Pwe/Brite/Spd" to turn the light On/Off.

The "mode" button will switch to auto flashing/fade mode from normal light mode.

While in auto flashing/fade mode "Light" and "Pwe/Brite/Spd" control the speed of the effects while the mode button changes effects.

When turned Off and On the last set mode is remembered.






LED Backlight

The LED backlight is just a strip of white LEDs mounted on a backboard and a strip of wood cut at a 45º angle.

The wood strip is made into an Octagon glued together then mounted on a hardboard backing.

The hardboard backing is painted white to reflect the light.

To work out the lengths of cut required to make a octagon of a set diameter I used the calculator below.

Octagon Calculator


Wood strip cut from an old piece of timber then run through my table saw to get a 45º angle is cut and glued together with mitre glue.




The octagon strip is then glued to the hardboard backing.





Hardboard backing painted white to reflect the light.




The LED strip is then stuck to the wood strip and also screwed in place using tiny wood screws and large metal washers.

The LED strip will not fit neatly around the corners as shown in the illustration below so I just hold it away from the corners with hot melt glue. 





The completed LED backlight mounted behind the clock face.












Clearing your EEPROM

If your DCF77 library held on your Arduino has become corrupted the Arduino will not "Synchronize" to a good signal and will display a low "Signal Quality %" even though the signal is perfect.

Load this small bit of code to your Arduino to erase the EEPROM then reload the clock code below. This will allow the library to restart from fresh.






Arduino Code

Download Code v1.9

A standard Arduino Uno can be used but must have a Quartz Crystal added instead of a resonator to work with Udo Klein's DCF77 Library. See details here UNO Mod


Requires Udo Klein's V3 library  https://blog.blinkenlight.net/2015/08/01/dcf77-library-release-3-0-0/

Download here