micropython-samples/DS3231/ds3231_test.py

30 wiersze
1.3 KiB
Python

# Program to test/demonstrate consistency of results from getcal()
from array import array
from ds3231_pb import DS3231
# This takes 12.5 hours to run: to sve you the trouble here are results from one sample of Pyboard.
# Mean and standard deviation of RTC correction factors based on ten runs over different periods.
# Conclusion: for the best possible accuracy, run for 20 minutes. However a ten minute run gave
# a result within 2ppm (one minute/yr).
# >>> test()
# t = 5 -174 -175 -175 -172 -175 -175 -172 -174 -175 -172 avg -173.8 sd 1.3
# t = 10 -175 -175 -175 -175 -173 -175 -176 -175 -174 -175 avg -174.8 sd 0.7
# t = 20 -175 -175 -175 -175 -174 -175 -175 -175 -175 -174 avg -174.8 sd 0.4
# t = 40 -175 -175 -175 -174 -174 -175 -174 -174 -175 -174 avg -174.4 sd 0.5
def test():
NSAMPLES = 10
a = DS3231()
for t in (5, 10, 20, 40):
values = array('f', (0 for z in range(NSAMPLES)))
print('t = {:2d}'.format(t), end = '')
for x in range(NSAMPLES):
cal = a.getcal(t)
values[x] = cal
print('{:5d}'.format(cal), end = '')
avg = sum(values)/NSAMPLES
sd2 = sum([(v -avg)**2 for v in values])/NSAMPLES
sd = sd2 ** 0.5
print(' avg {:5.1f} sd {:5.1f}'.format(avg, sd))