Autor |
|
|
|
BID = 401497
Lodentoni Neu hier
Beiträge: 35 Wohnort: Plessa
|
|
Hi, ich will eine Stoppuhr bauen
Ich benutze einen ATMega16. Um die Zeit zu messen gehe ich fogendermassen vor:
1 Versuch mit dem 8-Bit Timer
Beim vergleich mit einem Funkwecker stellte sich heraus dass die µC Uhr pro Tag entweder 2,5h vor oder 1h nach lief. Das war untragbar.
2.Versuch mit dem 16Bit Timer
Die besten ergebnisse habe ich erziehlt wenn ich den µC auf 8MHz laufen lasse. Den Timer habe ich dann mit einem Prescaler von 64 hochzählen lassen. Wenn der Timer einen bestimmten wert erreicht hat (genauer gesagt der TCNT1 hat den OCR1A erreicht), wurde ein interrupt ausgelöst. In diesem Interrupt wird nichts weiter getan als eine Variable zu erhöhen und den Timer wieder von vorn laufen zu lassen. (Das ganze gebe ich auf einem LCD aus)
CPU_f=8MHz
Prescaler=64
Timer_f=125000Hz
Overflowwert (OCR1A)=62500
Mit diesen Einstellungen würde der Timer alle 0,000008s eins hochzählen, bis er 62500 erreicht hat, dann wird ein Inerrupt ausgelöst.
Das bedeutet, das Interrupt wird alle 0,000008s*62500=0,5s ausgeführt und Inkrementiert eine Variable, die die Halben Sekunden zählt (bei mir "_TIMER_halfsec_mask" genannt).
So wollte ich die Zeit Messen (bzw. Zählen)
Leider funktionierte das nicht ausreichend genau. Die Uhr lief viel zu schnell.
Also habe ich den Timer einfach länger zählen lassen. (Ich experimentiere mit werten um ca. OCR1A=65035 herum)
Damit erreiche ich eine Messgenauigkeit von ca. 0,05% bei langzeitmessung (immr über mindestens 1h laufen lassen).
Bei kurzzeitmessung (<15min) ist die Messabweichung zwischen 0,05% und 0,5%.
Ich will aber eine Stoppuhr bauen die in 2Min. eine Abweichung von 10ms hat. Das entspricht einer Messabweichung von 0,008%. Wie kann ich das erreichen. Mit einem Externen Taktgeber? Warum ist der interne so ungenau?
MfG
Edit: Referenzobjekt mit der ich die Abweichung ermittle ist mein stets treuer Funkwecker.
[ Diese Nachricht wurde geändert von: Lodentoni am 24 Jan 2007 19:58 ] |
|
BID = 401503
bastler16 Schreibmaschine
Beiträge: 2140 Wohnort: Frankreich
|
|
Zitat :
|
Wie kann ich das erreichen. Mit einem Externen Taktgeber?
|
Ja? Irgendwo habe ich gelesen das der interne Taktgeber (Quarz?) ungenau sein soll, benutz doch mal einen externen. |
|
BID = 401510
Lodentoni Neu hier
Beiträge: 35 Wohnort: Plessa
|
Hm, also im Datenblatt steht das der Quarz an XTAL1 angeschlossen wird, in irgendwo is auch XTAL2 angeschlossen, ich kanns aber nicht erkennen.
Wie verschaltet man den solche schwingquarz? Wozu sind die Kondensatoren notwendig?
Kannst du mir das erklären, oder kann ich mir da irgendwo was anlesen?
|
BID = 401511
bastler16 Schreibmaschine
Beiträge: 2140 Wohnort: Frankreich
|
|
BID = 401526
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Die Kondensatoren sollten zwischen 12pF und 27pF liegen und bilden eine Grundlast für den Quartz. Wenn du einen externen Quartz nutzen willst, was unbedingt zu empfehlen ist, dann wird der an XTAL1 und XTAL2 angeschlossen.
Um die Taktquelle zu ändern, müssen die entsprechenden Fusebits CKSELn gemäß Datenblattangaben geändert werden.
Mit so einem Quartz hat man sehr hohe Genauigkeiten, angegeben für socleh Quartze sind auch Abweichungen, diese sind aber sehr klein, allerdings natürlich abhängig von Temperatur.
_________________
|
BID = 401540
Lodentoni Neu hier
Beiträge: 35 Wohnort: Plessa
|
Was isn der Unterschied zwischen einem Quartz und einem Quartzoszillator?
Qaurtzoszillatoren hätte ich noch da liegen, die haben zwei Anschlüsse mehr.
|
BID = 401542
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Im Quartzoszillator ist alles verbaut: Quartz mit Schwingkreis und Verstärker und einer Einheit, die ein sauberes Rechteck erzeugt. (z.b. mit TTL-Pegeln) Daher auch zwei anschlüsse mehr: Versorgungsspannung, GND und Taktausgang. Der letze Pin ist meist unbeschaltet (N.C.)
Sowas kannst du übrigens auch benutzen, indem du auf "External Clock Source" die Fuses programmierst.
Der Takt wird dann nur an einem XTAL-Pin angelegt, das entnehme bitte dem Datenblatt unter "System Clock".
_________________
|
BID = 401543
. Stammposter
Beiträge: 214 Wohnort: Auf der Alm
|
Zitat :
| Qaurtzoszillatoren hätte ich noch da liegen, die haben zwei Anschlüsse mehr. |
Die kann man notfalls abkneifen.
|
BID = 401545
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Ich bitte, die Schreibweise "Quartz" zu entschuldigen, Korrektweise müsste es "Quarz" heißen. -tz ist die engl. Schreibweise.
_________________
|
BID = 401582
Lodentoni Neu hier
Beiträge: 35 Wohnort: Plessa
|
Ok, sorry wegen der Schreibweise.
Also, ich habe folgende Quarzoszillatoren da:
http://www.reichelt.de/?SID=22LR@DN.....ET=16
Welcher Pin is da was? Es gibt leider kein Datenblatt zu den Bauelementen.
Kann ich bei diesen die Anschwingkondensatorn weglassen?
|
BID = 401584
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Zitat :
|
Quarzoszillator, C-Mos/TTL-kompatibel
Frequenz: 8,00 MHz
Frequenztoleranz: + - 100ppm
Temperaturbereich: 0 - 70° C
Speisespannung: 5 V
Ausgang für 2TTL oder 10 LS-Gatter
Ausgänge:
1 nicht beschaltet
7 Masse
8 Ausgang
14 Speisespannung |
Die Nummerierung der Pins ist genau wie bei DIL-ICs. Demnach sind auch die Pins eindeutig zuordbar .
Und ich sagte oben schon, dass die meisten, also dieser lt. den techn. Daten sowieso, TTL-Pegel ausgeben. Da müssen keine externen Kondensatoren ran, höchstens parallel zur Versorgungsspannung 100nF.
_________________
[ Diese Nachricht wurde geändert von: DonComi am 25 Jan 2007 0:05 ]
|
BID = 401618
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Die Kondensatoren sollten zwischen 12pF und 27pF liegen und bilden eine Grundlast für den Quartz. |
Nein, das ist ein kapazitiver Spannungsteiler.
Wenn man von einem Spannungsteiler nicht, wie man es gewohnt ist, ein Ende an Masse legt, sondern die Mitte, dann sind die Spannungen an den Enden um 180° phasenverschoben und das ist genau das, was man braucht, damit ein simpler Inverter schwingt, denn der bringt nochmal 180°.
Macht zusammen 360° bzw. 0°.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|
BID = 401765
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Ah, ok, wusste ich nicht. Aber eine naive Frage: eine "Last" bilden die doch auch, oder nicht?
_________________
|
BID = 401824
Brizz Stammposter
Beiträge: 386 Wohnort: Rheine
|
Ich vermute dass es nicht am Quarz liegt, die sind erfahrungsgemäß relativ genau, d.h. auch bei den preiswerteren Typen liegt die Abweichung bei weniger als 1 min pro Monat.
Wie hast Du den Timer programmiert?
Um ein Zeitnormal zu erzeugen, betreibt man den Timer im Autoreload-Modus, d.h. der Timer wird nicht in der Interrupt-Routine nachgeladen, sondern der Timer wird mit Erreichen eines vorgegebenen Wertes automatisch neu geladen und erzeugt einen Interrupt.
In der Interrupt Routine wird dann der Interrupt quittiert und und ein Speicher inkrementiert.
Ich habe ein Beispiel für den 8032 angehängt.
|
BID = 401842
stephan84 Stammposter
Beiträge: 350
|
Er hatte doch gar keinen Quarz, oder hab ich jetzt was falsch verstanden?
Und der interne RC-Oszillator ist in der Tat alles andere als genau.
|