WDT Kalibrieren

Hallo,

ich versuche im Moment ein Projekt nachzubauen, der Link zu diesem Projekt

Ich habe soweit alles zusammengebaut, Funktioniert auch, aber mit einem Fehler. Die Uhr hat eine andere Geschwindigkeit, soll heißen dass 1 Stunde an der Uhr in der Realität mehrer Minuten Abweichung hat.

Hochgeladen habe ich wie beschrieben mit 1 MHz (internal oscillator; BOD disabled)
Der Originalcode ist hier:

Gemäß der Beschreibung habe ich VCC und kalibriert, bei der Zeit weiss ich nicht wie ich das richtig kalibrieren soll. Steht nicht in der Beschreibung. Dort steht bei der Kalibrierung, wie ich die Uhrzeit einstelle.

In der WDT_Time.h, Zeile 13

#define DEFAULT_WDT_MICROSECOND 1000000UL // put your calibrated value here, should be within +/- 10000 of 1000000 microseconds

Nur, wie müsste ich das denn Richtig berechnen?

Ich habe daher eine Messung über 1 Stunde gemacht
Attiny Atomuhr
11:28:00 11:28:00
12:28:00 12:24:57

Mein Ansatz war der folgende, Atomuhrzeit in Sekunden umgerechnet (3417 Sekunden)

Als Basis habe ich 1000000 aus dem Code genommen

Also gemessene Atomuhrzeit / 1000000 * 3600

Das Ergebnis ist 1053555,750658472 ≈ 1053556

Wenn ich das nun in den Code eintrage und auf den Attiny hochlade, dann ist die Abweichung noch immer enorm.

Wie würde man so etwas richtig berechnen?

Offensichtlich wird in der Uhr wdt_auto_tune() benutzt.
Wenn da also noch eine so deutliche Abweichung ist, solltest du den 1MHz Oszillator kalibrieren.
Stichwort: OSCCAL

Übrigens:
Beide diese RC Oszillatoren sind stark Temperaturabhängig.
Ich rate zu einer Kompensation.

Hi

Habe Das nun nur überflogen - UHR per WDT??
Dir ist bewusst, daß der WDT eine Art Not-Anker ist und Es bei diesem Teil sowas von nicht auf Dessen Genauigkeit ankommt?
Außerdem ist der Timer temperatur-abhängig - auch keine sonderlich gute Voraussetzung.

Für Zeiten: Nimm eine Uhr ... RTC ... temperaturkompensiert würde sich anbieten.

MfG

postmaster-ino:
Habe Das nun nur überflogen - UHR per WDT??

Ich habe das nicht selber geschrieben, ich lerne noch daher suche ich mir hin und wieder fertige Projekte die nachbaue und versuche die Logik dahinter zu verstehen.

In dieser Uhr wird zusätzlich auch die Temperatur gemessen und soweit ich das verstanden habe ebenfalls mit einkalkuliert.

Ich werde erstmal versuchen den Oszillator zu kalibrieren. Sollte das nichts bringen, dann versuche ich mal etwas mehr zum Thema RTC zu lesen und doch die Software von grund auf neu zu schreiben

Hi

Klar, als 'Geht auch Anders' ist Das bestimmt keine schlechte Idee, in den Tiefen des Arduino rumzuschrauben.
Als Produktiv-Teil wäre mir Das aber zu 'barebone' :wink:
Man kann aber aufgrund der unterschiedlichen Geschwindigkeiten des WDT und des normalen Timer auf die Temperatur rückschließen, da die Timer in verschiedene Richtungen 'abhauen' - müsste auch beim ATtiny gewesen sein.

Viel Erfolg beim Kompensieren!

RTC: Suche nach DS3231 (die 1307 ist nicht zu empfehlen, da dort keine Temperatur-Kompensation enthalten ist)

MfG

postmaster-ino:
Klar, als 'Geht auch Anders' ist Das bestimmt keine schlechte Idee, in den Tiefen des Arduino rumzuschrauben.

Ja, Ideen, die irgendwie „anders“ sind, können interessant sein. Für Leute, die sich mehr an dem orientieren möchten, was „üblich“ ist, ist das IMO aber nichts.

postmaster-ino:
RTC: Suche nach DS3231 (die 1307 ist nicht zu empfehlen, da dort keine Temperatur-Kompensation enthalten ist)

Ach, naja ... ich bastle gerade mit einer 1307. Deren absolute Genauigkeit ist ziemlich wurscht. Mein Gebastel bekommt einfach zwei Knöpfe: Je einer für „eine Minute vor/zurück“. Da ich da sowieso täglich draufgucken und dabei mein Frühstück verstoffwechseln werde, ist gelegentliches Korrigieren nicht so aufwendig.

Wenn man nicht gerade ein Atomzeitfetischist ist, kann man sich auch eine lausige DS1307 zurechtbiegen.

Gruß

Gregor

postmaster-ino:
Man kann aber aufgrund der unterschiedlichen Geschwindigkeiten des WDT und des normalen Timer auf die Temperatur rückschließen, da die Timer in verschiedene Richtungen 'abhauen' - müsste auch beim ATtiny gewesen sein.

Das könnte man so tun.

Ist allerdings etwas abwegig, da der Tiny85 einen eingebauten Temperatur Sensor hat, welchen man ideal für solche Zwecke (Kompensation) verwenden kann, denn er sitzt direkt auf dem Die.

Hi

Ja - aber bei dem Preisunterschied muß Es halt keine 1307 sein.
... Du hast eine Uhr auf dem Klo? ...
In Zeiten von IOT gibt's ja Nix, was es nicht gibt, aber ob's unbedingt eine High-Score-Liste in diesem Raum bedarf?
scrn

So, genug Shit abgestormt ... immer diese Wortwitze :wink:

MfG

@combie
Stimmt, mit Dem hatte ich auch schon Mal geschwätzt ... ich war jung und brauchte Jemanden zum Quatschen. (in ASM - lange her)

postmaster-ino:
Ja - aber bei dem Preisunterschied muß Es halt keine 1307 sein.

Ja, okay, wenn man eh eine kaufen muss, dann gleich eine, die besser ist. Ich wusste beim Kauf vor ein paar Jahren noch nichts von deren „Qualitäten“ und will sie jetzt nur für eine Art Pflanzengießding einsetzen. Ob so eine Pflanze nun um 8 oder um fünf nach 8 gegossen wird, ist der egal. Mir erst recht :slight_smile:

postmaster-ino:
... Du hast eine Uhr auf dem Klo? ...

Noch nicht, aber mir fällt bestimmt noch etwas dazu ein.

Gruß

Gregor

Anhand Deiner Ausführung ...

Jo, ich war auch Mal jung und auch in meinem Sortimo wird sich wohl eine 1307 finden lassen :wink:
Aber es muß ja nicht Jeder meine Fehl(er/-Käufe) wiederholen :wink:

... da ist Es Dir also egal, daß die Pflanze seit 8 Uhr dürstet ... was wohl Greenpeace dazu sagen würde schnüff ... so, genug Schabernack :wink:

MfG

Nochmal kurzes Feedback.

Nach Kalibrierung, habe ich 1:30 Minuten Differenz nach 13 Stunden Laufzeit. Ich habe also wie empfohlen einen DS3231 bestellt.

Da dementsprechend die Software auch nicht mehr kompatibel ist, werde ich ein eigenes Projekt daraus machen.

Hi

Das Display ist doch bereits I²C, oder?
Dann den Zeit-Kram vom Original raus und 'nur' per I²C die Uhrzeit abfragen.

Einmalig einen Sketch drauf laden, mit Dem Du die Uhrzeit stellst (RTC-Beispiel), danach Deinen Uhren-Sketch.

MfG

Ja, das Display ist I²C. Dieses Jahr wird das sowieso nichts, dummerweisse haben wir diesen Monat noch ein paar Feiertage und die gehen für Familie drauf.

Ich mache das ganz in Ruhe, Stück für Stück.