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

paul swed paulswedb at gmail.com
Wed Feb 12 00:25:14 UTC 2014


Lars
Will you be sharing your source code?
Regards
Paul
WB8TSL


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
> 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
> _______________________________________________
> 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.
>



More information about the Time-nuts_lists.febo.com mailing list