Archive for February 5th, 2010

Ceramic Resonator Frequency Compensation

Although this isn’t a real long-term experiment, here’s a week of continuous WWVB clock operation, sitting by the window in our living room, with the circuit board open to ambient conditions.

The firmware checks the local oscillator drift against the WWVB time signal if more than 3 hours (10800 seconds) has elapsed since the last synch, so you’re not seeing every WWVB synch event.

Drift: TS   5281890 UTC 10015.113059 Elapsed 15900 Offset 0 Corr +0 ICR1 39841
Drift: TS   5283109 UTC 10016.074959 Elapsed 55680 Offset 2 Corr +1 ICR1 39842
Drift: TS   5283486 UTC 10016.140659 Elapsed 15600 Offset -1 Corr -2 ICR1 39840
Drift: TS   5284662 UTC 10017.094259 Elapsed 15720 Offset 0 Corr +0 ICR1 39841
Drift: TS   5285324 UTC 10017.204459 Elapsed 31680 Offset 1 Corr +1 ICR1 39842
Drift: TS   5285606 UTC 10018.012659 Elapsed 16920 Offset 0 Corr +0 ICR1 39842
Drift: TS   5286030 UTC 10018.083059 Elapsed 16860 Offset 0 Corr +0 ICR1 39842
Drift: TS   5286490 UTC 10018.161059 Elapsed 14220 Offset 0 Corr +0 ICR1 39842
Drift: TS   5287312 UTC 10019.055259 Elapsed 49320 Offset 0 Corr +0 ICR1 39842
Drift: TS   5288722 UTC 10020.052259 Elapsed 55980 Offset 0 Corr +0 ICR1 39842
Drift: TS   5290304 UTC 10021.074459 Elapsed 75480 Offset 0 Corr +0 ICR1 39842
Drift: TS   5291588 UTC 10022.050859 Elapsed 77040 Offset 1 Corr +0 ICR1 39842

The frequency offset is on the order of 1 in 75000 seconds: 13 parts per million or about 0.0013%.

The last line shows that the clock went 21.4 hours between synchs while drifting less than two seconds. If the clock didn’t synch for an entire week, it’d be within 15 seconds of the correct time. That’s not wonderful for a clock, but it’s good enough for this application: the display shows just hours and minutes.

Not bad for a cheap ceramic resonator on an Arduino Pro…

Leave a comment