An MSF Atomic Clock for the Raspberry Pi

The project is connected to GPIO 15 input pin 1 of my Raspberry Pi interface board. There is nothing special about this pin, its location is simply convenient with my layout..

Please be aware that this project will only work in the British Isles, because the transmitter is not very powerful. The antenna should be aligned with Anthorn, which is a place more or less in the middle of Britain. Here in Northern Ireland, the long side of the antenna would have to face East.

An MSF Atomic Clock for the Raspberry Pi

Circuit description

The heart of the project is a small circuit board retrieved from a radio controlled alarm clock bought at a Lidl store. This was originally for a Frankfurt DSF77 receiver, but with a change of antenna and a 60kHz crystal, it proved to be the most reliable MSF receiver I’ve come across.

I have used a 7404 NOT gate as a buffer. This also allowed me to produce an inverted signal and to customize the pulse sent to the LED.

The Circuit diagram of this project is on the right. Notice the two links, which allow me to display and decode a normal or an inverted signal.

Every second carries one bit. To show a 0 the carrier is turned off for 100ms and for a one it is turned off for 200ms. Second 0 of the sequence is the marker second, when the carrier is turned off for 500ms. Bits 52 to 59 can carry a secondary bit, used for BST indication and parity checking. When this bit is set, the carrier is off for 300ms – shown in red in the drawing above.. However, my program makes no use of this feature. The coding scheme is shown below.

The red numbers indicate the binary coded decimal place values of the set bits.


An explanation may be useful.

Say the date and time is  the 21st of March 2012 at 19:39 hours. This is espressed as a binary coded decimal sequence with the place values:
80   40   20   10   8   4   2   1
An MSF Atomic Clock for the Raspberry Pi SchematicDepending on the largest number to be expected the digits used range from eight for the year to (0-99) to three for the day of the week (0-6)

Year . . . . . . . . . . no 80, no 40, no 20, one 10, no 8, no 4, one 2, no 1.  10 + 2 = 12. The 2000 is assumed
Month . . . . . . . . no 10, no 8, no 4, one 2, one 1.  2+1 = 3 = March
Day . . . . . . . . . . one 20, no 10, no 8, no 4, no 2, one 1.  20+1 = 21.
Day of week . . . no 4, one 2, one 1. 2+1 = 3 = Wednesday.  Apparently the week starts with Sunday.

I leave the amazed reader to work out the hour and the minute.

© 2015 Powered By Engineering Projects Team, Raspberry Pi Projects

Scroll to top