Forum: Mikrocontroller und Digitale Elektronik Zeitschaltuhr mit AVR


von Michael (Gast)


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

von Cabal2002 (Gast)


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

von Michael (Gast)


Lesenswert?

Danke für deine Antwort.
Werde mal ein bischen rumbasteln.

von Gerd (Gast)


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

von Cabal2002 (Gast)


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

von wolli_r (Gast)


Lesenswert?

Hi,
meine Empfehlung:
I2C-Uhren-IC z.B. PCF8583 separat mit einer Akkuzelle laufen lassen und 
an den AVR anbinden.
Gelegentlich mit einem DCF77 Modul synchronisieren.

mfg wolli_r (http://www.tec-shop.de)

von mikki merten (Gast)


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.

von Peter D. (peda)


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

von Siegfried (Gast)


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

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.