Navspark timer drift

The Navspark is a microcontroller with a GPS peripheral. It runs the GPS navigation/timing code as a binary-only library, and uses the Arduino IDE/environment. I have custom code printing timestamp markers on the Navspark, and I'm measuring the timestamp of the first byte of each line received on the PC. I've thrown away samples where the PC was too busy and queued up multiple bytes before running the sampling program.

I took an arbitrary start point and every 10 seconds, measured how much time has passed from that point on both the PC clock and the Navspark clock. I am not using the GPS peripheral or GPS data at this point. Below is a graph comparing the PC clock vs the Navspark clock. The PC is NTP synced over the general internet (and the PC clock has some amount of error because of this).

Time Drift

The green line is the best-fit linear equation y=a*x+b. You can see that the Navspark clock is slower (126 parts per billion slower). After 7 days and 16 hours, it lost 84 milliseconds. Thankfully, this is a relatively flat line , and the error can be taken into account. The Navspark has a temperature-controlled oscillator (TCXO), which explains why it is so stable.

This information is useful for keeping track of time when the GPS signal is weak or unavailable.