6169

Martin Ossmann’s “SDR radio clocks” (Elektor January/February 2023, project 210335-03) makes a persuasive case: a Teensy 4.0 can sample a longwave carrier directly, mix it down with a software DDS and demodulate whatever is riding on it. One platform, five transmitters. But the author chose separate firmware per transmitter over one image with a selector, and the antenna is retuned by swapping a capacitor. This project ties both ends together.

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 dd. 8 Aug. 2026: KiCad schematics and board, Arduino code coming up soon.