[time-nuts] Arduino GPSDO with 1ns res TIC
alex at pcscons.com
Tue Feb 11 19:42:24 EST 2014
Thank you Paul,
I am a hardware guy, made synthesizers, since 1967 [Schomandl Munich
that is the picture was one of the last ones for Picom, -- I did not
have better Spectrum analyzer the HP8562's own noise is around -93dB/c
On 2/11/2014 4:25 PM, paul swed wrote:
> Will you be sharing your source code?
> On Tue, Feb 11, 2014 at 1:23 PM, Lars Walenius <lars.walenius at hotmail.com>wrote:
>> 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
>> 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
>> -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
>> -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
>> time-nuts mailing list -- time-nuts at febo.com
>> To unsubscribe, go to
>> and follow the instructions there.
> time-nuts mailing list -- time-nuts at febo.com
> To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
> and follow the instructions there.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 5GHz1 copy.jpg
Size: 46969 bytes
Desc: not available
More information about the time-nuts