Startseite | [start]

warning: ham radio licensed The Time Manipulator warning: high voltage

Homemade 77.5 khz very low frequency DCF77 time signal transmitter

(by Matthias Franz, HB9EFY, 03/2009 bis 07/2010)

translated from the German original

  The Time Manipulator (77.5 Khz DCF77 time signal transmitter)
Timemanipulator (DCF77 time signal transmitter)
[01] time manipulator (DCF77 time signal transmitter)
Frequency:  77.5 Khz
Output power:  50 Volt VPP at 50 Ohm (~ 6 Watt)
Harmonic suppression:  -37 dB at 2 F0
Power supply (ext.):  240 Volt
Power supply (int.):  5 Volt, 24 Volt
Oscillator:  Crystal / Pierce
Amplifier:  TDA2006
Microcontroller:  ATmega16
Data/time range:  01.01.2000 to 31.12.2099
 00:01 - 23:55

The time manipulator is the little brother of the time signal transmitter located in Mainflingen close to Frankfurt in Germany. The very low frequency transmitter
Get flash player to play to this file

[V01] DCF77 transmitter
located there has an output power of 50 kW and is called, in accordance to its call sign, DCF77 (similar to HBG, MSF, RWM and WWV, WWVB, WWVH). The transmitter is operated by the Media Broadcast GmbH and transmits on 77.5 kHz the official time signal for Germany. The medium range is stated with 2'000 km.

My time manipulator however offers some more functionalities. It's the true alternative if you have difficulties to find your flux capacitor or your local electricity supplier cancelled your contract after you had difficulties to pay off for the 1.21 GW.

First time in history it is possible to travel through the time. Simply enter the jump coordinates (date and time) and the time manipulator will take you on an amazing journey.

You always wanted to know if atomic satellites will threaten our earth or whether years later the Morlocks' will domiate the halfhearted Eloi?

No problem - the time manipulator makes it possible.

Let's start with some theory first...

  The time code (DCF77 signal and coding)
The DCF77 signal is an unmodulated 77.5 khz carrier. The amplitude of the carrier is reduced every second to 25% (- 6db). See picture 02.

A logic "0" or a logic "1" is coded by the length the amplitude is lowered to 25%. A 100 ms lowering is a logic "0" whereas 200 ms is coding a logic"1".
DCF77 coding per pulse width modulation
[02] DCF77 coding per pulse width modulation

The signal can therefore be discribed as a kind of pulse width modulation. The signal however transmitts only 2 conditions: logic "0" or logic "1".

There is a second method used to transmit the time signal. This second method is using phase modulation to modulate the carrier with a 512 bit pseudo random sequence (direct-sequence spread spectrum modulation). The standard clocks however are using the simple pulse width signal.

Picture 03 shows the DCF77 in tabular form. Every second is equal to 1 bit. The start of a new time sequenz is signalized by the 59th second as there is no lowering of the amplitude (except for a leap second).

The following 58 seconds are transmitting the complete time sequenz. This contains in summary the following information:

1-14   Weather information (since end 2006)
15-19   Summer-, winter time, leap second...
21-27   Minute
29-34   Hour
36-41   Day of the month
42-44   Week-day
45-49   Month
50-57   Year (2-digits)

Picture 04 shows the coding of the time signal in a graphical way (standard clock form). This form is often used to explain the relationship between the 58 seconds and the 58 bits containing the information required to transmit one complete time sequenz.

The time sequenz contains an elementary check sum which is realized by adding parity bits to the "minute", "hour" and "day, week-day, month and year" information blocks (P1, P2 and P3). Each parity bit completes one of each of this information blocks to an even amount of logic "1" ("even parity").

The week-day is coded as follow: Monday is day "1" whereas Sunday is coded by "7". This is important to generate a correct time sequenz. Even cheap radio controlled clocks are checking the received time sequenz for consistency.

For more information regarding the coding of the DCF-77 signal please refer to the usefull links section.

DCF77 coding of time signal in tabular form
[03] DCF77 coding of time signal in tabular form
DCF77 coding of time signa (standard graphic)
[04] DCF77 coding of time signa (standard graphic)

Enough boring theory - let's see how the time manipulator works.

The time manipulator is made of the following modules:

 - 77.5 Khz crystal oscillator (+ low pass filter)
 - level shifter
 - amplifier
 - low pass filter
 - input and display
 - microcontroller
 - power supply

The modules are linked to each other as shown on the picture below. For further details you can click on the single modules.

flow diagram aaaa aaaa aaaa aaaa aaaa aaaa Netzteil Dummy-Load

  The time oscillator (77.5 Khz sine wave crystal oscillator)
77.5 Khz sine wave oscillator
[05] 77.5 Khz sine wave oscillator
The 77.5 khz signal driving the final amplifier is generated by a pierce oscillator.

The pierce oscillator is made of a CMOS inverter. To prevent the final amplifier from generating too much harmonics it needs to be driven with a sine wave. The CMOS pierce oscillator however generates square waves only. To convert the square waves into a sine wave a 7th pass Chebychef low pass filter is used. The calculated attenuation of the 3. harmonics (3 x f0) is -85 db.

If you want to know why cutting off the 3. harmonics converts a square wave into a sine wave you can either look for "square wave" in Wikipedia®™ or you ask a friend who has study electrical engineering (thanks to Torsten, DG1GKT).

Picture 06 shows the Chebychef low pass filter build on a breadboard. The square wave input signal of 77.5 khz and 5 VPP was delivered from a DDS generator. After filtering the square wave to sine wave the output signal had approx. 2.5 VPP (Picture 07).
chebychef 7th order low pass filter
[06] chebychef 7th order low pass filter
square to sine wave conversion
[07] square to sine wave conversion
Prototype - sine wave oscillator
[08] prototype - sine wave oscillator
prototype - sine wave oscillator
[09] prototype - sine wave oscillator
The following two pictures (08 and 09) are showing the final etched and soldered oscillator modul. The 77.5 crystal was taken from a DCF-77 receiver modul (this crystal is a bit difficult to get, therefore de-soldering was the easiest way to quickly get one).

The 6 components looking like big resistors are the coils of the Chebychef low pass filter.

The output signal of the oscillator modul is about 2.5 VPP and optically (by testing with a scope) a very nice sine wave. The frequency meassured with a counter from ELV®™ is 77.503 Khz.

The meassured attenuation of the 7th pass Chebychef low pass filter is -56 db at 3x F0

  The time level shifter (level shifter)
I explained in the "theory" paragraph that the amplitude of the DCF77 carrier is reduced every second to 25% of its amplitude. In my project, this is realized with the level shifter.

The level shifter contains 3 analog switch gates (CMOS 4066) and is driven by the sine oscillator. By applying a control signal of either logic "0" or logic "1" the sine oscillator signal either goes straight to the output or via an adjustable voltage divider. In the circuit diagram you can see that in the upper signal path a multiturn pot is used to adapt the output signal to 25%. The second multiturn pot is used to match the amplitude of both signal pathes to the amplifier.

...and finally, as electronic homebrew does make so much fun, I decided to build up both moduls (sine oscillator and level shifter) together on a new board.
level shifter circuit plan
[10] level shifter circuit plan
oscillator and level shifter (top)
[11] oscillator and level shifter (top)
oscillator and level shifter (bottom)
[12] oscillator and level shifter (bottom)

  The time amplifier (77.5 Khz power amplifier)
VLF PA circuit plancircuit plan
[13] VLF PA circuit plancircuit plan
Picture 13 shows the circuit diagram used to build the VLF PA prototype. It's slightly modified compared to the one from the official data sheet of the HiFi amplifier TDA2006 (TDA2020). This circuit is using positive voltage supply only. According to the data sheet, the voltage can be increased up to 30 volt when using single power supply only.

According to the data sheet the TDA2006 works up to 140 khz. This should ensure a sufficient amplification of the 77.5 khz time signal carrier wave.

The TDA2006 generates when using for audio purpose up to 12 watt. A sufficient cooling is therefore recommended. The heat sink and fan I used and to which I mounted the TDA2006 were both taken from an old 486 CPU board.
VLF PA (side view 1)
[14] VLF PA (side view 1)
VLF PA ( TDA2006 close-up)
[15] VLF PA ( TDA2006 close-up)
VLF PA (side view 2)
[16] VLF PA (side view 2)

  The time filter (impedance matching and low pass filter)

There are several methods to match the < 4 Ohm impedanze of the amplifier to the 50 Ohm of the load. I tested 2 different ways and finally decided for the second one.

  • Impedance matching using a broadband transformer. The impedance matching is depends on the winding ratio on the teroid core.
  • Impedance matching using a pi-filter.
If you enjoy to wind a teroid core again and again in order to find the optimum, feel free to do so. I, however could not archieve an aceptable result (only 1.2 watt output power meassured at 50 Ohm).
final pi-filter
[17] final pi-filter

I therefore tested the second possibility, impedance matching using an "old school" pi-filter. Also in this case, the calculated values didn't match the reality (guess the performance of the coil was too low), but due to the coil's ferrit core it could be easily adjusted. The result was great. I archieved 9 watt output power meassured at 50 Ohm. Much more better then using my teroid broadband transformer.

The calculation of the impedance matching pi-filter was done with the software "PI-EL Design"®™ bzw. "SVC Filter Designer"®™ by WB6BLD (see: usefull links).

Picture 18 and 20 are showing the frequency sweep meassured after the pi-filter was tuned to a maximum output on 50 Ohm load. The second picture shows the frequency sweep of the harmonic filter. Regarding the circuit plan, please note that the capacitors consist of 2 parallel capacitors each.
prototype: Impedance matching
[18] prototype: Impedance matching
circuit plan: impedance + harmonic
[19] circuit plan: impedance + harmonic
Prototyp: harmonic filter
[20] Prototyp: harmonic filter

  The time entry (rotary encoder input and 4 x 20 LCD graphic output)
To enter the jump destination (date and time) a rotary encoder is used as well as 2 menu pushbuttons. The used rotary encoder also contains a pushbutton which is used to confirm the single entries.
Animation: in-, output menue
[22] Animation: in-, output menue

The following input is expected:
- Day, Month, Year (2 digits)
- Hour (24h format)
- Minute

By using the menu pushbuttons you can jump for- and backwards within the menu. After the date and time was entered the software lists your entries and awaits your final confirmation.

It's important to note that the entered date needs to be a valid date. My software does not check the validity of the entered date. Furthermore, there are some special rules for entering the "minute" which is based on the setup of my software. The rational for this special rules can be found in the "time processor" paragrah under note.

  The time processor  (ATmega16 control software)

Compared to other well known time machines which are using either a flux capacitor or a special crystal I followed another idea. The project I present here and which easily allows you to travel back to the future is using an ATmega16 made by Atmel®™. This µ-controller is the magic part of my time machine and allows to generate the required time code.

The software is completely written in BASCOM®™Basic. For a rather unskilled hobby programmer like me this ment 2 weeks of headache. Well, my Basic skills are based on old home computer times (Commodore®™C64) only.

The software is build on several modules:

  •  Self test 
  •  Menu controll (input of date and time)
  •  Date calculations
  •  Generating the DCF77 Code
  •  Shift-out the code (to the level shifter and the display)

Self test:
After powering the circuit two AD converters are used to measure the 5 and 24 Volt power supply and to compare them to the reference values. After the time travaler pressed for 3 seconds the OK button to confirmed that a dummy load is connected to the output of the machine, the transmitter goes to full output amplitude for about 300ms. Within this time both voltages are measured again. In case one of this 2 tests would fail an error message is displayed and alarm sound is generated. The "self-test" LED is switching from red to green as soon as both tests were successfully past.

Menu controll:
The 4x 20 characters LC display is controlled via BASCOM using the build-in standard command.
The build-in standard command of BASCOM is also used to read-out the rotary encoder. This is not perfect but works somehow. The rotary encoder I used delivers unfortunaly 2 impuls signals per detent. To make the standard command work better I opened the rotary encoder and removed the little metal balls responsible for the detent.

2 menu pushbutton allow you to jump for- and backward in case you want to correct a priviously confirmed entry.

After all required data were entered the software lists your input and awaits your final confirmation.

Date calculation:
The DCF77 code does not only contain the date and time but as well the calendar day and two flags for the summer- and winter time.

The calendar day is calculated manually. I did not use the internal DATE lib of BASCOM but used a very smart mathematical algorithm. This algorithm is used by professionel mental arithmetics and can be found in the "useful links" section (in German only).

The same algorithm is used to calculate whether the entered date is within the period of summer or winter time. It therefore checks backwards which day the last sunday in March and October is (summer/winter time definition used in Europe).

After all calculations were done, the software completes the privious entered date and time with the calendar day, the summer- winter time flags as well as it calculates and adds the parity bits which are part of the DCF77 code.

Generation the DCF77 code:
The generation of the DCF77 codes is done in several sub-routines. The first routine converts the data of the different information blocks (minute, hour, month etc.) into the corresponding BCD-Code. After all information blocks are converted the software combines the information to the 58 bit code word.

In total the software generate 5 code words. If you e.g. have entered 16:03 the following code words will be generated and stored.

    Coder word 0 = 16:02  (original time -1 minute)
    Coder word 1 = 16:03  (original time +0 minute)
    Coder word 2 = 16:04  (original time +1 minute)
    Coder word 3 = 16:05  (original time +2 minute)
    Coder word 4 = 16:06  (original time +3 minute)
    Coder word 5 = 16:07  (original time +4 minute)

From code word 0 only the last 20 bit are used. These bits are transmitted to synchronize the receiver of the radio controlled clock (a DCF77 receiver always waits for the minute marker). The following 5 code words contain the time informations.

NOTE: As discribed above my software simply generates 5 sequential code words. I already mentioned that there is no DATE lib used. It's therefore crucial that all 5 code words are within the same hour and day. When entering the minute it therfore must be between the value "01" and "55". I already used my complete winter holidays to write this software (my thanks to my girl for her patience. Home brewer are kind of hopeless...) that I decided to live with this little flaw.

DCF77 radio controlled clocks ar usually using 3 methods to check the validity of the received time signal:

  1. rudimental test of the received code word by analysing the parity bits which are part of the time signal.
  2. testing whether at least 2 (sometimes 3) received code words are in the logical sequential order
  3. using a build-in date routin to check the received coder word for conformity. A date/time which is against the used definitions will not be accepted (e.g. 33-März-2010).

Shift-out the code
After all calculations were done the software goes into an endless loop. A timer set to 1000 ms triggers the interrupt. The interrupt calls the shift-out routine. This sub-routine shifts out the single bits of the 58 bit code word to the level shifter. Depending whether a logic "1" or logic "0" was shifted out the timer is reset accordingly.
After having set and restart the timer the software updates the LC display. When this was done the sub-routine returns to the endless loop and is waiting for the next interrupt.

After all bits from all codes words were shifted out your time travel should have successfully taken place.

  The time power supply  (5 V + 24 V supply)
power supply (5 Volt + 24 Volt)
[23] power supply (5 Volt + 24 Volt)
The power supply is a simple double linear voltage supply which is made of two transformes, two rectifiers and 2 voltage regulators (2 Amp type: 78S05 bzw. 78S24) as well as the usual required filter capacitors.

The power supply generates the 5 Volt for the microcontroller, LEDs and LC display as well as the 24 Volt for the rf-aplifier and for the 2 in serial connected 12 V fans. The amplifier is working in single supply modus. This requires an additional capacitor to block the DC part of the rf output signal but simplifies the circuit of the power supply as no negative voltage is required.

Both voltage regulators are mounted to an PC-processor heat sink. On the outside of the case a fan is mounted which makes the air going through the heat sink from the inner part of the casing to the outside.

To block any rf energy from the power supply a EMC filter is connected to the primary side of the power supply.

The low voltage (secundary) side of the power supply is made as per standard application for the 78xxx voltage regulators. For further details please refer e.g. to the DigiNetzteil.

  Final assembly of the time manipulator
final assembly
[24] final assembly
front panel (back side)
[25] front panel (back side)
final software upload
[26] final software upload

After many many months of calculations, soldering, try and fails I finally made it and all single modules were mounted into the casing and connected together.

The front panel is made like always in my projects: a simple colour printed label which is covered by self adhesive transparent lamination. The holes for the rotary encoder and for the button were cutted out with a scalpel, the holes for the LEDs and the reset button were stamped out with a hole punch (as it is used for leather work)

Finally, the latest version of the software was loaded to the ATmega microcontroller (picture 26) and the casing was closed.

... and here we go, this is the time manipulator:

time manipulator (front 1) time manipulator  (front 2) time manipulator  (front 3) time manipulator  (front, left)
Get flash player to play to this file

[V01] The single modules of the time maniplator
time manipulator (front, left) time manipulator  (front, right)
time manipulator  (LC display) time manipulator (power meter)
Ok, some questions might still be open and the most important one I will answer upfront.

> What's the reason of all this work and what is this hole project good for?

The machine was built simply to enjoy homebrewing. I tried to link the rather analog radio amateur world with the digital one of microcontrollers. Probably you need to be a huge science fiction fan as well as the time manipulator is certainly not a weekend project. Furthermore I used the project to teach myself the basics of a transmitter, impedance matching and harmonic suppression etc. (some first steps towards a homemade SSB TRX).

ham radio licensed
Note specifically that building transmitters is legal for licensed radio amateurs only. But even as licensed ham operator connecting this transmitter to an antenna is certainly prohibited by your local law.

After finalizing this project, the time manipulator will be modified and rest in peace as 137 kHz transmitter.

Let me repeat: everyone who does not consider such a project as pure technical challenge but is using it for bad can be sure to be in big trouble quickly.

Before we end, here are some difficulties I was faced with:

  • the two power supplies are running at their limits. Especially the ripple of the 24 Volt is rather high. Using more powerful transformers should solve the issue and when doing so you might add a RFC to the rf-amplifier as well.

  • the capacitors and the tv-coils used for the impedance matching and harmonic suppression are not optimal (guess the ESR of the capacitors is too high). The first stage of the filter becomes hot which proofs that the efficiency can certainly be improved.

Enjoy homebrewing.

73 de
Matthias, HB9EFY

[ HB9EFY(at) ]

Credits to my old buddy Torsten, DG1GKT, who helped me out when being faced with "the one or other" issue as well as thanks to everyone taking the time to share their knowledge and experiences in 137 khz ham radio technics over the web.

Source of supply:

Reichelt Elektronik:
- AVR ATmega
- Transformer for PA für PA voltage supply
- 4x 20 character LC display
- bits and pieces

Pollin Elektronik:
- DCF77 receiver modul (77.5 khz crystal)
- TV coils for pi-filter
- bits and pieces
- Frequency counter FC7008*
- Network tester NWT01U*

* was used as measuring device only - not mandatory.


Text, Pictures and graphics of the "time manipulator" - projects are copyright protected by (Matthias Franz) in 2009/2010.

The terms:

Media Broadcast GmbH®™

are registered company name and/or protected trademarks.

Usefull links:

Basics "Time signal transmitter DCF77":

Basics "(PTB) Physikalisch Technische Bundesanstalt - DCF77":
Operator of the DCF77 time signal tx:

Basics "Square wave":

Onlineshop "Network tester NWT01U":

Software: "PI-EL Design" by WB6BLD:
James L. Tonne:

Software: "SVC Filter Designer" by WB6BLD:
James L. Tonne:

Basics: calendar day calculation (German only):
Andreas Göbel:

My Youtube Channel:

Valid HTML 4.01 Transitional