# ✘0.250ppm/°C

Achim Gratz Stromeko at nexgo.de
Sun Nov 6 13:22:10 UTC 2016

```Gary E. Miller writes:
> Ntpviz now has a plot for frequency vs temp.  The results are
> interesting.

…wasn't it you who said just two weeks ago that they wouldn't be?

> Attached is from a Pi3.  It plots the Local Frequency Offset vs. the
> Pi CPU temp.

You really need to record the temperature aligned with the loopstat
values if you want to correlate them.  I actually read it out for each
PPS timestamp, then average onto the next loopstat value (I'm running
the loop at poll=4, so 16 seconds).  The temperature measurement on the
Pi is quite noisy, even though it appears they already do some sort of
filtering on it.

> By eyeball looks like a frequency shift of 0.250 ppm/°C

The denominator is a temperature difference, which can't be reported in
°C; so that should be ppm/K.

The ballpark number is roughly what I'd determined earlier for my rasPi.
I had initially assumed that they'd use AT cut crystals which would
produce a third-order temperature dependency, but the characteristic is
quite clearly parabolic.  So it is probably a BT cut, but the parabolic
constant extracted from the data is smaller than the theoretical value
for this cut.  Over a period of time longer than a week you need to take
crystal aging into account also.  Aging is a logarithmic function of
time, but assuming you've already aged out the initial transient and are
looking at a short time period w.r.t. the total aging time, you can use
linear aging instead.  That makes the fit function

p2a(t,T)=pa*t+pb*(T-T0)**2+pc

I'm using these initial values for the fit

pa=100e-6
pb=-5-3
pc=-3.5
T0=64.

then fit

fit [t=*:*][T=*:*][ppm=*:*] (p2a(t,T)-ppm) "joined.txt" using … via pa,pb,pc,T0

I'm only using values where the loop has converged to better than 1µs
for the fit.  Depending on how much data you have and what temperature
range it spans you might need to fix some of those parameters to make
the fit for the others converge.

In order to reduce the disturbances by fast ambient temperature
transients now that the heating season has begun, I've bubblewrapped my
rasPi (still in it's case) + GPS module and put it into a corrugated
cardboard box with some slits cut to feed the cables through.  That has
raised the thermal resistance enough that I can now operate the XO near
the cusp of the TC curve.  Currently I'm loading a single core with

sha512sum /dev/zero &

to raise the temperature a bit and there's a few hours of operation with
two cores loaded this way in the data.  I'll have to see how to get some
finer control over that load (and maybe use a second core for "heating")
so that I can operate exactly on the zero-TC point.  But first I need to
collect some more days worth of data.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: ppm.png
Type: image/png
Size: 98400 bytes
Desc: not available
URL: <http://lists.ntpsec.org/pipermail/devel/attachments/20161106/c14513c1/attachment.png>
-------------- next part --------------

Regards,
Achim.
--
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Samples for the Waldorf Blofeld: