[time-nuts] Arduino GPSDO with 1ns res TIC

Lars Walenius lars.walenius at hotmail.com
Tue Feb 11 13:23:02 EST 2014

I have long thought I should make my first post to the Time-Nuts forum. Being very grateful to everything I learned here.

I have tried to attach a picture showing one of my two Arduino GPSDO Shields . The first one I put together in 2011. It only needs two HCMOS circuits (HC390+HC4046), one diode and passive components. Still it has 1nsec resolution. 


From the simplified schematic it can be seen that the TIC uses a HC4046 very similar to the Shera controller but instead of using a digital counter I just added a diode and RC-net that goes directly into one of the 10-bit AD channels. So the TIC has about 1nsec resolution and 1usec range when the HC4046 is fed with 1MHz from the HC390. The linearity of the TIC is quite good as I use the 1.1Volt ADC range. 500ns gives a reading of about 530 if 1000ns is a reading of 1000. See also the picture that shows a hanging bridge measured with the board. Scale is AD value but is very close to 1ns per bit.


To get a broader TIC range I added a 5MHz input to timer 1 in the Arduino. Sorry to say I am not a good programmer so I have managed to get it to read the timer and add usecs to the analog nsec value but sometimes I get a wrong value so I am not using it to regulate yet.


As DAC I use two 8-bit PWMs in the Arduino Uno. They are summed by two resistor and to get ripple down I have a two-pole RC lowpass filter. My measurements with a Keithley 2000 6 digit DMM indicates at least 13-14bits monotonic range with 1% resistors. The internal 5Volt in the Arduino UNOs seems to have about or maybe less than 100ppm/C drift. With my OCXO I use only a 10ppb (1E-8) range so I get better than 1E-12 resolution and less than 1E-12/°C extra from the DAC. For the LPRO Rb I use 1ppb range so it gives better than 1E-13 resolution and less than 1E-13/°C extra from the DAC.


I also read temperature of the OCXO or Rb I discipline. The program can correct for temperature drift if needed. I have used it for the OCXO I have, an old CEPE that look similar to an 8663,  but not for the LPRO. My LPRO have about 7E-13/°C tempdrift and 7E-14/mbar pressure drift so pressure drifts gives more problem for me.


For the LPRO, that seems to need about 7000secs timecontant, I also found a new problem when I was testing that for the first time during Christmas. The problem was a truncation error with long time constants and heavy prefiltering that gives an apparent change in timecontant and damping (more ringing). It is not solved in my code yet. So right now I use 1000secs as time constant for the LPRO also. 


About my program:

-The 1PPS gives an interrupt that starts almost all of the program and first reads the TIC ADC

-Uses a prefilter after the TIC (Now set to one forth of time constant in my code )

-Uses a PI loop

-Senses four dipswitches for 16 different timecontansts between 100 and 30000secs

-Senses four other dipswitches to set e.g fast locking (50 sec Tc), hold, max-, min-, mid-dac value for tests

-Has a missed PPS counter (increments if more than 1.1secs since last PPS)

-Has a  PPS lock indication that turns on if the TIC value is within 500+-x for more than five time constants

-Sends out time, DAC value, temperature, missed PPS and Locked every second on the serial line

-It also sends out the last 144 averaged 5minutes and 3hour TIC-values, DACvalue and temperature with one each of the values each second so after 300seconds all stored values are sent to the serial line. From the Arduino serial monitor it is rather easy to copy-paste to e.g. Excel for further processing. 

-It starts with the last stored 3 hour DAC-value if the EEPROM is not empty at start or if the board is reset. If the EEPROM is empty it starts with a value set in the program.

My Arduino GPSDO shield is far from ready but probably very useful for those who like to experiment and have a GPS with 1PPS out and an OCXO with a voltage control input and 10MHz TTL level output.

Lars Walenius
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Lars gpsdo shield.jpg
Type: image/jpeg
Size: 111938 bytes
Desc: Lars gpsdo shield.jpg
URL: <http://lists.febo.com/pipermail/time-nuts_lists.febo.com/attachments/20140211/8bdbc232/attachment.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lars gpsdo simple schematic.jpg
Type: image/jpeg
Size: 88268 bytes
Desc: lars gpsdo simple schematic.jpg
URL: <http://lists.febo.com/pipermail/time-nuts_lists.febo.com/attachments/20140211/8bdbc232/attachment-0001.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 2000secs of data LPRO-M12 ns res w hanging bridge.jpg
Type: image/jpeg
Size: 73564 bytes
Desc: 2000secs of data LPRO-M12 ns res w hanging bridge.jpg
URL: <http://lists.febo.com/pipermail/time-nuts_lists.febo.com/attachments/20140211/8bdbc232/attachment-0002.jpg>

More information about the time-nuts mailing list