[time-nuts] Home-brew GPSDO

Nigel Vander Houwen timenuts-nigelvh at nigelvh.com
Thu Mar 17 00:47:04 EDT 2016


Hello All,

Thanks to the advice earlier, I’ve gotten my HP 10544A OCXO working well, and close enough in frequency that the EFC is useful. I’ve started work on putting together a home-brew GPSDO. In short, it’s an Arduino Due, and a u-blox MAX-7 module. (I may think about grabbing a LEA module in the future, but the data sheet reference to PPS accuracy looks about the same, so for now, the MAX-7 will work alright).

The Arduino Due has some nice 32bit timer/counters on board, and I’m clocking one of them from the 10MHz output from the 10544A. The PPS output of the GPS goes into a hardware trigger pin, so I can trigger a capture of the counter value in hardware without the delay uncertainty of trying to capture it in an Interrupt Service Routine.

I’m using one of the Due’s on board 12-bit DACs (Not PWM) to feed the EFC input of the 10544A. The Due’s DAC output is only 0-3.3V, which is a fair bit less range than the -5 to +5V of the EFC input. Since the EFC input is inverting, I’ve got the crystal coarsely set just slightly high in frequency, and the DAC operating from 0-3.3V will bring it down to where it should be.

To put a VERY basic disciplining scheme in place, I’ve set it up so I’m capturing the clock cycles of the 32bit counter (clocked from the 10MHz), every second on the PPS trigger, adding them up over 420 seconds (a few seconds shy of the 32-bit counter overflowing), and then taking the average. If it’s high, voltage goes up, if it’s low, voltage goes down.

I haven’t yet put in place, but I plan to:
Reconfigure the u-blox module into stationary position mode, which should help with accuracy over the default mode
Implement a survey routine to average some number of position samples on request/on power up?
Implement different disciplining modes, at power on, give the oven time to warm up, when first disciplining, average over shorter intervals to hone in on the proper EFC level quicker, move to longer intervals for long term disciplining.

I would like input on the control loop though. I can’t say I’ve done a lot of control loop theory, but I imagine folks have good ideas for better ways to discipline this crystal than just taking really long averages.

I haven’t put labels on the case yet, but here’s an album with some photos of the build so far. I still need to add a buffer amplifier for the 10MHz output so as to not load down the crystal too hard, but otherwise I’m fairly satisfied with the build so far. http://images.digitalnigel.com/index.php/GPSDO-Build <http://images.digitalnigel.com/index.php/GPSDO-Build>

Anyway, thanks again for the insight earlier regarding tuning the oven temperature, and I look forward to your thoughts regarding this build.

Thanks,
Nigel


More information about the time-nuts mailing list