Building the atomic clock for my “Memento Mori” installation with a little bit help of Arduino
I had in mind to create an art installation with an atomic clock for quite some time. They have always been fascinating to me with their unimaginable accuracy. Some are even as accurate as 2.3E−16, which means if you let the clock run for 137 million years (of course only in theory), the clock will be no more then one second ahead or behind the actual time. Atomic clocks are not only commonly used in scientific projects and by governments to keep accurate time, but also play an important role in our everyday lives: Global positioning systems, and telecommunication systems are depending on very accurate timing. Anyway, some month ago, I heard that there are second-hand FE-5680A rubidium frequency standards available online for an affordable price. I ordered one (as could be expected) and did some research on how to interface with the device. Here you can find the specs from the manufacturer. The FE-5680A is available in different versions. Some contain a BNC connector and there is a version with a programmable and variable output frequency from 1 Hz to 20 MHz available. The version I ordered is the simplest version with only a male DE9 connector as an interface and it puts out a 10 MHz sine wave. The signal is not super strong with 0.5V rms (1.41Vpp) into 50 ohm, but I knew it’ll be sufficient for what I had in mind. The functionality of the FE-5680A is nicely explained by Dave from the EEVblog in this video, and he is opening it’s case in this video. My goal was to have a working rubidium atomic clock in a functional enclosure. I planed to mount it into the case of a broken surge-protected battery backup system – together with a power supply and a custom circuit to convert the 10 MHz sine wave into a 1 kHz 5V pulse and a 1 Hz 5V pulse. I succeeded and it became the atomic clock for my “Memento Mori” installation.
Let’s start from the beginning: During the process I used basic tools like screwdrivers, pliers, a soldering iron and a multimeter. Beside that, I was very glad to have access to an oscilloscope (Rigol DS1102E) in order to display the different waveforms. During prototyping I used bench power supply. The one on my table has (beside a fixed +12V output I did not use in this project) a variable output, which I put to +15V and a fixed +5V output. After some experimenting and some research on the web I figured the following pinout works with the lower-end version of the FE-5680A, I had in my hands.
Pin 1: input +15V to +18V (Connected to +15V the device pulls 1.7A at start and 0.6A when at temperature.) pin 2: ground pin 3: lock (low when locked) pin 4: input +5V pin 5: ground pin 6: output 1 pulse (1µs/5V) per second pin 7: output 10 MHz sine wave 0.5V rms (1.41Vpp) into 50 ohm pin 8: RS-232 RX (not connected) pin 9: RS-232 TX (not connected) After connecting the grounds (pins 2 and 5) to ground, +15V to pin 1 and +5V to pin 4, we immediately get a sine wave at pin 7.
During the start process the signal is not very stable. The device needs a few minutes to bring the rubidium gas to temperature so it’s oscillation can be used to discipline the integrated cristal. When measuring the lock pin 3 during this start process we get 5V to ground. After the signal has stabilized (locked) pin 3 goes low (0V when measuring to ground). Several sources state, that it is handy to connect the kathode of a LED to the lock pin and it’s anode via a 330 Ohm resistor to +5V. When doing this the LED is on when the signal is locked. This method can only be used when there is no need for the 1 PPS output on pin 6 (read below). The FE-5680A gets fairly hot but there is no need to get worried about it. I measured temperatures up to 60°C on the surface of the frequency standart after letting it run for more then 10 minutes. This is normal and necessary to get a stable signal. An attempt to cool it down with extensive heat-sinks or fans would be wrong. I took this image with a thermal camera, a FLIR which I lent from a friend, after the atomic clock has been running for 10 minutes and it shows clearly an elevated temperature off the case over the frequency standart. After this temperature information, let’s get back to our signals. As noted above, the FE-5680A is also putting out a 1 µs pulse every second from pin 6. The only way to visualize this pulse is with an oscilloscope in the right setting (1 µs/DIV and 1V/DIV). 1 µs is too short to be measured with a multimeter or to light up an LED. 1 µs is nevertheless long enough to see with a microcontroller (e.g. a digital input of an Arduino) when using an external interrupt pin. More about that later.
I have been trying to find the pulse for quite some time – without any success. After some tinkering I discovered, that the temporarily attached LED between the pin 3 and +5V managed to pull the 1PPS signal down. This however is not an issue when attaching pin 3 to the input of am Arduino to detect wheter the signal is locked. Now we have covered the three output signals I use in this project: The 10 MHz sine wave at pin 7, the 1 PPS at pin 6 and the lock indicator on pin 3, which gets pulled low when the sine wave is stable. There is not much use for the weak 10 MHz signal as such. To get a desired 1 kHz pulse, I need to divide the signal by 10’000. This can be done with the help of decade counters. See the input of a 10 kHz and output of a 1 kHz signal from a 74HC390 counter below. Each 74HC390 contains two decade counter. If two of these ICs are connected in series we are able to convert 10 MHz to 1 kHz.
When supplied with +5V, the 74HC390 has a threshold of +2.5V to trigger the clock. The sine wave directly from the frequency standard does not even come close to that level. the solution is to lift the signal with a 10K potentiometer acting as a voltage divider and then feed it in a Schmitt trigger to get a more workable signal. The 1 nF capacitor in front of the potentiometer helps filtering out low frequencies (in case there is any 50 Hz or 60 Hz mains noise).
At the end of this circuit, we have a signal which we can use with Arduino.