C-MAX WWVB Experiments

A while back I acquired a C-MAX WWVB module from SparkFun.  The following is an investigation into using it to set my Rubidium atomic clock.

Circuit Description

The module is a C-Max evaluation board model CMMR-6. It includes a ~3 inch loopstick antenna.  I added a 78L05 regulator to allow it to be run from my 13.8VDC shack supply.  I also added an LED and resistor to the TCO output. The oscillioscope is directly connected to the TCON output.

Test conditions

Tests were conducted at my home radio station coordinates 35.70N 78.70W.  Elevation is approximately 80M (GPS).  The antenna and receiver were indoors in a second floor room.  Best signals were received with the antenna lying on the wooden desk several inches away from the receiver and breadboard.

Tests were conducted October 26, 2011 at 0200Z – 10pm Local.

The scope is triggered by the PPS output of a Thunderbolt GPS. The T symbol on the scope designates the beginning of a UTC second (~100ns).


Here are example traces of a binary 0, binary 1, and position marker:

Fig 1 - Binary 0

Fig 2 - Binary 1

Fig 3 - Position marker


I then recorded one minutes’ worth of pulses. This is to show the relative lengths of all 3 pulse types and the jitter of their start/end times:

Fig 4 - One minute pulse overlay (0230Z)

This plot demonstrates the cleanliness of the signal.  All of the transitions line up with the short or long pulse lengths.  The signal could be decoded by simply sampling the input at 150ms, 400ms and 550ms.

Reading the time code establishes the date, hour, and minute.  Detecting two position markers in a row establishes the beginning of the next minute.  However, we need an accurate way of detecting the beginning of a second.  According to the NIST documentation “The carrier power is reduced by 17 dB at the start of each second, so that the leading edge of every negative going pulse is on time.”  Since we are monitoring a negated signal, we should see the leading edge of every positive going pulse as on time (corresponds to the beginning of a UTC second).  I zoomed in the scope and performed timed recordings of multiple pulses:

Fig 5 - 30 seconds of leading edges

Fig 6 - 60 seconds of leading edges

Fig 7 - 4 minutes of leading edges

The width of these plots makes it abundantly clear that there is a great deal of jitter in this signal.  The 4 minute plot showed signals as far at +/- 18ms from the center.  Quite a few signals stayed within +/- 8 ms.  The distribution is best measured using a histogram, but these rough plots paint a bleak picture of this receiver as a precision time source.

Also, there is the issue of when the pulses arrive.  My location is 2363km from WWVB.  A direct path would take 7.882ms.  However, these signals are arriving much later – approximately 33ms past the beginning of a UTC second.

Comparison to WWV

To rule out errors in my measurement, I also measured the WWV 10Mhz broadcast. This is transmitted from the same location, but is done at a higher frequency and using an AM modulated audio signal. Each second begins with a “tick” made up of 5 cycles of 1000Hz audio. I plotted the audio from an HF receiver (Icom 746Pro) using the same scope and trigger apparatus:

Fig 8 - WWV Signal

Here we see a delay of 9.440ms.  This is much closer to the 7.882ms theoretical delay.  It is slightly longer due to ionospheric reflection and the delay through the DSP radio (unmeasured).  Repeated monitoring of the WWV signal indicated jitter below 1ms.

Other ideas

I attempted to measure the output with the AGC hold turned on. Grounding the HLD line caused output to disappear from the module altogether. I suspect that R2 needs to be removed from the board, but I do not have the equipment to cleanly do so.

It may also be possible to recover the carrier from one of the filter pins. This might yield a better phase source.

Would also be interesting to try these measurements with a larger antenna as described on Brooke Clarke’s page.


Upon measuring these results, I closely re-read the datasheet for the C-MAX part. It lists “Output Pulse Widths Tolerance” as +/- 35ms. From this I can infer that they make no guarantees about the timing of the pulses received beyond that bound. Clearly, this device was not designed to deliver a reliable on-time pulse.

Given the general cleanliness of the signal, perhaps the chip has aggressive noise filtering. The signal may need to be “on” for 20ms or so before sending a 1 to the output. This kind of jitter is likely acceptable for the consumer devices this $10 part was designed to operate in.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s