Forum: Mikrocontroller und Digitale Elektronik [STM32] RTC über USB kalibrieren


von Mampf F. (mampf) Benutzerseite


Lesenswert?

Guten Morgen :)

ich hab ein Projekt mit dem STM32F103 und die RTC läuft zu schnell / zu 
langsam.

Mir kam die Idee, die RTC über USB zu kalibrieren. Ich würde die Zeit am 
PC mit der RTC des STM32 vergleichen und das RTC-Prescaler Register 
abgleichen.

Per sukzessiver Approximation bräuchte ich da nur ein paar Minuten, um 
den Prescaler bestmöglichst anzupassen.

Wenn ich mich nicht verrechnet habe, könnte man ca 0,003% Genauigkeit 
hinbekommen, was dann pro Stunde etwa 10 Sekunden Abweichung wären.

Immer noch viel ...

Gibt es bessere Methoden, wie z.B. ähnlich dem PhasenAkku bei einer DDS, 
die einen langen (>=32Bit) Festpunkt-Akkumulator verwenden? Man könnte 
dann das eigentliche Prescaler-Register kontinuierlich anpassen und so 
im Mittel die Genauigkeit verbessern?

Weiß da zufällig jemand irgendwas fertiges?

Vielen Dank!
Mampf

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Bis gestern wurden in einem anderen Thread mehrere Möglichkeiten durch 
diskutiert. Ich glaube im Titel stand "Kalibrieren". Suche mal danach.

Ich habe inzwischen drei Uhren mit Blue-Pill Boards gebaut. Alle drei 
laufen so genau, wie man es von anderen Consumer Uhren gewöhnt ist.

Der Trick ist: Du musst die beiden Pins entfernen, die zum Uhrenquarz 
führen. Jede unnötige Last (und dazu zählen auch 2cm Leiterbahn, die in 
der Luft enden) führt dazu, dass der Oszillator instabil läuft.

> pro Stunde etwa 10 Sekunden Abweichung

Out of the box kannst du auf 30 Sekunden Abweichung pro Monat hoffen. 
Auf meine drei Uhren trifft dies zu. Bei mehr als 2 Minuten pro Monat 
hast du einen Hardwarefehler.

Falls Dir die 30 Sekunden pro Monat noch zu viel Abweichung sind, musst 
du die Spannungsversorgung und die Temperatur konstant halten, sowie 
einen Korrekturwert ermitteln. Bei nicht konstanter Temperatur lohnt 
sich die Ermittlung des Korrekturwertes nicht.

Hier habe ich "meine" Methode zur Ermittlung des Korrekturwertes 
beschrieben: http://stefanfrings.de/stm32/index.html#rtc Sie ist 
Zeitaufwändig, benötigt dafür aber keinerlei zusätzliches Equipment.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Stefan U. schrieb:
> Hier habe ich "meine" Methode zur Ermittlung des Korrekturwertes
> beschrieben: http://stefanfrings.de/stm32/index.html#rtc Sie ist
> Zeitaufwändig, benötigt dafür aber keinerlei zusätzliches Equipment.

Super, vielen Dank! :)

von Jan (Gast)


Lesenswert?

Mampf F. schrieb:
> ich hab ein Projekt mit dem STM32F103 und die RTC läuft zu schnell / zu
> langsam.

Mal eine ganz dumme Frage.
Benutzt du keine 32 kHz Quarz?

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Jan schrieb:
> Mampf F. schrieb:
>> ich hab ein Projekt mit dem STM32F103 und die RTC läuft zu schnell / zu
>> langsam.
>
> Mal eine ganz dumme Frage.
> Benutzt du keine 32 kHz Quarz?

Doch doch klar :)

Ich nutze auch Batterie-Backup per CR2032 Zelle :)

von Jan (Gast)


Lesenswert?

Mampf F. schrieb:
> Doch doch klar :)
>
> Ich nutze auch Batterie-Backup per CR2032 Zelle :)

Wie kann das Teil denn so abweichen? Da ist doch was im STM nicht ok.
Ich selbst benutze eine externe RTC mit Quarz und Batterie in 
Kombination mit einem ATmega. Solche Abweichungen habe ich noch nie 
gesehen.

von Stefan F. (Gast)


Lesenswert?

> Da ist doch was im STM nicht ok.

Sage ich doch!

von Stefan F. (Gast)


Lesenswert?

Das war der Thread, wo Methoden zur Kalibrierung besprochen wurfen:
Beitrag "RTC mit geringem Zeitdrift"

von Jan (Gast)


Lesenswert?

Hab hier aus China ein Datalogging Shield. Die RTC läuft sauber und wird 
über I2C angesteuert. Wäre so etwas für deine Applikation nicht auch 
denkbar?

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Jan schrieb:
> Hab hier aus China ein Datalogging Shield. Die RTC läuft sauber
> und wird
> über I2C angesteuert. Wäre so etwas für deine Applikation nicht auch
> denkbar?

Nein leider nicht ... Die Uhr ist fertig und der Kunde (=Freundin^^) 
beschwert sich, dass sie zu ungenau geht xD

Wäre ja im Prinzip kein großes Problem, aber am Einsatzort fehlen ihr 
die Root-Rechte, um einen Cron-Job einzurichten, der die Uhr hin und 
wieder mal neu stellt. Per USB könnte sie das ja alles ...

Danke für euren Input!

Ist viel wert, wenn es Leute mit praktischer Erfahrung gibt, die konkret 
sagen können, welche Genauigkeit man zu erwarten hat und was auf einen 
Hardware-Fehler schließen könnte :)

: Bearbeitet durch User
von Benjamin S. (recycler)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

bei mir lief die Uhr auch zu schnell. Der Fehler ist klein und fies:
Es ist standardmässig der 40khz LSI RC ausgewählt. Nachumschalten auf 
den externen 32khz Quarz läufts einwandfrei und ohne Drift.

Dafür muss nur die LSE Clock verwendet werden.

von genau! (Gast)


Lesenswert?

Stefan U. schrieb:

> Falls Dir die 30 Sekunden pro Monat noch zu viel Abweichung sind, musst
> du die Spannungsversorgung und die Temperatur konstant halten, sowie
> einen Korrekturwert ermitteln. Bei nicht konstanter Temperatur lohnt
> sich die Ermittlung des Korrekturwertes nicht.

Bei nicht konstanter Temperatur kann man die Temperatur z.B. 1x pro 
Minute messen (STM32 int. Temp.) und den Korrekturwert berechnen..

von --- (Gast)


Lesenswert?

Meine Quarzarmbanduhr schafft 2 sec pro 1/2 Jahr.
Dann ist wieder Winterzeit angesagt und Uhr stellen...

Also scheint es schon grundsätzlich recht genaue
32768 Hz Quarze zu geben.

Vermutlich werden die guten alle von den Uhrenherstellern
weggekauft und der klägliche Rest wird unters Volk geworfen.

von Route_66 H. (route_66)


Lesenswert?

--- schrieb:
> Meine Quarzarmbanduhr schafft 2 sec pro 1/2 Jahr.
> Dann ist wieder Winterzeit angesagt und Uhr stellen...
>
> Also scheint es schon grundsätzlich recht genaue
> 32768 Hz Quarze zu geben.

Quarze in einem Thermostat sind eine Größenordnung genauer als in freier 
Luft. Bei Armbanduhren ist der Mensch der Thermostat. Für diese 
Temperatur werden die Quarze gefertigt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.