[time-nuts] Designing and building an OCXO and GPSDO

Philip Pemberton lists at philpem.me.uk
Sun Aug 10 17:45:13 EDT 2008

Hi folks,
   I've been following the mailing list for a few weeks using Pipermail (the 
web-based archive) and I figured now was a good time to jump in (so to speak).

   I'm working on a GPS-disciplined oscillator, based on a Trimble SVeeSix GPS 
receiver, and a homebrew OCXO. I've got a pair of 10MHz 50-degree-C oven 
crystals, and have a pretty good idea how to handle the temperature regulation.

   What I'm planning to do is mount the crystal on a copper plate with two 
power transistors, using heatsink compound between the copper and 
transistors/crystal case, and fit a temperature sensor to the top side of the 
crystal case. I'm planning to use a copper bracket to hold the sensor onto the 
crystal, and in turn mount the crystal to the copper base.

   As far as temperature regulation goes, I'm going to use a PIC 
microcontroller (one of the 8-pin chips with an A/D converter) to monitor the 
temperature of the crystal, and use a PID loop to control the two power 
transistors to maintain a temperature of 50C +/- 2 Celsius (the accuracy spec 
of the temperature sensor). I also have other higher-accuracy sensors (Dallas 
DS18S20 and DS18B20) that I can calibrate with; these are accurate to around 
half a degree Celsius with a resolution of 0.5C.

   The whole thing is going to be mounted in a metal box lined with 1/2in 
thick polystyrene, with all external connections made via Molex KK connectors 
and standard hookup wire. If there's any advantage to doing so, I might use 
RG174 cable for the oscillator output, but otherwise I'll stick to the KKs and 
maybe twist the OUT/GND wires together.

   What I'm stuck on is the oscillator itself. The crystals are standard 
parallel-resonant parts, with a load capacitance of 30 picofarads. I've got a 
few varicap diodes (varactors) that I'm planning to use to allow external 
trimming of the frequency, on top of what the ~20pf "coarse" preset will 
allow. So on one side of the crystal I'll have a 33pf capacitor, and on the 
other a 20pf load capacitor, the varicap and a low-value DC-blocking capacitor 
for said varicap.

   The standard oscillator circuit for TTL seems to be a pair of 74HC04 
inverters and a few passives, or a transistor version that outputs a 
sine-wave. Are there any particular types of oscillator that are more suitable 
for high-accuracy timing?

   What I'd like to do is use this oscillator to calibrate frequency counters 
and check the calibration on oscilloscopes and similar. Being able to lock 
function generators (a mix of custom DDS sine generators based on Analog 
Devices DDS chips and FPGA-based complex-signal DDSes) against the oscillator 
would be very useful as well. Should I be going for a 1V sine output and then 
convert this to TTL in the generators (which are easy to retrofit with adapter 
boards) or output TTL from the reference and leave it at that?

   What design parameters should I be optimising for, and how?

   Given that a standard crystal is good to roughly 100ppm, and most 
commercial OCXOs are specified to be within 1x10^-9 or better, I'm aiming for 
around 1ppm to start with. Is even this realistic for a homebrew device?

   There seems to be quite a bit of difference between just building a 4MHz 
oscillator to run a PIC MCU to building an accurate frequency reference source...

   As far as parts are concerned, I'm planning to use either a BB153 or BB148 
varicap, a Microchip TC1047AVNBTR temperature sensor, a National Semiconductor 
LM4040CIM3-4.1 voltage reference for the PIC's A/D, two BD139 power 
transistors and a PIC12F683 microcontroller.

lists at philpem.me.uk

More information about the time-nuts mailing list