Den Arduino Quarz Takt genauer bestimmen mit einer RTC oder mit GPS

Für einen Frequenzzähler mit dem Arduino ist es wichtig den Quarz Takt genau zu bestimmen. Beim Arduino Uno ist er mit 16 MHz angegeben. Der eingebaute Quarz hat einen typischen Fehler von \pm 30ppm (parts per million) also \pm30*10^{-6}.

Das entspricht 30 Sekunden auf 1.000.000 Sekunden beim Arduino.

Für den Frequenzzähler bedeutet das einen Fehler für 100.000 Hz von \pm 3Hz. Da dieser Fehler auch bei 99.999 Hz gilt, können wir von dieser Genauigkeit ausgehen:
> Die ersten 4 Stellen der Frequenz werden korrekt dargestellt.

Der Fehler ist herstellungsbedingt und auch temperaturabhängig. Zusätzlich gibt es eine Langzeitdrift bei Quarzen über mehrere Tage.

 

Die Verbesserung mit einer Uhr / RTC.

Das RTC Modul DS1307 aus dem vorherigen Beitrag hat einen Fehler von ca. 1 Minute pro Monat (=43200 Minuten). Das sind zum Vergleich 23 ppm. Mit diesem RTC Modul ist also keine wirkliche Ermittlung und Verbesserung der Taktfrequenz möglich.

Die Verwendung einer genaueren Uhr (z.B. DS3234) führt zu einem Fehler von 1 Minute pro Jahr (=518.400 Minuten) oder \pm 2 ppm. Wenn wir das umsetzen, können die ersten 5 Stellen der Frequenz fehlerfrei dargestellt werden.

Für die Korrektur der Taktfrequenz ist ein Vergleich der RTC Sekunden und der Arduino Takte ( mit der Funktion uptime() ) über 518.400 Sekunden notwendig, das sind 6 Tage.

> Die ersten 5 Stellen der Frequenz werden korrekt dargestellt nach 6 Tagen Abgleich mit einem hoch genauen Uhr Modul (RTC).

Dieser Abgleich kann im Hintergrund laufen, allerdings muss der Frequenzzähler dann auch 6 Tage am Stück durch laufen.

 

Die Verbesserung mit dem GPS System

Das GPS System verwendet Atomuhren für die Zeitermittlung in den Satelliten. Diese Zeiten werden auch übertragen und können zur Korrektur verwendet werden. Normale GPS Empfänger geben die Uhrzeit auf die 100tel Sekunde genau aus. Z.B. im RMC Datensatz. Dieser Datensatz wird aber typischerweise nur 1x pro Sekunde übertragen.

Wird die Uhrzeit des GPS Systems verwendet, können wir einen Abgleich der Taktfrequenz in ca. 1/10 der Zeit bekommen (nur die 1. Kommastelle wird berücksichtigt).
Sollen nach GPS Korrektur 5 Stellen fehlerfrei dargestellt werden ist ein Zeitvergleich mit uptime() und dem RMC Datensatz über 99.999 Sekunden * 2 notwendig. Das sind 2,3 Tage und somit umsetzbar.

> Die ersten 5 Stellen der Frequenz werden korrekt dargestellt nach 2,3 Tagen Abgleich mit dem GPS System.

Für die 6. Stelle sind 999.999 Sekunden *2 notwendig oder 23 Tage, das ist unrealistisch als einmaliger Abgleich, könnte aber im Hintergrund des Programms mitlaufen. Wenn der Frequenzzähler 23 Tage durchläuft kann dieser Abgleich stattfinden.

Mit einem wirklichen 10Hz GPS Empfänger kann die Abgleichzeit deutlich reduziert werden auf z.B. 11 Stunden (statt 2,3 Tage) für die 5. Stelle der Frequenzausgabe.

von Matthias Busse

Ein Gedanke zu „Den Arduino Quarz Takt genauer bestimmen mit einer RTC oder mit GPS

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.