Ovenized crystal oscillator frequency stability

What it does

In this experiment I will use an Arduino and a DCF77 time signal radio receiver to measure the stability of an ovenized crystal oscillator running at 1 MHz. It demonstrates that 50ppb (or 50 milliHerz) can be achieved on the short term, whereby an aging effect of 0.1 ppb per day is demonstrated with a 18 month long dataset. The output of the 1MHz oscillator is fed into a 248 counter and six 74HC165 parallel in, serial out (piso) conversion ICs that are controlled by an ATMEGA 2560, the circuit is described here. With this setup running at 1 MHz you get a rollover every 10 years, the resolution is 1 microsecond. In principle you could do this also with an Arduino but I decided for this set-up since I already had most of the components left over from an earlier experiment.

With the 48 bit counter and compare the output to the time synchronization signal received from the DCF77 transmitter in Frankfurt Germany, about 450 km from Rotterdam in the Netherlands. Once you collect 720 data frames after 12 hours a regression can be made between the internal clock and the time standard. The slope of the regression curve results in the frequency offset relative to the nominal oscillator frequency. In fact, the oscillator runs currently at -27.40 +/- 0.05 Hz below the reference frequency, and it is mostly affected by temperature. For this reason the oscillator is kept in an oven at approximately 60 degrees, it comes with its own power supply and operational amplifiers that are separated from the digital part. I managed to get the annual frequency variation of 50 milliHerz (or 50 ppb) in this way.

The hardware

On the front panel you would see for instance:


where the DCF77 receiver is put several meters away, via a DIN connector and a telephone cable (has a two wire core and a mantle that you put to the ground) you feed to signal to the case. On the inside you get the following photo, where on the left image you find the ATMEGA 2560 mounted on a green PCB above the counter/piso board and on the left board you find the temperature controlled oscillator (TCXO). The aluminum box is the oven, under this box you find opamps of the thermostat and the power supply is on the bottom right grey PCB left of the blue arduino. The LCD display is below the thermostat electronics.


In the oven I soldered a transistor on the 1MHz crystal case (it survived the torture), the thermostat it continuous and the precision is as good as the NTC and the resistors are. There is Styrofoam on the inside of the aluminum box to provide some protection against heat losses which seem to occur during the winter. Maybe I should try a double thermostat at some point.


Analysis of the data

The experiment assigns one microsecond counts originating from the TCXO to the one minute time frames received from the DCF time standard in Germany. This allows one to compute regression coefficients, after 12 hour they give me the frequency offset of the oscillator relative to the time standard. The frequency offset is continuously evaluated, after 12 hours an estimated value is stored in the EEPROM of an ATMEGA 2560 board that also displays in real time the received DCF data and the estimated frequency offsets. Every 6 weeks I read out the EEPROM, and that results in the following graph where the red line is a trend curve fitting the individual 12 hour measurements.


The current design requires about 180 days for the frequency to stabilize, I’m not sure what goes on, perhaps it needs to get rid of some of the volatiles before it stabilizes. Earlier I also noticed a 5 Hz jump, it occurred only once roughly 2 months before I arrived at this design in September 2013. When you leave out the first 180 days of data you get the following graph:


This graph shows a short frequency standard deviation of approx. 40 to 50 ppb, (1 mHz (milliHertz) divided by 1 MHz (megahertz) equals to 1 ppb). Aging of the crystal (frequency reduction over time) is considered to be normal, I found 0.1 ppb/day or 40 ppb/year which is approximately 5 to 10 larger than what you can get from high quality crystals. In July to September it can occasionally become hot in my mancave, and in this case the temperature compensation may not be sufficient, so this explains the yearly amplitude of around 50 ppb that can be observed.

Allan deviation plots

After modelling the effect of voltage change of the thermostat on the oscillator, removing a (linear) aging effect and editing out the first 180 days of data where the system was converging to a stable frequency, I arrive at the following Allan deviation plot.


The Allan deviation analysis shows that 13 ppb can be obtained with an integration time of 35 days.  For integration times up to 10 days we see 1/f behavior indicative of sampling noise, between 10 days and 35 days we see a plateau, and beyond 35 days we see a random walk process. This is nowhere near what can be accomplished with a professional system, but these systems come at a cost, this DIY experiment born in the mancave is worth no more than $100.


What is demonstrated is 100 ppb frequency stability within 5 days and 10ppb within a month with a $5 dollar crystal in a thermostat at 60C. In order improve this experiment I would start to improve the sampling of the DCF signal. DCF77 reception is oftentimes noisy and in the current set up approximately 1 millisecond repeatability can be obtained after a minute. Frequently the DCF77 reception noise is such that no measurements can be obtained, typically I receive 70% of the frames and when there are thunderstorms near Frankfurt nothing is received at all.

To improve the reference time signal one could consider GPS with 1 pps output. With my wireless GPS receiver I demonstrated already 500 microsecond noise for 10 seconds pulses collected in a 10 minute data batch, (these statistics are based on the comparison between a non-ovenized Arduino oscillator measuring the 1pps output of a GPS chip). When we would use a latched counter running at 10 MHz and an ovenized quartz where the latch is triggered by the 1pps pulse and the Arduino reading out the counter then better results can be achieved. Yet GPS needs an outdoor antenna, and it would require a coax cable etc etc. This makes the design more difficult; with DCF77 technology (a 10 euro board that I got from CONRAD) I only have to keep the antenna somewhat away from switching power supplies etc.

Last update: 20-jun-2015