A rubidium standard, or rubidium atomic clock, is a high accuracy frequency and time standard, usually accurate to within a few parts in 1011. This is still several orders of magnitude less than some of the more accurate standards – for example the NIST-F1 has an uncertainty of 5×10-16 (It is expected to neither gain nor lose a second in nearly 100 million years) and the more recent NIST-F2 has an uncertainty of 1×10-16 (It is expected to neither gain nor lose a second in nearly 300 million years). But the Rb standard is comparatively inexpensive, compact, and widely used in TV stations, Mobile phone base stations and GPS systems and is considered as a secondary standard.
The obvious way of checking would be to use another source with a higher accuracy, such as a caesium clock and do a phase comparison. Since that was not possible, he decided to use NIST’s time/frequency service, broadcasting on 60 kHz – WWVB. He did this because almost 30 years ago, he had built a receiver for WWVB which had since been running continuously in a corner of his shop, with only a minor adjustment since it was built.
His idea was to count and accumulate the phase ‘slips’ generated by comparing the output of the WWVB receiver with the output of the Rb standard using a digital phase comparator. The accuracy of the standard would be calculated as the derivative of N (number of slips) over time. The circuit is a quadrature mixer: it subtracts the frequency of one input from the other and outputs the difference frequency. The phase information is conveyed in the duty cycle of the pulses coming from the two phase comparators. The pulses are integrated and converted to digital logic level by low-pass filter/Schmitt trigger circuits. The quadrature-phased outputs are connected to the stepper motor driver which converts logic level inputs to bi-directional currents in the motor windings. The logic circuit is bread-boarded and along with the motor driver, housed in a computer hard drive enclosure which already had the power supply available.
Deep in the Colorado foothills, there are two radio transmitters that control the time on millions of clocks all across North America. It’s WWVB, the NIST time signal radio station that sends the time from several atomic clocks over the airwaves to radio controlled clocks across the continent. You might think replicating a 70 kW, multi-million dollar radio transmitter to set your own clock might be out of reach, but with a single ATtiny45, just about everything is possible.
Even though WWVB has enough power to set clocks in LA, New York, and the far reaches of Canada, even a pitifully underpowered transmitter – such as a microcontroller with a long wire attached to a pin PWMing at 60kHz – will be more than enough to overpower the official signal and set a custom time on a WWVB-controlled clock. This signal must be modulated, of course, and the most common radio controlled clocks use an extremely simple amplitude modulation that can be easily replicated by changing the duty cycle of the carrier. After that, it’s a simple matter of encoding the time signal.
The end result of this build is an extremely small one-chip device that can change the time of any remote-controlled clock. We can guess this would be useful if your radio controlled clock isn’t receiving a signal for some reason, but the fact that April 1st is just a few days away gives us a much, much better idea.
[Josh] and his lab partner [Eric] needed a final project for their Embedded Systems Design class, and thought that designing an Arduino shield would be a cool idea. They noticed that there are plenty of ways to get an Arduino to keep time, though none that they knew of utilized WWVB (Atomic Time) signals directly.
The Chrono-tomic Arduino shield uses a C-MAX radio to demodulate the WWVB signal, demodulating it and passing it along to a PIC16F1824 microcontroller. The PIC decodes the data frame and verifies it is valid, sending the time to an MCP79410N real-time clock module.
We can hear the “Yo dawg I herd you like microcontrollers so I put a microcontroller on your microcontroller shield” jokes already, but the pair says that they offloaded the time processing to the PIC in order to let the Arduino focus on whatever tasks it has been delegated. The Arduino code merely needs to request the time from the RTC whenever it is required, rather than deal with the decoding itself.
Is it overkill? Perhaps – though we think it heavily depends on your application and configuration. We can certainly conjure up situations where it would be useful.
[Mark Gibson] sent us a load of details on his build, a WWVB atomic clock using a pinball machine marquee (PDF). This is the upright portion of an old machine that used electromechanical displays instead of digital electronics. It’s big, noisy, and seeing it running might make you a bit giddy. Luckily he included video that shows it working on both the outside and the inside.
It took a bit of probing to discover the connections for relays that control the display. From there he used optoisolation to drive them with an Arduino. With this hurdle behind him, [Mark] set out to add atomic clock accuracy. He picked up a WWVB module and added it to the mix.
Check out his build log in PDF form linked above. He went out of his way to explain how the original parts work, and the processes he used during prototyping. For more of those juicy details we’ve added a photo gallery and his video after the break.
[Chris Kuethe] shows how to scavenge what could be a pricey WWVB module from a radio controlled clock. WWVB is a special radio station in Colorado that transmits an atomic-clock-derived signal to RC clocks. The clock model he uses, the Atomix 13131, goes for less than twenty bucks. He also shares the link to another tear down of a Sony branded radio controlled clock for similar purposes. So if you’re looking for a cheap way to obtain a WWVB module, the scavenging method could be the thrifty solution you seek.
(Disclaimer: A sticker for an event I organize is in the background of the photos, it’s not meant to be there as product placement.)