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
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.
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! :)
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?
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 :)
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.
Das war der Thread, wo Methoden zur Kalibrierung besprochen wurfen: Beitrag "RTC mit geringem Zeitdrift"
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?
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
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.
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..
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.
--- 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.