Atomic Clock Receiver Output Signals: Pulse Timing, Decoding and Microcontroller Input

Atomic clock receiver modules make it possible to synchronize a microcontroller project with national time signals such as WWVB, DCF77, MSF or JJY. While the radio technology behind these signals can be complex, many receiver modules provide a simple digital output that can be read by a microcontroller.

This article explains what comes out of an atomic clock receiver module, how pulse timing is decoded and what to consider when connecting the signal to Arduino, ESP32, RP2040 or other microcontrollers.

What Does an Atomic Clock Receiver Output?

Traditional AM atomic clock receiver modules usually output a digital pulse signal that represents the received amplitude modulation.

  • The radio signal is received by a ferrite antenna
  • The receiver IC amplifies and filters the signal
  • The AM modulation is demodulated
  • The module outputs logic-level pulses

The microcontroller does not receive the 60 kHz or 77.5 kHz carrier directly. Instead, it receives a much slower timing signal, usually one pulse per second.

One Bit Per Second

Most long-wave atomic clock systems transmit time data at a very low data rate:

  • 1 bit per second
  • One complete time frame per minute
  • Pulse width or missing pulse identifies the bit type

This slow data rate makes the signal easy to process with a microcontroller, but it also means synchronization takes time. A full valid time frame usually requires at least one complete minute of clean reception.

Pulse Width Encoding

In many AM-based systems, the length of the pulse determines whether the received bit is a logical 0, logical 1 or a special marker.

The exact timing depends on the time signal standard:

  • WWVB uses its own pulse timing structure
  • DCF77 uses short and long amplitude reductions
  • MSF and JJY use their own timing formats

The microcontroller measures the duration of each pulse and classifies it according to the protocol being decoded.

Example: Short Pulse vs Long Pulse

A typical decoder looks for pulse lengths such as:

  • Short pulse → binary 0
  • Long pulse → binary 1
  • Missing or special pulse → minute marker

This is why accurate timing measurement is more important than fast processing speed. Even a small 8-bit microcontroller can decode these signals if the input signal is clean.

Minute Frames

The transmitted data is arranged in minute-long frames. Each bit has a defined position within the minute.

  • Bits represent minute, hour, date and status information
  • Some bits are used for parity or error checking
  • A marker identifies the start of the next minute

The decoder must keep track of the bit position and assemble the complete frame before the time can be considered valid.

Connecting the Receiver to a Microcontroller

Most receiver modules provide a digital output pin that can be connected to a GPIO input.

  • Receiver output → microcontroller input pin
  • Receiver GND → microcontroller GND
  • Receiver VCC → correct supply voltage

Some modules provide an active-high signal, while others provide an active-low signal. The software must match the signal polarity.

Input Voltage Levels

Always check the logic voltage of the receiver output.

  • 3.3V output is suitable for ESP32, RP2040 and most modern microcontrollers
  • 5V output may require level shifting for 3.3V inputs
  • Open-drain outputs may require a pull-up resistor

When in doubt, use a pull-up to the microcontroller's logic voltage rather than to the receiver's supply voltage.

Polling vs Interrupts

Polling

The simplest method is to read the input pin repeatedly in the main loop.

  • Easy to implement
  • Works if the program is simple
  • Can miss edges if the firmware is busy

Interrupts

A more reliable method is to use a GPIO interrupt on rising or falling edges.

  • Captures pulse transitions accurately
  • Works better in complex programs
  • Allows precise pulse width measurement

Interrupt-based decoding is usually preferred for reliable atomic clock reception.

Measuring Pulse Duration

The decoder typically records the time when the signal changes state.

  1. Detect pulse start
  2. Store timestamp using millis() or micros()
  3. Detect pulse end
  4. Calculate pulse duration
  5. Classify pulse as 0, 1 or marker

For these slow signals, millisecond resolution is usually sufficient.

Noise and False Pulses

Atomic clock signals are weak, and receiver outputs may contain noise or unstable pulses under poor reception conditions.

  • Short glitches should be ignored
  • Pulse widths should be checked against valid ranges
  • Invalid frames should be discarded

A good decoder does not trust every pulse blindly. It validates timing, bit positions and parity before setting the system clock.

Frame Validation

Before accepting decoded time, the software should check whether the received frame is valid.

  • Pulse timing must be within expected limits
  • Minute marker must appear in the correct position
  • BCD values must be valid
  • Parity bits should match where supported

This prevents corrupted time data from being written into an RTC.

Writing the Decoded Time to an RTC

In most systems, the decoded atomic time is used to update a real-time clock such as a DS3231.

  • Atomic receiver provides accurate synchronization
  • RTC maintains time between successful receptions
  • Microcontroller updates the RTC only after a valid frame

This combination provides reliable operation even when radio reception is only available occasionally.

Special Case: WWVB-BPSK Receivers

Modern WWVB-BPSK receivers, such as designs based on the EverSet ES100, work differently from simple AM receiver modules.

  • The receiver performs advanced signal processing internally
  • BPSK decoding is handled by the chip
  • The microcontroller receives processed time data rather than raw AM pulses

This greatly reduces firmware complexity and improves reliability, especially in difficult indoor reception environments.

Receiver Output Comparison

Receiver Type Output Signal Microcontroller Task Complexity
AM receiver module Pulse signal Measure pulse widths and decode frame Medium
MAS6180C-based receiver Demodulated AM output Decode WWVB, DCF77, MSF or JJY protocol Medium
ES100 WWVB-BPSK receiver Processed digital time data Read and validate decoded data Low

Common Mistakes

  • Connecting the receiver output to the wrong voltage level
  • Ignoring signal polarity
  • Using polling in firmware that is too busy
  • Accepting invalid frames without parity or range checks
  • Writing bad time data into the RTC
  • Placing the receiver too close to noisy electronics

Best Practices

  • Use interrupts for accurate pulse timing
  • Filter out short glitches
  • Validate complete frames before accepting time
  • Use a DS3231 or similar RTC as backup timekeeper
  • Test reception and decoding in the final installation environment

Conclusion

Atomic clock receiver outputs are usually simple enough for microcontrollers to read, but reliable decoding requires careful pulse timing, validation and noise handling.

Traditional AM receivers provide pulse signals that must be decoded in firmware. Modern receivers such as the ES100 simplify this process by performing advanced decoding internally. In both cases, the best system design combines the receiver with a reliable RTC so the device can keep accurate time even when reception is temporary or intermittent.

Shopping Cart
Scroll to Top