Forum: Mikrocontroller und Digitale Elektronik Genauigkeit Atmega8


von Benjamin V. (benvei)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich versuche aktuell eine Uhrensteuerung mittels atmega8 zu realisieren.

Ziel der Software ist es, aktuell jede Minute den Ausgang 0 (LED), und 
den Ausgang 1 (Transistor, der die Uhren schaltet) zu aktivieren. Jede 
zweite Minute sollte das Relais auf Ausgang 2 aktiviert werden, um die 
Umpolung zu erzielen.

Die erste IF Schleife soll einen FF-Modus darstellen, sodass pro Sekunde 
die Uhren eine Minute vorgestellt werden, die nächste while Schleife ist 
die "normale Funktion". Das Relais wird 100ms vorher aktiviert, da das 
Relais langsamer schaltet als der Transistor.

Pro Tag weicht das ganze nun um etwa 8 Minuten ab, der ATMega8 wird per 
internen oszillator betrieben,

Ist die Abweichung vom internen Oszillator wirklich so groß? Oder gibt 
es Softwareseitig eine bessere Möglichkeit dies zu lösen?

Danke!

Gruß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Benjamin V. schrieb:
> Ist die Abweichung vom internen Oszillator wirklich so groß?

Genau so ist es.

von Bitflüsterer (Gast)


Lesenswert?

Bei solchen Fragen, bitte niemals in das Datenblatt schauen. Man könnte 
aus Versehen eine relevante Information erhalten.

von mir_fällt_keiner_ein (Gast)


Lesenswert?

Schau doch mal hier im Tutorial nach, da ist es sehr gut beschrieben...

von Pandur S. (jetztnicht)


Lesenswert?

Hilfeeee.... Was spricht gegen einen Uhrenquartz mit 32kHz fuer 30cents, 
der hat 10ppm/K. Oder allenfalls etwas Genaueres fuer etwas Mehr ?

von Hallo (Gast)


Lesenswert?

Benjamin V. schrieb:
> IF Schleife
http://if-schleife.de/

> Ist die Abweichung vom internen Oszillator wirklich so groß?
Ja, und dazu kommt noch, dass die Befehle zwischen den Delays auch noch 
Zeit brauchen.

von micha (Gast)


Lesenswert?

Benjamin V. schrieb:
> Pro Tag weicht das ganze nun um etwa 8 Minuten ab,

8/(24*60) ~ 0.56 %, ist doch ganz ordentlich für einen unkalibrierten 
Schwingkreis :-) Siehe 
http://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC

von Micha H. (mlh) Benutzerseite


Lesenswert?

Benjamin V. schrieb:
> Pro Tag weicht das ganze nun um etwa 8 Minuten ab, der ATMega8 wird per
> internen oszillator betrieben,

Der interne Oszillator ist kalibrierbar.

Für eine Uhr ist er trotzdem nicht geeignet.

von Peter R. (pnu)


Lesenswert?

Zwei wesentliche Gründe für die Ungenauigkeit:

Auch wenn sich der interne RC-Oszillator auf weniger als 1% 
justierenlässt, ist er mindestens um den Faktor 100 zu ungenau für eine 
Uhr.

Die Funktion delay wird durch die andren Programmtätigkeiten in der 
Länge verfälscht. Wenn z.B. 100ms vorbei sind, kommen anschließend 1 ms 
oder andernmal 0,5 ms dazu, weil ein Zeiger bewegt werden muss oder 
dergleichen. Für Uhren erzeugt delay zu ungenaue Zeiten.

Für die Uhr muss ein Timer laufen, der unabhängig von der übrigen 
Programmarbeit exakt alle (z.B.) 10ms im Interrupt ein Flag setzt.
Im Hauptprogramm wird dann dieses flag abgefragt, und die anfallenden 
Arbeiten können dann ausgeführt werden.

Sehr gut ist da der thread mit dem Thema "die genaue Zeit".
Es wäre auch ganz gut, unter dem Stichwort Uhrenprogramm einige Zeit 
aufzuwenden. Da gibt es viel zu lesen und zu lernen.

von Karl H. (kbuchegg)


Lesenswert?

Aber eigentlich.
Über einen ganzen Tag gesehen sind 8 Minuten eigentlich gar nicht so 
viel, wenn man den ganzen QUatsch mit internem Oszillator und delay 
berücksichtig. Da hätt ich eigentlich mehr erwartet.
Respekt.

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.