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 _______________________________________________ time-nuts mailing list -- email@example.com To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts and follow the instructions there.