www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeitschaltuhr mit AVR


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Cabal2002 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort.
Werde mal ein bischen rumbasteln.

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Cabal2002 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: wolli_r (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.