[time-nuts] TCVCXO Adjustment

Chris Caudle chris at chriscaudle.org
Thu Apr 12 22:03:31 UTC 2018


On Tue, April 10, 2018 6:10 pm, Wayne Holder wrote:
> which is spec'd at a frequency tolerance or +/- 1 PPM and a frequency
> stability of 0.28 PPM and a yearly aging of +/- 1 PPM max/year which, to
> me, seems pretty impressive for a part that costs about $8.

Something like this MEMS oscillator may also be worth consideration:
https://www.sitime.com/products/super-tcxo/sit5356

That page says the device is sampling now, so I have not seen one yet, but
the datasheet claims +/- 0.1ppm over temperature, initial tolerance of
1ppm, 1 year aging of +/- 0.5ppm, and 20 year aging of +/- 1ppm.

MEMS oscillators rely on fractional frequency PLL as an intrinsic part of
the design, so if you get the right part number you just write a frequency
update via I2C, so you would  not need an external DAC.

> I've been pondering how someone building the device
> would be able to easily and reliably calibrate it.

One of the big limitations in a commercial factory environment that you do
not face with a user built or user calibrated device is that commercial
test and calibration time is a cost incrementing by the minute.  For a
user calibration procedure you can take advantage of the fact that there
are several time sources which are noisy on short time scales, but average
out to low long term error.

> I'm basing the design around the Arduino, so the device could, in theory,
> use the USB Serial connection as a way to connect to a calibration program
> running on a PC.  I have a few idea on how to attempt to do this, but this
> is new territory for me, so I'm asking for advice and/or thoughts on how
> feasible this might be.  Is this a crazy, impractical idea given that all
> the builder will probably have available to perform the calibration is a
> regular PC and an Internet connection, or is there a way to make it work?

For a time-nuts class user the answers would be different, if you really
want to assume nothing but a PC and Internet it seems like you would be
limited to averaging external (i.e. off premise, contacted over the
Internet) NTP servers for long-ish periods of time.
Since the device you described is similar to a clock in that it just
constantly outputs time information, it seems that in principle you would
just need to read the timecode output from your device, compare that to a
known reliable time source (which for a typical non-time-nut I assume
would involve NTP), and average for long enough to build up confidence in
the rate difference between the known time source and your device.  Send
down a command to your device to adjust the frequency by enough to negate
the rate difference, then send down a command to update the current device
time to jump over whatever time error accumulated.

The amount of time you want to average (I think) just depends on how noisy
you think your current time estimates are, and how much precision you want
in the estimation of the rate differences.  Noise in the current time of
the calibration PC would typically be down to variations in network
latency if using remote network time sources.  Noise in retrieving the
current time of the timecode device would be in USB latency variations if
retrieving via USB (which would be on the order of the 1ms USB frame
time). You might be able to get better data from the timecode device by
just decoding the timecode audio stream in software.

The only other option which comes to mind would be incorporating longwave
radio receivers into the time setting in some way, but that would require
differences for each geographical region, and I do not think would be any
lower noise than network time for most users on modern Internet
connections.

Important to do up front will be to define specific performance limits you
would like to hit, and minimum acceptable performance.  I don't think you
will be able to really evaluate feasibility until you put real numbers on
your goals (initial accuracy, desired rate accuracy after x number of
weeks, whether you want to always adjust rate and current time
simultaneously, or if there are cases were averaging time to detect rate
it too long so you just want to jam sync current time, temperature range
over which the device has to maintain time, etc.).

-- 
Chris Caudle





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