6169

This SDR Radio Clock board receives up to six different European time signals. Uses one fixed antenna and precision capacitors, along with an auto trimming function. Built from Martin Ossmann’s “SDR radio clocks” (Elektor January/February 2023, project 210335-03).

701-schematic-blocks.png


The six stations are DCF77, MSF60, three EFR ripple-control carriers and TDF162; BBC 198 kHz was dropped in their favour. Throughout this article they are named as the firmware names them — a six-character selector tag, and under it the ISO country code plus the nearest major city, because the actual sites are smaller places: Mainflingen for DE Frankfurt, Anthorn for GB Carlisle, Burg for DE Magdeburg, Lakihegy for HU Budapest and Allouis for FR Bourges.

All six share the DSP skeleton — ADC interrupt, ring buffer, DDS, biquad library, scope — and diverge at the demodulator. There are only four of those for six stations: the three EFR carriers differ in nothing but the carrier and the bandpass centred on it, and TDF162 borrows DCF77’s frame decoder outright. ALS162 carries the same time code, identical bit positions and parity; only the modulation differs, amplitude against phase.

Which one is running is a runtime choice, not a compile-time one. A press of the user button on the PCA9555 steps to the next station: the expander pulls its interrupt line, the decoder tick reads the port, and stnSelect() swaps the demodulator, the sample rate, the filter set and the antenna’s tank branch in one go — the same expander drives the capacitor selects, so the analogue front end follows the software automatically. A keystroke on the serial monitor does the same thing for bench work.

See the download section for the full documented article: 701 - SDR Radio Clock_rev11.pdf

Note 1: (8 Aug. 2026): KiCad schematics and board, Arduino code coming up soon.
Note 2: (13 Aug. 2026): Auto trimming added, OpAmp compare under review.