Zeitschaltuhr mit AVR

Gast #15196
Lesenswert?

Hallo Leute,
Gibt es bei AVR eine änliche interne Uhr wie bei der CControll?
Bei der CControll von Conrad konnte man ohne zusätzliche Bauteile,
die Uhr stellen z.B.:hour = 0 minute = 0 und dann z.B. um 5.30 Uhr zu 
einen Unterpunkt springen.(if minute = 30 and hour = 5 then goto Licht)
Ist sowas auch mit einem AVR möglich?

Im vorraus danke für eure Antworten.
MFG Michael
Gast #15197
Lesenswert?

Nein. Es sei denn du proggst das komplett selbst dann ja. Aber von 
vornherein nein. Ist halt nur ne RISC MCU mit nen bischen Flash, EEPROM 
und ein paar Ein/Ausgängen.

Grundsätzlich gilt aber: Alles ist möglich ;-)
Du müsstest dir halt erstmal eine Uhr programmieren die dann regelmässig 
überprüft ob zur aktuellen Zeit eine Event zugeordnet ist.

Viel Spass dabei.
Cabal
Gast #15199
Lesenswert?

Das mit der Schaltuhr ist etwas komplizierter, wenn sie auch nach Tagen 
noch genau gehen soll. Wenn man das über den eingebauten Timer 
programmiert, hat man eine schöne Uhr. Aber mit den handelsüblichen 
Quarzen und ohne weiteren Abgleich geht die ungefähr so genau wie eine 
PC-Uhr, nämlich gar nicht. Schon an einem Tag gibt es Abweichungen von 
ziemlich vielen Sekunden.
Da daran nicht der AVR schuld ist, sondern der Quarz, muss man da noch 
einiges machen, wenn man es genauer braucht. Also, besserer Quarz, Quarz 
abgleichen, oder mit DCF77 synchronisieren, oder ... oder ... oder. Je 
nachdem, wie lange man das Ding alleine lassen will.

Aber zum Nur-mal-rumspielen reicht es. So ne Rum-Spiel-Uhr gibt es auf 
meiner Webseite.

MfG
Gerd
Gast #15200
Lesenswert?

Naja also so ganz kann ich dir da nicht zustimmen. Ich habe mir vor 
Jahren eine Uhr gebastelt aus reinen CMOS ICs. Ganz simpel von 1MHz 6x 
durch 10 geteilt = 1Hz und das dann in eine Zählstufe mit passender 
Zählumfangsbegrenzung. Als das Teil fertig war eingestellt und zwar 
synchron zu meinem Funkwecker und den ganzen Tag laufen lassen. 
Ergebniss: Nach 24 Stunden keine sichtbare Abweichung. Also mein Fazit 
diese Lösung ist zumindest im Privatbereich akzeptabel. Natürlich machts 
mehr Spass sowas mit DCF77 zu basteln. ;-)

Es ist auf alle Fälle immer noch genauer wie die frühen Radiowecker die 
die Netzfrequenz als Taktgeber benutzt haben. Ich hatte mal so ein Teil 
wenns der Strom Nachts mal wieder besonders eilig hatte wurde man eine 
halbe Stunde zu früh geweckt.

Cabal
Gast #15202
Lesenswert?

Also mit einem Quarz viele Sekunden Abweichung an einem Tag halte ich 
für stark übertrieben.
Es sei den man hat irgendwelche 3. Wahl Quarze.
Die Fertigungstoleranzen üblicher Quarze sind doch
heute mit +-50 ppm und die Temperaturstabilität mit
+-30 ppm recht gut. Natürlich kann man noch einen Ab-
gleich mit einem C-Trimmer vornehmen, sofern ent-
sprechend genaue Messgeräte zur Verfügung stehen. Oder
man entscheidet sich gleich, sofern es die Störfelder
zulassen gleich für einen DCF77 Empfänger. Für normale Anwendungen 
dürfte ein normaler Quarz in Standard-
Industriequalität ausreichen. Die Ungenauigkeit der
PC-Uhr ist ja nicht auf die Ungenauigkeit des Takt-
oszillators zurückzuführen, sondern dieser wird ja
im normalen Timer-Interrupt 18,2 mal Sekunde aktualisiert. Leider wird 
dieser von etlichen Anwendungen und Treibern des öfteren blockiert. 
Daher liefert sie des öfteren nur "Schätzergebnisse". Die unabhängige 
RTC des PC die ja auch batteriegepuffert ist, wird ja im Normalfall nur 
beim booten des Rechners gelesen. Hier gibt es allerdings verschiedene 
Tools, die einen zyklischen Abgleich zwischen diesen beiden "Uhren" 
durchführen.
#15203
Lesenswert?

Also Quarze sind schon sehr konstant. Aber die Frequenz stimmt nicht 
immer. Man muß sie also abgleichen, am besten digital.

Man schreibt z.B.

.equ XTAL = 10000000

Daraus berechnet man dann im Kode die entsprechenden Timer-Reloadwerte 
und Korrekturwerte. Da der AVR-Assembler mit 32 Bit rechnet sind diese 
Werte ausreichend genau.

Dann läßt man das ganze mindestens 1 Monat laufen und stopt möglichst 
genau, wieviel die Uhr abweicht.

Dann berechnet man daraus die wirkliche Quarzfrequenz, z.B.

.equ XTAL = 10000516

Nun nur noch neu assemblieren und brennen und die Uhr läuft danach sehr 
genau (bei Zimmertemperatur).

Man kann ja nach genau einem Jahr die Frequenz noch mal korrigieren und 
hat dann auch die Jahreszeitlichen Temperaturschwankungen mit erfaßt.


Peter
Gast #15204
Lesenswert?

Das könnte man auch mit einer "Autokorrektur" machen. Mittels einer 
Synchronisierungstaste korrigiert man die Sekunden der AVR-Uhr in 
größeren Zeitabständen auf die volle Minute. Das Programm im AVR muss 
dann neben dem Rückstellen der Sekunden und ggf. aufrunden auf die 
nächste volle Minute einen Korrekturfaktor aus der Zeit seit dem letzten 
Korrekturvorgang und der Zeitdifferenz während dem Korrekturvorgang 
ermitteln. Dieser Korrekturfaktor kann dann zur Laufzeit eingebunden 
werden.

Siegfried

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren