Home    Pragotron Dial Backlight  Master Clock   LCD Master Clock    Kenley Weather

Section   TOP  Specs   Power   Arduino Pin Outs   Switches  PS100 mod  PJ42 Movement  Movement Operation   Sound Module  Add Sound Files H Bridge   Step Up Module   TFT  Speaker  Summer Advance  Winter Retard   DCF77 Repeater    Vero Board    Schematic  Arduino Code





Arduino Pragotron Master Clock &  Slave 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. This is because they were designed to be driven off a Master Clock from a 12v to 60v supply.

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.

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  looped animation shows the restored clock stepping forward 1 minute at 00 seconds. Note the 5cm TFT display has been enlarged for clarity against the large 44cm Pragotron dial







Circuit Features/Functions

This clock circuit uses an Atmega 328 microprocessor to drive 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.

Full Westminster Chimes including volume are controlled by the Arduino and played through a JQ6500 sound module and chimes can be set to  On, Off and timed.

Battery backup is provided by 3 x 1.5v Alkaline batteries and will keep the clock running without chimes during power cuts.

This circuit also includes a DCF77 "repeater" and "multiplier" circuit and can provide DCF77 pulses at 5volts to other clocks.

This and the Westminster chimes cam be omitted if not required. 

 From v2.5 I have added Summer/Winter output on A3 to automatically set my Word Clock to summer time.

Full details can be found in the sections below.



below completed Vero Board layout with all modules mounted and 1 min cycle of TFT display







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.

The configuration of modules in my particular circuit requires approximately 300mA to run at max power. This is with a 24v movement connected and chimes at a volume loud enough for a single room without disturbing other rooms in the house.  If you are

driving higher voltage movements and or sounding chimes at very high volumes then current draw will go up. As can be seen from the table below normally with the display off, the clock not stepping and not chiming the clock will draw 59mA.

Once per minute for around 0.5sec while the clock advances 1 minute the current will rise to 174mA. If the chime is set then every 15 minutes for a few seconds as the Westminster Chime quarters are sounded the current will rise to 64mA to 174mA (depending on set volume).

Max current of upto 300mA is drawn on the hour for 0.5 seconds as the clock advances 1 minute and chimes out the hours.

I have fitted a 650mA fuse on the main board and also a thermal fuse in the clock movement as my common power supply can output many amps.


below measured current draw

  Current mAmps
Options Normal Clock stepping Chiming Low Chiming High Stepping & Chiming Low Vol Stepping & Chiming High Vol
Initial Sync Sound On Display On 85 NA NA NA NA NA
Initial Sync Sound On Display Off 75 NA NA NA NA NA
Initial Sync No Sound Display On 68 NA NA NA NA NA
Initial Sync No Sound Display Off 59 NA NA NA NA NA
Sync'd, Sound On Display On 85 200 90 200 212 300
Sync'd, Sound On Display Off 68 183 73 183 195 283
Syn'd No Sound Display Off 59 174 NA NA NA NA










Control Switches

The clock has 9 switches all mounted on the main circuit board

Switch Type   Function
Reset 1 way non locking press On   Reset Atemega 328 & TFT display
Chime Mode 1 way non locking press On   Selects Chime mode between On Green, On preset times only Yel and Off 
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


below mouse over to show switch locations on main Vero board














Atmega 328 Pin connections


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 Chime Mode
7 NA 4.4v
8 NA Gnd
9 NA Xtal1
10 NA Xtal2
11 5 Advance
12 6 30 second pulse
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 BST
27 A4 DCF77 I/P
28 A5 Chime Busy







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, see picture below.

Remove four bolts highlighted by yellow arrows and take out the four L shaped brackets and single hanging bracket on the top.

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

The dial is very thin and is easily bent if handled incorrectly. First remove the minute hand by undoing the brass grub screw under the minute hand holding it to the minute shaft. See red arrow.

The hour hand should be a friction fit and can be gently pulled off. Now unscrew the collar holding the quartz movement to the dial and remove the movement.

On my clock the old Pragotron fixing bolts were filled down and glued over the fixing holes on the dial. Remove these bolts and discard.

















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.






Pragotron PJ42. This large clock has a 42cm diameter dial and measures nearly half a meter total diameter and is 11cm deep. Case is of black Bakelite with a concave plastic dial.

To give an indication of the size of this clock I have shown it placed on a Tub chair for comparison.


Below, to backlight this clock dial see Pragotron Dial backlight controller








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

Download the sound files here

001.mp3 to 012.mp3 are the hour chimes including the 4th qtr Westminster chime, 013.mp3 is the 1st Qtr chime, 014.mp3 is the 2nd Qtr chime and 015.mp3 is the 3rd Qtr chime.


below example of clock quarter & full chimes



below clock stepping to 09:00hrs and chiming the hours







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








Voltage Step up Module

This module takes the 5 volts from the Arduino power rail and steps it up to the 24volts required to drive the Pragotron movement coil via the H Bridge module.

The exact step up voltage is adjusted by turning the preset resistor.





 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 chime status monitor. Chime is green when chimes are always on, yellow when on timer and off when chimes are off.


below TFT display over 1 minute in normal clock mode









The JQ6500 sound module can directly drive an 8Ω speaker of up to 3watts.

I have mounted a small speaker it is a piece of plywood and added a Pragotron Logo with Lazertrans inkjet paper.

The speaker is then mounted on the wall behind the clock to sound the chimes. The speaker can be mounted remote from the clock if required.




Summer Advance

To correct the clock for summer time (advance by 1 hour) just press the advance button on the main control panel. The Pragotron clock will start to advance and the display will show "BST advance count" and will count down as the clock advances an hour.

During summer advance if the current seconds get to 0 the advance count will stop for 1 count to ensure the clock advances exactly 1 hour.

Once the advance count reaches 0 the clock stops advancing and the TFT display reverts to normal.


The video below shows the clock advancing with the enlarged TFT display on the left showing current time and advance count.








Winter Retard

These clock movements can not be stepped backwards so they are retarded by stopping the drive pulses for 1 hour.

To correct for winter time (retard by 1 hour) press the retard button on the main control panel. The TFT display will show "BST Retard count:60" and the Pragotron clock will stop.

As each minute passes the Retard count will decrease by 1 until it reaches 0 when the Pragotron Clock will restart and the TFT display reverts to normal . The clock will be exactly 1 hour retarded.


The time-lapse animation below speeded up 180 times shows the retard count decreasing to 0 as an hour of current time passes.






DCF77 Signal Repeater/Multiplier

This is optional and is only required is you want to feed many DCF77 clocks from 1 DCF77 signal and is mounted on the main vero board.

The circuit uses a 6 way inverter. The 3.3v DCF77 signal from the receiver comes into the 1st inverter

and is inverted and changed to 5v. This is then fed to the remaining 5 inverter inputs. The output from each of these 5 inverters is then exactly the same as the

incoming 3.3v DCF77 signal but is at 5v. Each output can be then sent to different DCF77 clocks.





Circuit Board


The circuit is designed around prebuilt modules and is very easy to build onto Vero Board.  The board below shows all components mounted ready for final wiring.

The white temporary labelling strips helps position wires and components and is removed once they are all in place. The modules plug into the installed headers on the board once wiring is complete.












below actual Vero Board showing wiring (mouse over for module labels) note 3.3v PSU module is not plugged in as I use the 3.3v supply from my Regulator clock housed in the same case










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 V2.4         v2.5 With summer winter output on A3 pin to drive automatic summer winter correction on my Word Clock

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