PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Quarzuhr realisieren?



Robin1508
12.12.2007, 20:31
Hi, ich hab vor mir nen Wecker zu bauen. Meine Theorie ist, je nach Quarz (z.B. 16mhz beim ATmega32) mit einem Timer zu arbeiten?
Aber wie genau funktioniert dass, müsste ich ja irgentwie auf Sekunden oder so umrechnen? Oder wie realisiert man soetwas?

Gruß Robin

PICVB
12.12.2007, 20:43
Nabend,
also ich bin an der Arbeit gerade dran ne Uhr mit nem PIC zu bauen. Ich verwende einen Quarz mit 4,096MHz. Mit nem Timer mache ich ne Zeit von 62,5ms und das ganze mache ich 16 mal. Nach einem längeren testlauf habe ich festgestellt das die Uhr in 4 Stunden 1 Sekunde nachgeht und rechen deswegen alle 4 Stunden eine Sekunde drauf. Sollte mit einem AVR ja auch irgendwie so ähnlich funktionieren.

Gruß Carsten

elayne
12.12.2007, 20:56
hey,
nimm doch ein 4,194304MHz Quarz und teil das ganze durch 2²². Dann müsstest du genau auf 1Hz kommen, sprich eine sekunde pro takt.

Gruß
elayne

Robin1508
12.12.2007, 21:04
wie kommt es eigentlich dass die selbstbau-uhren schon nach 4 stunden um eine Sekunde falsch gehn? Ist der Quarz zu ungenau? Was machen gekaufte Quarzuhren anders?

Gruß

PICVB
12.12.2007, 21:15
hey,
Wir (Mein Ausbilder und Ich) vermuten das es am Quarz liegt.
Was die andrs machen weiß ich net. Vielleicht machen die auch eine automatische Korerektur oder die benutzen vielleicht teure Quarze.
Ist halt jetzt nur ma so eine Vermutung.

shaun
12.12.2007, 23:29
Nein, besonders billige Quarze, und zwar 32,768kHz Uhrenquarze in einer geeigneten Oszillatorschaltung (die den Quarz möglichst wenig und konstant belastet und eine definierte Lastkapazität bietet). Einige AVRs haben diese Real Time Clock-Funktion sogar schon eingebaut, ich nehme ansonsten häufig einen PCF8583 am I2C-Bus. Allerdings gibt's auch da wirkliche Genauigkeit nur mit Trimmer und Abgleich. Meine "Berlin-Uhr" hat es auf knapp 2 Minuten im Jahr gebracht, das sind 4ppm, der Quarz war ohne Abgleich IMHO mit 30ppm angegeben.

izaseba
12.12.2007, 23:36
(z.B. 16mhz beim ATmega32)

Ich verwende einen Quarz mit 4,096MHz

nimm doch ein 4,194304MHz Quarz und teil das ganze durch 2²².

Ne,Ne,
schaut Euch diese Appnote an:
http://atmel.com/dyn/resources/prod_documents/doc1259.pdf

Ich habe mehrere Uhren damit am laufen und die Abweichung ist sehr minimal.

Gruß Sebastian

Johnes
13.12.2007, 13:34
Wie "izaseba" schon schreibt, ist die einfachste Methode einen Uhrenquarz mit 32768 Hz zu nehmen. Ich habe meinen Mega32 der meine Heizung steuert auch damit laufen.

Abweichung pro Monat ist keine Sekunde! (Obwohl ich mal denke das der Fehler an der Referenz liegt!)

Der Timer im M32 wird dann nicht vom Quarz der CPU gesteuert sondern von dem Externen an TOSC1/2

Ich mit einem Teiler von 128, hat man dann einen Overflow alle Sekunde. Ich benutze den Timer zusätzlich noch als Refresher für mein Display, sowie für meine Datenübertragung. Habe daher alle 125ms einen Overflow.

Um den Interrupt nicht zu lange zu belegen, setze ich in der Routine nur Flags und werte diese im normalen Programmzyklus aus.

MfG