Hallo,
ich verwende für eine Uhr einen Amega644 und einen 16MHz Quarz. Die Uhr
synchronisiert Nachts auf ein DCF77 Signal. Soweit alles prima nur im
laufe des Tages hinkt die Uhr immer weiter der echten Zeit hinterher.
Ich habe zwei Funkuhren (G-Shock und Haushaltsfunkuhr) die beide sehr
synchron laufen und abends auch noch die selbe Uhrzeit anzeigen. Nur
meine Uhr hängt nach 18h etwa 12s nach. Leider habe ich gerade kein Oszi
zur Hand. Aber es scheint mir dennoch etwas viel für einen Quarz bei
Raumtemperatur zu sein.
12s/ 18h * 3600s/h = 185ppm
Verbaut ist dieser Quarz hier:
http://www.reichelt.de/Quarze/16-0000-HC49-SMD/3/index.html?;ACTION=3;LA=2;ARTICLE=72515;GROUPID=3173;artnr=16%2C0000-HC49-SMD;SID=13UOB5TH8AAAIAAHvtQBIeb0e60c4d26bdb41d7ac7b6f92ef7f3a
Zu den Quarzanschlüssen sind je 22pF (mein Standartwert) parallel. Im
Tutorial steht es müsse mehr sein, kann die große Abweichung daraus
resultieren?
Hier nochmal die paar Zeile Code für Timer und Uhr:
Ingo schrieb:> Im> Tutorial steht es müsse mehr sein, kann die große Abweichung daraus> resultieren?
Mit noch mehr Kapazität sinkt die Quarzfrequenz noch weiter.
Nimm dir einen guten Zähler und miss die Frequenz. Notfalls muss du die
Kondensatoren verkleinern - oder einen fertigen und besseren Oszillator
nehmen.
Ingo schrieb:> Nur> meine Uhr hängt nach 18h etwa 12s nach.
Das hatte ich auch mal, der Quarz eines Billighändlers fürs Hobby hatte
saftige 690ppm Abweichung.
Es kann auch sein, daß man in der Software Timernachladung für den
autonomen Betrieb ohne Quarz nicht sehr präzise vor ging, und mal einen
Prozessortakt zu viel oder zu wenig zählt.
Abhilfe würde ich heute per Software machen, die ich per Tastenbedienung
kalibrierbar mache, da brauchte man aber ein EEPROM für
Parameterspeicherung, oder in zweiter Linie die Quarzschaltung mit
Trimmkondensator in Hardware.
> Das hatte ich auch mal, der Quarz eines Billighändlers fürs Hobby hatte> saftige 690ppm Abweichung
Das is übel
> Es kann auch sein, daß man in der Software Timernachladung für den> autonomen Betrieb ohne Quarz nicht sehr präzise vor ging, und mal einen> Prozessortakt zu viel oder zu wenig zählt.
???
> Abhilfe würde ich heute per Software machen, die ich per Tastenbedienung> kalibrierbar mache, da brauchte man aber ein EEPROM für> Parameterspeicherung, oder in zweiter Linie die Quarzschaltung mit> Trimmkondensator in Hardware.
Naja, is grundsätzlich ja möglich, aber mich wundert viel mehr die doch
recht hohe Abweichung.
Den ganzen Code werde ich nicht posten, is Quatsch da zu viel. Die
Zeilen die sich mit dem Timing beschäftigen habe ich gepostet, aufm
Oszi, als ich das Programm geschrieben habe, habe ich den Pulstrigger
auf 500us gesetzt und zu Beginn der ISR einen Pin High und am Ende
wieder low gesetzt. An die 500us bin ich nicht herangekommen, dass heißt
ich habe noch min 100% Zeitreserve. Also kann's daran nicht liegen.
Timer is richtig initialisiert, also muss es tatsächlich eine zu große
Abweichung im Quarztakt sein.
Ingo
>Den ganzen Code werde ich nicht posten, is Quatsch da zu viel.
Ganz wie Du wünschst.
>...also muss es tatsächlich eine zu große Abweichung im Quarztakt sein.
Ach ja?
Na dann: Viel Erfolg.
Ingo schrieb:>> Abhilfe würde ich heute per Software machen, die ich per Tastenbedienung>> kalibrierbar mache, da brauchte man aber ein EEPROM für>> Parameterspeicherung, oder in zweiter Linie die Quarzschaltung mit>> Trimmkondensator in Hardware.> Naja, is grundsätzlich ja möglich, aber mich wundert viel mehr die doch> recht hohe Abweichung.
Gleich deine Sodtware ab und gut ists. 180ppm sind jetzt nicht was,
worüber ich mir groß Gedanken machen würde. Hauptsache sie sind konstant
AVR - Die genaue Sekunde / RTC
Hmm schrieb:>>Den ganzen Code werde ich nicht posten, is Quatsch da zu viel.> Ganz wie Du wünschst.>>>...also muss es tatsächlich eine zu große Abweichung im Quarztakt sein.> Ach ja?>> Na dann: Viel Erfolg.
Nenn mir einen Fehler, der jetzt noch auftauchen kann bzw. noch im Code
verborgen liegen könnte, wenn nicht an den Stellen an den die Uhr
gestellt wird?
Ingo
...und von einem 24ct-Quarz (beim Endverkäufer Reichelt) erwartest Du
"Quarzgenauigkeit" ???
Bei einem Quarz mit gezielt hergestelltem Temperaturgang kann man etwa +
- 20ppm erwarten, also etwa + - 2 sec je Tag. Der braucht aber mehr
Sorgfalt bei der Herstellng als ein "Computerquarz"
Wenn Du wirklich Genauigkeit im 20-ppm-Bereich erwartest, musst Du erst
einmal schauen, dass Du möglichst Quarze erwischst, die für
Frequenzaufbereitungen von Sendern/Empfängern vorgesehen sind. Die sind
in Tunern von TV-Geräten, Videorecordern usw. am ehesten als
4,00000MHz-Quarze zu finden.
Bei denen wird die Herstellung sorgfältiger gemacht als bei
Computerquarzen, bei denen es auf 100 ppm mehr oder weniger nicht
ankommt.
Bei der Verwendung für eine Uhr sollte man dann auf Trimmer verzichten
und Festkondensatoren verwenden. Der Frequenzfehler durch Toleranz der
Kondensatoren wird per Software ausgeglichen. Im Extremfall kann dann
sogar eine temperaturabhängige Korrektur durchgeführt werden, dann kommt
man auf eine halbe Sekunde pro Tag oder besser.
Für wirklich stabile Frequenz ist die Oszillatorschaltung eines
Kontrollers nicht ausgelegt. Für Stabilität im 10ppm-Bereich sollte es
schon ein gesondert aufgebauter Oszillator sein.
Ingo schrieb:>> Es kann auch sein, daß man in der Software Timernachladung für den>> autonomen Betrieb ohne Quarz nicht sehr präzise vor ging, und mal einen>> Prozessortakt zu viel oder zu wenig zählt.> ???
Na ja, ich habe hier Literatur zum 8051. Da sind Standard-Routinen für
die Timernachladung on-the-fly im 16-bit-Mode beschrieben. Im Buch war
es falsch, daß man da zum Low-Byte 3 hinzu addiert, man muß nur 2 hinzu
addieren, das fand ich mal selbst heraus.
Später an anderen Beispielen fand ich heraus, daß jemand den Timer in
jedem Interrupt komplett stoppt, und 7 vom Reloadwert subtrahiert. Das
läuft besser.
Ich hätte jetzt nicht solche Abweichungen erwartet, die etwa dem 5
fachen der Datenblattangaben entsprechen. Ich werde bei der nächsten Uhr
auf jeden fall einen externen Oszillator verwenden mit noch mehr
Genauigkeit.
Ingo schrieb:> Ich hätte jetzt nicht solche Abweichungen erwartet, die etwa dem 5> fachen der Datenblattangaben entsprechen. Ich werde bei der nächsten Uhr> auf jeden fall einen externen Oszillator verwenden mit noch mehr> Genauigkeit.
Wie kommst du jetzt auf diesen Nonsens?
Verwechsele mal nicht, was ich vom ollen 8051 hier schrieb.
Der Quarz an deinem µC sollte auch einigermaßen stabil laufen. Die
Dinger sind aber nie so präzise wie eine Uhrenschaltung.
Womit sind Quarze in der Toleranz angegeben? Z.B. 100ppm? Das macht
schon 8,6 Sekunden am Tag, wenn es der schlechteste ist.
Peter R. schrieb:> ...und von einem 24ct-Quarz (beim Endverkäufer Reichelt) erwartest Du> "Quarzgenauigkeit" ???
Selbstverständlich: der Baustein ist mit +/- 30 ppm angegeben. Da ich
bis jetzt keine so große Abweichungen wie der TO hatte, gehe ich von
einem anderen Problem aus.
Wenn man es mit der DCF-Uhr ganz gut haben möchte, daß sie auch ohne
Funksignal genau weiter läuft, da kommt man um einen teuereren
Oszillator mit unter 1ppm nicht herum. Ich habe hier in meiner
Schrottsammlung diverse, die auch noch ein Trimmpoti haben. Müssen sehr
teuer gewesen sein, und zeigen am Frequenzmesser auch nach längerer Zeit
immer noch mehr als 4 Stellen genau an. Den Frequenzmesser muß ich eine
halbe Stunde vorwärmen, der hat einen Quarzofen. Sowohl nach dem
Einschalten des Bauteils, als auch nach einer Stunde. Keine
Temperaturdrift, nichts.
Ebend, +\- 30ppm, unter diesen Bedingungen habe ich den ausgewählt. Aber
ich denke es ist nicht möglich den Fehler einzugrenzen, solange die
tatsächliche Quarzfrequenz nicht bekannt ist. Das merkwürdige ist, dass
manche sagen passt doch, is n Billigquarz, während die anderen sagen
viel zu ungenau... Ich bin etwas verwirrt.
Davis schrieb:> der Baustein ist mit +/- 30 ppm angegeben.
Die Abgleichtoleranz eines Quarzes (z.B. +/- 30 ppm) gilt nur bei der
spezifizierten Lastkapazität, z.B 15 +/- 0 pF.
Beim Betrieb mit abweichender Lastkapazität ist die Frequenzabweichung
typisch 10...30 ppm/pF.
Beste Grüsse
Thomas
Ingo schrieb:> Ebend, +\- 30ppm, unter diesen Bedingungen habe ich den ausgewählt.
Mach dir keinen Kopf da drum, wenn die Uhr am Tag mal ohne Funksignal 3
Sekunden falsch gehen könnte. Wenn es Hobby ist, und keine
professionelle Anwendung.
Thomas R. schrieb:> Davis schrieb:>> der Baustein ist mit +/- 30 ppm angegeben.>> Die Abgleichtoleranz eines Quarzes (z.B. +/- 30 ppm) gilt nur bei der> spezifizierten Lastkapazität, z.B 15 +/- 0 pF.> Beim Betrieb mit abweichender Lastkapazität ist die Frequenzabweichung> typisch 10...30 ppm/pF.>> Beste Grüsse> Thomas
Nachtrag:
Betreibt man also einen Quarz, der für 15 pF Lastkapazität gefertigt
wurde mit 30 pF, so kann er gerne 450 ppm daneben liegen und ist
trotzdem in seine Spezifikation.
Thomas R. schrieb:> ... Abgleichtoleranz eines Quarzes (z.B. +/- 30 ppm) gilt nur bei der> spezifizierten Lastkapazität, z.B 15 +/- 0 pF.
Es spricht doch nichts dagegen diese Kapazität zu nehmen. W. i. d. P?
Die meisten handelsüblichen Funkuhren syncronisieren sich jede volle
Stunde mit dem DCF-Signal. Dadurch bleibt die Abweich klein trotz der
preiswerten 32Khz Uhrenquarze.
MfG Willi
Du hast die Kapazitive Last zu tief angesetzt. Am besten schaust du dir
mal den Artikel hier an:
http://www.mikrocontroller.net/articles/Quarze_und_AVR
Du müsstest jeweils einen Kondensator mit ~54 pF verwenden, dann sollte
der Quarz auch innerhalb seiner Spezifikation von +/- 80 ppm liegen.
Thomas R. schrieb:> Betreibt man also einen Quarz, der für 15 pF Lastkapazität gefertigt> wurde mit 30 pF, so kann er gerne 450 ppm daneben liegen und ist> trotzdem in seine Spezifikation.
Das ist wiederum interessant, und ein Hinweis darauf, daß Quarze in
Standard-µC-Schaltungen daneben liegen können.
Wahrscheinlich ist der Quarz für eine kleinere Lastkapazität
spezifiziert, als er betrieben wird. Es nützt dann nichts, den gegen
einen Quarz mit gleiche Lastkapazität zu tauschen.
Ändere lieber deine beiden Fußpunktkondensatoren von 22 pF auf z.B.
12..15 pF und gucke dann mal, um wiviel die Uhr schneller läuft.
Thomas R. schrieb:> Ändere lieber deine beiden Fußpunktkondensatoren von 22 pF auf z.B.> 12..15 pF und gucke dann mal, um wiviel die Uhr schneller läuft.
Oder füge gleich einen Trimmer in der Größenordnung ein.
Hmm, der eine sagt mehr Kapazität, wie im Tutorial, der andere sagt
weniger. Ich kann's jetzt leider nicht testen, bin auf'm Sofa und nicht
im Labor :( Ich werde erstmal prüfen auf welcher Frequenz der Quarz
schwingt, dann werde ich mal mit den Lastkapazitäten spielen. Mal größer
mal kleiner ;)
Ingo schrieb:> Nur> meine Uhr hängt nach 18h etwa 12s nach.
Wenn deine Uhr nachgeht, ist die Frequenz zu niedrig und damit sind die
Fußpunktkondensatoren zu groß.
==========> verkleinern! ;-)
Thomas R. schrieb:> Ingo schrieb:>> Nur>> meine Uhr hängt nach 18h etwa 12s nach.>> Wenn deine Uhr nachgeht, ist die Frequenz zu niedrig und damit sind die> Fußpunktkondensatoren zu groß.> ==========> verkleinern! ;-)
Nö liegt bestrimmt an der Kapazität des Steckbretts.
Gruß Anja
Muss dich leider enttäuschen Anja, is ne Leiterplatte. Hatte ich nicht
erwähnt, aber Streckbett wäre denkbar gewesen. Ich kann morgen ja mal n
paar Fotos hochladen wenn ich wieder am Rechner bin. Mit iPhone geht das
immer schlecht, reiche ich aber gern nach ;)
Ingo schrieb:> meine Uhr hängt nach 18h etwa 12s nach.
Setze mal die Fuses auf Full-Swing-Mode, dann ist der Quarz deutlich
stabiler.
Der Low-Power-Mode ist extrem kritisch, da muß die VCC glatt wie ein
Baby-Popo sein (<1mV Ripple).
Peter
Ingo schrieb:> Nur> meine Uhr hängt nach 18h etwa 12s nach.
hier Mal ein Beispiel was man vor über 200 Jahren ohne Quarzofen und
ähnlichen Schnickschnack erreicht hat:
Die H4 zeigte auf der 81-tägigen Fahrt nach Jamaika und zurück nur eine
Gangabweichung von 5 Sekunden
(http://de.wikipedia.org/wiki/John_Harrison_%28Uhrmacher%29)
Mag sein das ich falsch bin aber so ein ähnliches Problem hatte ich
schon. Die Initialisierung von OCR0A kommt mir spanisch vor. Vom
errechneten Wert muß man eins abziehen im CTC Mode.
Bei mir gehts auf die Sekunde genau in 24h. Nicht abgeglichen, 16MHz
XTAL, Mega2560. Das sieht so aus für Timer3:
> Rechne mal lieber selbst.
Mea culpa.
> Oder sieh im ersten Post im Kommentar nach:> 16000000/(64*250)s = 1000/s => 1ms
Du hast es besser dargestellt als im Original. Danke.
Kommentare sind Kommentare. Wer nicht selber nachrechnet glaubt nur das
was der Kommentator als richtig vermutet.
1kHz als Zeitbasis finde ich sportlich.
> Achso, die ISR ist nicht länger als das Aufrufinterval, es gehen also> keinen Interrupts verloren...
Ein frommer Wunsch.
Man bedenke das hier knapp 16000 Takte/ms geschehen könnten, wenn man
den Zeitschlitz 100% ausreizten würde, da sind schon mittelschwere
Berechnungen möglich :)
Ingo
Wenn ich das nicht falsch im Kopf habe, müsste der Atmega644 nen
Anschluss für nen 2. Quarz haben. Dort könntest Du nen 32KHz-Uhrenquarz
ranhängen und damit Deinen Uhrentimer betreiben.
Die haben auch Toleranzen von so +-20ppm, wegen der deutlich niedrigeren
Frequenz sind das aber deutlich weniger Hz.
Hallo Gerd, ja wäre möglich, aber leider is die Platine schon fertig und
irgendwas noch anfrickeln will ich auch nicht. Kotzt mich schon an, dass
ich die Platine zusätzlich noch Erden musste damit ich vernünftigen
Empfang habe :(. Also geht von der Platine eine dünne Leitung mit
kleiner Krokoklemme drann zum SchKo einer freien Steckdose...
Gerd E. schrieb:> Wenn ich das nicht falsch im Kopf habe, müsste der Atmega644 nen> Anschluss für nen 2. Quarz haben. Dort könntest Du nen 32KHz-Uhrenquarz> ranhängen und damit Deinen Uhrentimer betreiben.>> Die haben auch Toleranzen von so +-20ppm, wegen der deutlich niedrigeren> Frequenz sind das aber deutlich weniger Hz.
Ergibt sich durch die Abweichung um "deutlich weniger Hz" eine höhere
Ganggenauigkeit bei der gleichen Toleranz von +/-20 ppm?
Hi
> die 22pF am Quarz sind, zugegeben, etwas schlecht positioniert...
Die ganze Anbindung des Quarzes ist Sch... . Rate mal, weshalb direkt
neben den XTAL-Anschlüssen ein GND-Pin liegt?
MfG Spess
Spess53 schrieb:> Die ganze Anbindung des Quarzes ist Sch... .
So schlimm ist das nicht, da habe ich schon schlimmeres gesehen.
Der Hauptstrom fließt durch die beiden Kondensatoren und den Quarz, d.h.
dieser Pfad sollte möglichst kurz sein.
Peter
P.S.:
Haben die Fusebits denn was gebracht?
Fritz schrieb:> Das Layout könnte besser sein, erklärt aber nicht die Gangabweichung der> Uhr in diesem Ausmaß.
Sehe ich auch so. 16MHz und 1cm Abstand vom µC sind normalerweise kein
so großes Problem. Den 18MHz-Quarz am 80C517A platzierte man auch nicht
ohne Luft direkt am µC-Gehäuse. Habe da einige Boards, wo es
abstandsmäßig auch nicht besser ist, als bei Ingo.
An Stelle des TO würde ich noch mal den Timer simulieren, ob es nicht
tatsächlich irgendwo einen Takt zu viel oder zu wenig gibt, oder auch
vollständig ausgefallene Timerinterrupts, wenn irgendwo ein anderer
länger dauernder höher priorisierter Interrupt hinein spielt. Evtl. auch
die Bauteile Quarz und Kapazitäten mal austauschen.
Möglicherweise hat auch einer der beiden Fußpunktkondensatoren keine
Verbindung, der Oszillator kann dann mit der parasitären Kapazität immer
noch laufen.
Allerdings kenne ich den Timer des verwendeten µC nicht, ob er per
Autoreload automatisch nach lädt, oder ob noch ein Fehler drin steckt,
wenn man ihn manuell in der Interruptroutine nach laden muß.
So wie es im Code oben aus sieht, lädt der Timer aber von selbst den
korrekten Wert nach.
Timer: Ich hab da schon mal bei früheren Kollegen einiges schlimmes
gesehen, die z.B. am Prototypen den Nachladewert mit dem Oszi durch
Probieren ermittelten, weil sie von einer korrekten Nachladefunktion
noch nie was hörten, weil sie dem Assembler nicht mächtig waren, denn
beim 8051 beispielsweise klappt die absolut exakte Nachladung des Timer
0 in Hochsprache nicht so dolle. Auch wenn das sonst gute Programmierer
waren. Erst der 8052 hat einen zusätzlichen Timer 2 mit
16-bit-Autoreload, da mußte man den Assembler nicht mehr quälen. Man
weiß nicht genau, welchen Code der Compiler erzeugt, aber wenn man es in
Assembler macht, hingegen schon. Sowas ist dann besonders gut für ein
Serienprodukt! Wenn das Produkt nicht eine Uhr ist, gehts noch so
halbwegs. Ob eine LED jetzt mit 1Hz oder 1,02Hz blinkt! Sogar ein UART
ist noch gegen ein halbes Prozent Falschberechnung tolerant, läuft auch
mit 9648BAUD oder 9552BAUD anstatt 9600BAUD.
Dann begutachtete ich kürzlich noch das Motherboard meines alten 486,
bevor er zum Schrott ging. Es ist haarsträubend, wie auf solchen Boards
manchmal Taktfrequenzen um z.B. 40MHz weit über mehrere Ecken und Lagen
geroutet sind. Das Board hatte so einige Oszillatoren um diese Frequenz
herum. Da funktioniert es auch. OK, es waren integrierte
Fertigoszillatoren.
Also, Ingo, ich persönlich glaube, daß sich da noch was machen läßt.
Alle Signale rund um den Oszillator sind auch in der Regel schön
sinusförmig, keine harten Rechtecke. Ob und was Nachbarleiterbahnen mit
Rechtecksignalen da beeinflussen, besonders wenn diese in höheren
Frequenzen spielen, habe ich allerdings noch nie genau untersuchen
müssen.
Meine olle DCF77-Uhr läuft übrigens mit 50Hz Interruptfrequenz,
beanspruchte den Interruptapparat also nicht besonders. Das 20ms-Raster
reichte schon völlig, um das Signal abzutasten und zu verarbeiten. Die
CPU-Auslastung war schlappe 6%, und das auch nur wegen der sekündlichen
Ausgabe am Display, wo auch noch immer auf das Busy-Flag gewartet werden
mußte. Für den Rest legte ich den in den Schlaf, Idle-Mode. Ich machte
meine DCF-Uhr aber auch vollständig in Assembler.
Ingo schrieb:> Zu den Quarzanschlüssen sind je 22pF (mein Standartwert) parallel.
Also mich wudert es wie wenig Ahnung die Leute von Quarzen haben.
Wie kommst Du auf einen Standartwert von 22pF? Der Quarz ist mit
einem Cl von 32pF spezifiert. Wenn wir jetzt mal die Kapazität
von deinen Controllerpins ignorieren, müssten die beiden Cs je
64pF haben, weil die ja elektrisch in Reihe geschaltet sind.
Denke dir einfach die Masse an den Cs weg.
Was da heute an Quarzen verkauft wird, ist z.T. wirklich der letzte
Dreck. Die haben z.T. mehr Nebenresonanzen als du Finger an den Händen
hast. Das können halt die wenigsten Kunden nachmessen. Ich hatte mal
ein besonders gutes Exemplar vom R....., der sprang beim leichten
draufklopfen zwischden den vielen nebenresonazen hin und her...
Was mir gerade noch aufgefallen ist, der recomended drive level
ist 10...100uW. Rechne mal nach, i.d.R. werden die Quarze satt
überlastet, da gehört noch ein Widerstand in Serie.
Das kommt halt davon wenn der eine vom anderen die Standartschaltung
mit Standartwerten abkupfer ohne nachzudenken......
Also mit Full-Swing habe ich jetzt auch schon Abweichung die dem 12s/18h
entspricht...
Ich werde am Mittwoch mal versuchen genaue Werte für die aktuelle
Frequenz zu finden und dann mal mit der Lastkapazität spielen.
Aber deinen Aussagen nach müsste der Quarz ja dann zu schnell laufen,
tut er aber nicht... Alles sehr merkwürdig!
So, geh jetzt feiern, guten Rutsch, melde mich morgen wieder...
Ingo
hal9001 schrieb:> Was mir gerade noch aufgefallen ist, der recomended drive level> ist 10...100uW. Rechne mal nach, i.d.R. werden die Quarze satt> überlastet
Wenn bisher der low-power Modus eingestellt war wohl kaum.
Ingo schrieb:> void TimerInit ( void )> {> TCCR0A |= (1<<WGM01); // CTC> OCR0A = 249; // f = F_CPU / (Prescaler * (OCR0A+1) ) = 16e6 / (64 *
(249+1) ) = 1kHz
> TCCR0B |= (1<<CS00) | (1<<CS01);> TIMSK0 |= (1<<OCIE0A);> }> und dann im Interrupt:static unsigned int Count, Entprellzaehler,
MilliSekundenzaehler = 0;
> Count++;> MilliSekundenzaehler++;> ...> /* Sekundeninterval */> if (MilliSekundenzaehler == 1000){> Uhr();> MilliSekundenzaehler = 0;> }> ...
Das liegt ganz sicher nicht nur am Quarz. Allein der Auszug aus Deiner
Service-Routine verrät, dass der Ablauf nicht linear ist. Du bekommst
hier in jeder Sekunde einen Fehler rein -> Unterschiede in der
Durchlaufzeit der Serviceroutine. Deshalb nimmt ja auch für eine RTC
einen Baustein oder implementiert das in einem CPLD oder suchst sich
eine uC der eine RTC integriert hat. Wenn in Deiner Service-Routine noch
mehr abfragen sind, welche nicht immer die gleiche Laufzeit/ms-Zählung
garantieren, dann umso schlimmer. Versuche doch mal nicht ms zu zählen
sondern gleich in 100ms oder s-Intervallen. Dann ist der Fehler nicht so
dramatisch. Alernativ kannst Du auch einen langsameren Quarz nehmen.
Am besten wäre aber, wenn Du die TOSC-Pins nutzt, und dort einen
32,768KHz Quarz dran klebst. Dafür ist dieser Eingang schließlich auch
da. Dann sollte die Uhr für einen deutlich längeren Zeitraum mit
geringer Abweichung laufen.
Der 32.768KHz-Quarz wird vermutlich auch ohne Anschwingkapazitäten
laufen.
Heribert schrieb:> Allein der Auszug aus Deiner> Service-Routine verrät, dass der Ablauf nicht linear ist.
Das hat keinen Einfluss, da der Timer nicht per Code nachgeladen wird,
sondern per HW-CTC.
Wenn jedoch regelmäßig Interrupts global gesperrt würden, oder ein
anderer Interrupt blockiert (der muss nicht mal höherrangig sein), dann
fallen eben immer wieder einige ms-Interrupts aus.
Aufsummiert gibt das den beschriebenen Fehler.
Heribert schrieb:> Du bekommst> hier in jeder Sekunde einen Fehler rein -> Unterschiede in der> Durchlaufzeit der Serviceroutine.
Das ist Quatsch mit Soße.
Das Reload erfolgt in der Timer-Hardware.
Solange alle Interrupts zusammen kleiner 16000 CPU-Takte sind, ist alles
in Butter und der akkumulierte Fehler ist 0.
Heribert schrieb:> Deshalb nimmt ja auch für eine RTC> einen Baustein oder implementiert das in einem CPLD oder suchst sich> eine uC der eine RTC integriert hat.
Gehts nicht noch umständlicher?
Mit dem CPU-Quarz kriegt man ne RTC super konstant hin, ganz ohne
umständliche extra Hardware.
Es kann aber sein, daß die Abweichung von der Nennfrequenz höher ist,
als bei einem speziellen Uhrenquarz. Dann muß man eben in Software
korrigieren. Man kann z.B. jede Minute einen anderen Reloadwert nehmen.
In der Codesammlung ist ein Beispiel dazu. Die tatsächliche Frequenz
wird als Macro eingetragen und der Compiler rechnet dann das Macro aus.
Mit DCF-77 könnte man sogar den Korrekturwert automatisch ermitteln
lassen.
Peter
Wilhelm Ferkes schrieb:> denn> beim 8051 beispielsweise klappt die absolut exakte Nachladung des Timer> 0 in Hochsprache nicht so dolle.
Das geht auch bequem nur in C. Ich hab mit dem AT89C2051 einige Uhren
aufgebaut.
Es gibt viele Möglichkeiten. Man kann z.B. nur TH0 laden, dazu hat man
dann 256 Zyklen Zeit. Und falls ein anderer Interrupt länger braucht,
gibt man dem T0 einfach die höchste Priorität.
Hier mal ein Beispiel:
@Ingo
Wenn Deine Uhr/Quarz genau ungenau geht, warum fügst Du keinen einfachen
Korrekturfaktor ein?
Du kannst bei jeder Synchronisation die Differenz messen und dann,
verteilt über den Tag ein paar Takte klauen bzw. hinzufügen.
Wegen so etwas würde ich nicht den Lötkolben anschmeißen - wohl gemerkt:
Der Quarz muss natürlich gleichmäßig (ungleichmäßig) laufen.
Übrigens kannst Du auf diese Weise, bei einem Quarz der OK ist, auch die
Grundgenauigkeit erhöhen.
Ich mach so etwas schon seit langem, zumindest seit dem ich feststellen
musste, dass die einfachen Quarze nicht besonders genau aber relativ
stabil sind.
amateur schrieb:> Ich mach so etwas schon seit langem, zumindest seit dem ich feststellen> musste, dass die einfachen Quarze nicht besonders genau aber relativ> stabil sind.
Bei einem Hobbystück geht das. Nicht bei einem Prototypen für eine
Produktionsserie.
@Wilhelm
>Nicht bei einem Prototypen für eine Produktionsserie.
Würde ich nur mit Bleistift unterschreiben.
Da das ganze sozusagen Selbstsynchronisierend ist, muss die Sequenz nur
einmal programmiert werden und läuft auf allen Systemen. Im Grunde keine
Konstanten - vor allem keine im fertigen System.
Natürlich nur in den angegebenen Grenzen.
Also genaue, nicht allzu weit auseinanderliegende Synchronisationspunkte
und ein Quarz, der halbwegs gleichmäßig läuft.
Mein Gott !!!
Was soll dieses seitenlange herumraten ?
Der Quarz für 24 ct ist eben Scheiße und muss ausgetauscht werden.
Bei Massenfertigung von Quarzen kommt so etwas vor.
Peter R. schrieb:> Für wirklich stabile Frequenz ist die Oszillatorschaltung eines> Kontrollers nicht ausgelegt. Für Stabilität im 10ppm-Bereich sollte es> schon ein gesondert aufgebauter Oszillator sein.
Hallo Peter, Hallo Ingo,
10ppm über Zeit und Temperatur sind - mal so ins Blaue gesagt - NICHT
möglich. Das liegt aber nicht an der Oszillatorschaltung des Prozessors.
Die Quarze sind normalerweise folgendermaßen spezifiziert:
a) Fertigungstoleranz (e.g. 10ppm)
b) Toleranz über Temperatur (e.g. 10ppm)
c) Aging (Alterung) - das können schon mal 3ppm/a sein über Lifecycle
normalerweise etwa 10...20ppm gesamt. das Gibt best case schon mal etwa
30ppm bei den besten Quarzen über Temperatur, im eng bemessenen
Raumtemepraturbereich wird das weniger sein.
Um eine Genauigkeit in dem gewünschten Bereich zu bekommen sind dem ESR
und den Parallelkapazitäten besondere Aufmerksamgeit zu schenken.
Verwende mal CAP 12p oder 17p, dann schwingt der Quarz etwas schneller,
oder 27p oder 33p dann etwas langsamer. Der Serienwiderstand trägt zur
Anschwingstabilität bei.
Wenn Du schnell sehr gute Genauigkeit benötigts brauchst Du TCXOs, die
sind aber teuer. Alternative: Der alte Trimmerkondensator
anstatt/parallel zu den Kondensatoren und dann abgleichen, das sollte
für Raumtemepratur ausreichen.
Grüße
Peter R. schrieb:> Der Quarz für 24 ct ist eben Scheiße und muss ausgetauscht werden.> Bei Massenfertigung von Quarzen kommt so etwas vor.
Das ist grober Unfug.
Der Quarz ist innerhalb seiner spezifizierten Toleranz, wird aber
ausserhalb seiner spezifizierten Lastkapazität betrieben.
Ein Austausch des Quarzes nützt garnichts, die Applikation muss an die
Quarzspezifikation angepasst werden.
@Peter R.: die grösse deine Klappe passt nicht zu deinem Know-How.
A6AA schrieb:> Verwende mal CAP 12p oder 17p, dann schwingt der Quarz etwas schneller,> oder 27p oder 33p dann etwas langsamer.
Hat sich das denn immer noch nicht herumgesprochen, dass die beiden
Kondensatoren in Reihe die Last-Kapazität des Quarzes ergeben müssen?
Jedenfall in der Standard-OSzillator-Schaltung eines µC. Also müssen für
optimalen, sicheren Betrieb jeweils etwa das doppelte der geforderten
Last-Kapazität an den Quarz.
Diese Pauschal-Aussagen mit den 22pF sind ein echt übler "Rat" immer. Da
müsste der Quarz ja nur ca 10 pF Last erfordern. Das haben allenfalls
Uhrenquarze.
Thomas R. schrieb:> Die Abgleichtoleranz eines Quarzes (z.B. +/- 30 ppm) gilt nur bei der> spezifizierten Lastkapazität, z.B 15 +/- 0 pF.> Beim Betrieb mit abweichender Lastkapazität ist die Frequenzabweichung> typisch 10...30 ppm/pF
Dazu würde mich eine Quelle brennend interessieren.
Michael H. schrieb:>> Beim Betrieb mit abweichender Lastkapazität ist die Frequenzabweichung>> typisch 10...30 ppm/pF>> Dazu würde mich eine Quelle brennend interessieren.
So viel waren es bei mir nicht, das hängt auch von der Buaform ab,
ansonsten - ACK. Heißt eben aber: Die Lastkapazität des Quarzes will
sorgfältig ermittelt werden - mit 22pF klappt das Schwingen villeicht
aber eben nicht genau.
Christian R. schrieb:> Hat sich das denn immer noch nicht herumgesprochen, dass die beiden> Kondensatoren in Reihe die Last-Kapazität des Quarzes ergeben müssen?> Jedenfall in der Standard-OSzillator-Schaltung eines µC. Also müssen für> optimalen, sicheren Betrieb jeweils etwa das doppelte der geforderten> Last-Kapazität an den Quarz.
Auch nur Näherungsweise. In die Berechnung gehen auch die
Einangskapazitäten des Treibers (Prozessor) sowie parasitäre Kapazitäten
mit ein. Da diese stark streuen können und die Lastkapazitäten auch nur
in der E-Reihe verfügbar sind ist leicht nachvollziehbar dass die
Genauigkeit per se nicht einfach auf 10ppm "einstellbar" ist da die
Toleranzne das nicht mitmachen.
Für eine Bastler wird es daher am einfachsten sein ein paar Caps
auszutauschen oder einen (Kondensator-)Trimmer zu verwenden.
rgds
Christian R. schrieb:> Diese Pauschal-Aussagen mit den 22pF sind ein echt übler "Rat" immer. Da> müsste der Quarz ja nur ca 10 pF Last erfordern. Das haben allenfalls> Uhrenquarze.
Bei SMD-Quarzen kann das schon der Standard sein (2,5x3,5 SMD).
Christian R. schrieb:> Diese Pauschal-Aussagen mit den 22pF sind ein echt übler "Rat" immer.
Full ACK - aber die meisten Bastelschaltungen verwenden die bedrahteten
und großen SMDs und da denke ich wird das einigermaßen zum Erfolg führen
(ohne Nachweis). Ich kenne aus meinen alten Uralt-Erfahrungen die 27pF
noch. Und wenn der Professor dann mit 200ppm Abweichung schwingt merkt
das auch noch keiner. Da könnte man gleich auf den Quarz verzichten und
RC machen (siehe App-Notes der Prozessoren).
rgds
So frohes Neues...
Also es scheint ja tatsächlich alles mit der Lastkapazität zu fallen. In
der Tat sind die 22pF wirklich nur ein Bastelwert, der immer
funktioniert hat bzw. Bis jetzt ist eine Abweichung vom grundtakt nicht
aufgefallen weil eine Abweichung von ca 200ppm nicht ins Gewicht fällt,
selbst bei einer Freuqnezmessung nicht, da oft eine Fenauigkeit von 0,1%
ausreichend ist.
Also, ich werde morgen mal messen wo sich die Frequenz wirklich
rumtreibt und dann mal 2x 68pF versuchen.
Michael H. schrieb:> Thomas R. schrieb:>> Die Abgleichtoleranz eines Quarzes (z.B. +/- 30 ppm) gilt nur bei der>> spezifizierten Lastkapazität, z.B 15 +/- 0 pF.>> Beim Betrieb mit abweichender Lastkapazität ist die Frequenzabweichung>> typisch 10...30 ppm/pF>> Dazu würde mich eine Quelle brennend interessieren.
Einfach mal nach "pulling-range" und "crystal" googeln, dann findest du
hunderttausende von Quellen.
Ingo schrieb:> Also, ich werde morgen mal messen wo sich die Frequenz wirklich> rumtreibt und dann mal 2x 68pF versuchen.
2*68 pF statt 2*22 pF werden deinen Frequenzfehler vergrössern.
Berichte dann doch mal.
Thomas R. schrieb:> Michael H. schrieb:>> Thomas R. schrieb:>>> Die Abgleichtoleranz eines Quarzes (z.B. +/- 30 ppm) gilt nur bei der>>> spezifizierten Lastkapazität, z.B 15 +/- 0 pF.>>> Beim Betrieb mit abweichender Lastkapazität ist die Frequenzabweichung>>> typisch 10...30 ppm/pF>>>> Dazu würde mich eine Quelle brennend interessieren.>> Einfach mal nach "pulling-range" und "crystal" googeln, dann findest du> hunderttausende von Quellen.
Besten Dank!
Natürlich auch an Paul ^^
Ich bleibe bei meiner Behauptung das das Problem nicht beim Quartz
sondern bei der Software liegt. An irgendeiner Stelle werden ISRs
einfach zu lange gesperrt.
Da wir die Quelltexte nicht kennen vermute ich mal das in Zeile 384
etwas faul ist. Soll heißen: Ohne diese ist alles nur stochern im Nebel.
Und ich bleibe auch dabei das ne tausendstel Sekunde Auflösung als
Zeitbasis sportlich ist wenn man nebenbei noch zeitkritisches
Multiplexing fürs LED macht.
@ Torsten S. (tse)
>Ich bleibe bei meiner Behauptung das das Problem nicht beim Quartz>sondern bei der Software liegt. An irgendeiner Stelle werden ISRs>einfach zu lange gesperrt.
Kann sein, muss nicht.
>Da wir die Quelltexte nicht kennen vermute ich mal das in Zeile 384>etwas faul ist. Soll heißen: Ohne diese ist alles nur stochern im Nebel.
Das ist die Kernkompetenz des Forums!
>Und ich bleibe auch dabei das ne tausendstel Sekunde Auflösung als>Zeitbasis sportlich ist wenn man nebenbei noch zeitkritisches>Multiplexing fürs LED macht.Gähn Dabei langeweilt sich der uC fast zu Tode. 1ms sind 16000 Takt
bei 16 MHz zwischen zwei Interrupts! Siehe Soft-PWM.
Falk Brunner schrieb:> Gähn Dabei langeweilt sich der uC fast zu Tode. 1ms sind 16000 Takt> bei 16 MHz zwischen zwei Interrupts!
schon, aber nur wenn man den uC nicht mit unnötiger Arbeit oder gar
delays beschäftigt
> Gähn Dabei langeweilt sich der uC fast zu Tode. 1ms sind 16000 Takt> bei 16 MHz zwischen zwei Interrupts! Siehe Soft-PWM.
Der AVR hat doch überhaupt keine Proritäten für Interrupts. Da hat man
mit wenigen Fließkommaoperationen ganz schnell die 1ms verbraucht bevor
der Uhreninterrupt wieder eingeschaltet wird. Zumindest denkbar wäre
dieser Fall.
Natürlich wäre es am einfachsten einen Frequenzzähler anzuschließen um
die 16MHz Taktfrequenz am Clock-out über einen 1pF Kondensator zu
messen. Noch besser wäre es zum Testen einen Teilerausgang auf einem Pin
zu aktivieren. Damit vermeidet man eine Rückkopplung auf den Oszillator.
Bernd schrieb:> Falk Brunner schrieb:>> Gähn Dabei langeweilt sich der uC fast zu Tode. 1ms sind 16000 Takt>> bei 16 MHz zwischen zwei Interrupts!>> schon, aber nur wenn man den uC nicht mit unnötiger Arbeit oder gar> delays beschäftigt
Ist wurscht, solange die Interrupts ab und an nicht länger als knapp das
Doppelte davon, also rund 31990 Takte gesperrt sind. Und so dämlich wird
er ja doch nicht sein.
Obwohl. Möglich ist es natürlich, dass zwischen cli() und sei() eine
entsprechende Anzahl an Takten liegt. Ich seh aber ehrlich gesagt nicht,
wie man bei einer Funkuhr derartige Zahlen erreichen würde.
würde ich anders machen. Keine |= sondern echte Zuweisungen (Bis auf
TIMSK0). An dieser Stelle will ich tatsächlich alle Bits bei den
Zuweisungen zu den Konfigurationsregistern behandeln.
Festzustellen ob's an den Weichtieren oder den Hartschaligen liegt dürft
ja eine der einfachsten Übungen sein. Falls aber das offensichtliche zu
Versteckt liegt: Raus mit dem Code und ein paar abgemagerte Testroutinen
rein. Wofür gibt's denn Flash?
Ich würde bei der Gelegenheit gleich 'ne Routine mit reinfummeln, die
feststellt ob der Quarz rumtorkelt (Silvester?) oder konstant zu schnell
bzw. zu langsam ist.
@ Helmut S. (helmuts)
>> Gähn Dabei langeweilt sich der uC fast zu Tode. 1ms sind 16000 Takt>> bei 16 MHz zwischen zwei Interrupts! Siehe Soft-PWM.>Der AVR hat doch überhaupt keine Proritäten für Interrupts. Da hat man>mit wenigen Fließkommaoperationen ganz schnell die 1ms verbraucht bevor>der Uhreninterrupt wieder eingeschaltet wird. Zumindest denkbar wäre>dieser Fall.
Bitte? Erstens braucht kein Mensch hier FLießkomma, zweitens ist auch
der AVR nich soo lahm bei Fließkomma und drittens ist die Rechenzeit des
Hauptprogramm vollkommen egel, solange die Interrupts nciht gesperrt
sind.
> Noch besser wäre es zum Testen einen Teilerausgang auf einem Pin> zu aktivieren. Damit vermeidet man eine Rückkopplung auf den Oszillator.
Genau so macht man es sinnvollerweise.
http://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC#Echtzeituhr_mit_Uhrenquarz
Ingo schrieb:> Also, ich werde morgen mal messen wo sich die Frequenz wirklich> rumtreibt und dann mal 2x 68pF versuchen.
Hallo Ingo,
wenn Du das messen willst braucht Du wirklich eine GUTE Methode.
Die Scpoes allein haben schon eine Abweichung von z.B. +/-30ppm (Agilent
MSOX30nn) an der Zeitbasis, damit kannst Du einen solchen Quarz nur
"schätzen". Eine Möglichkeit wäre ein guter (siehe Handbuch) Generator
mit VCTCXO Basis mit dem Du dann Dein Scope "kalibrieren" kannst.
Rechnerisch ergeben sich etwa 185ppm Differenz (12s/18h). Bei 15ppm/pF
und 12pF Abweichung kämen wir bei 180ppm Abweichung raus - also im
Bereich des Möglichen.
rgds
So, ich habe mit einem Frequenzzähler gemessen:
Bei jedem betreten der 1ms ISR wird ein Pin getoggelt.
Also mit 22pF hatte ich tatsächlich 179,1ppm Abweichung (499,91045Hz).
68pF => 304,8ppm (499,84759 Hz)
Nun: 4,7pF => 13,92ppm (499,99304 Hz)
Also war es doch der olle Quarz... Man man man!
Ingo
Das ist kein Beweis, daß der Quarz schuld ist. Jeder Quarz schwingt mit
höherer Frequenz, wenn die Bürdekapazität erniedrigt wird. Aber wenn er
mit diesem Wert zuverlässig arbeitet (anschwingt) kann man es so lassen.
Die Ergebnisse durch die Reduzierung der Lastkapazität decken sich mit
dem, was ich oben geschrieben habe.
In Ingos Layout kann man die Leiterbahnen vom Prozessor zum Quarz leider
nicht sehen. Sollten die so ausgeführt sein, dass sie eine nennenswerte
Induktivität darstellen, so führt dies zu einer deutlichen
Frequenzreduzierung.
Poste doch mal die Seite der Platine, auf der diese Leiterbahnen sind.
Für den Quarzoszillator ist das Layout nicht gerade optimal.
Ich beginne ein Layout immer damit, dass zuerst der Quarz, seine
Fusspunktkondensatoren, Abblockkondensatoren, die Betriebsspannung und
die Masseanschlüsse mit möglichst kurzen und dicken Leiterbahnen
verbunden werden.
Erst danach werden die unkritischen Leiterbahnen um diese so erstellten
Gegebenheiten herum geroutet.
Die Leitungen vom Quarz sind unter 2 Prozessorpads geführt. Hier kann es
zum kapazitiven Übersprechen kommen.
Eventuell hast du durch die (nicht gezeigte) Massefläche noch
zusätzliche Kapazitäten an den Quarz gebracht.
Thomas R. schrieb:> Eventuell hast du durch die (nicht gezeigte) Massefläche noch> zusätzliche Kapazitäten an den Quarz gebracht.
Möglich, 4,7pF scheinen mir arg wenig, wenn der Quarz doch 32pF
Lastkapazität fordert!?
Ingo
Neben der parasitären Leitungskapazität hat wohl auch der
Induktivitätsbelag der Quarzzuleitungen einen Einfluß auf die
Schwingfrequenz. Sonst könnte man ja auf den Gedanken kommen, die "22pF"
Kondensatoren durch ausreichende Leiterbahnlänge vollständig zu
ersetzen.
Ingo schrieb:> Möglich, 4,7pF scheinen mir arg wenig, wenn der Quarz doch 32pF> Lastkapazität fordert!?
"Fordert" bedeutet in diesem Zusammenhang "damit die Frequenz wie vom
Hersteller gewollt erreicht wird". Woher die 32pF kommen, wie sie sich
zusammensetzen, ist unwesentlich, genau wie der Betrag. Es wird nur die
Frequenz damit vorgegeben. Mit der passenden Schaltung kann man Quarze
auch mit Serien-Induktivität in der Frequenz ziehen.
Bei den Primitiv-Oszillatoren der Mikroprotze sollen die Kondensatoren
als Nebeneffekt verhindern, dass der Quarz auf einer Nebenresonanz
schwingt. Laut Reichelt Katalog sind die 16MHz Grundwellenquarze. Damit
würde der erste nennenswerte Oberton bei 48MHz liegen. Das macht der AVR
aber nicht.
Gängig sind für 16MHz auch Quarze, die im 3. Oberton schwingen.Damit
würde dann die nächste Resonanz bei 26.7MHz (5. Oberton) liegen - das
wäre schon kritisch. Die üblichen AT-Schnitte der Quarze sind recht gut
im Oberton zu betreiben.
@ Ingo (Gast)
>Möglich, 4,7pF scheinen mir arg wenig, wenn der Quarz doch 32pF>Lastkapazität fordert!?
Sicher. Kann es sein, dass bei dem AVR mittel Fuses internen Kapazitäten
zugeschaltet werden? Ich hab da 2x36pF in Kopf bei einigen Typen.
Falk Brunner schrieb:> Kann es sein, dass bei dem AVR mittel Fuses internen Kapazitäten> zugeschaltet werden? Ich hab da 2x36pF in Kopf bei einigen Typen.
Ich glaube nicht, ich habs vorhin ganz ohne Kapazität versucht => wildes
Schwingen...
Ingo
Simon K. schrieb:> Hast du nen Tastkopf parallel angeschlossen zufällig?
Ja, aber mit Kondensatoren und 1:10 Tastkopf kann ich die Schwingung
sauber sehen. Ohne Kondensatoren schwingt es bzw. ich kriegs nicht
sauber getriggert da vermutlich zu viel Jittern
Ingo
Ingo schrieb:> Simon K. schrieb:>> Hast du nen Tastkopf parallel angeschlossen zufällig?>> Ja, aber mit Kondensatoren und 1:10 Tastkopf kann ich die Schwingung> sauber sehen. Ohne Kondensatoren schwingt es bzw. ich kriegs nicht> sauber getriggert da vermutlich zu viel Jittern
Und wie gut ist die Genauigkeit ohne angeschlossenen Tastkopf?
Das Frequenzsignal habe ich ohne Tastkopf am OSC gemessen, sonst wäre
das ja Quatsch. Ich hab das Oszi nur zum "anschauen" der
Quarzschwingungen angeschlossen. Für die Frequenzmessung habe ich einen
IO getoggelt und mit Frequenzzähler gemessen...
Ingo
@ Ingo (Gast)
>Das Frequenzsignal habe ich ohne Tastkopf am OSC gemessen, sonst wäre>das ja Quatsch.
AUA! Genau DAS ist Quatsch. So ein Quarzsozillator mag es nicht, durch
nen Meter Koaxkabel belastet zu werden, auch die 10-15pF einen 10:1
Tastkopfes sind nur ein Kompromiss!
> Ich hab das Oszi nur zum "anschauen" der>Quarzschwingungen angeschlossen.
Wie? Mit einem Klingeldraht? Odr noch schlimmer Koaxkabel?
> Für die Frequenzmessung habe ich einen> IO getoggelt und mit Frequenzzähler gemessen...
DAS ist OK.
Falk Brunner schrieb:>>Das Frequenzsignal habe ich ohne Tastkopf am OSC gemessen, sonst wäre>>das ja Quatsch.>> AUA! Genau DAS ist Quatsch. So ein Quarzsozillator mag es nicht, durch> nen Meter Koaxkabel belastet zu werden, auch die 10-15pF einen 10:1> Tastkopfes sind nur ein Kompromiss!
Hmm, ich glaube du hast mich falsch verstanden, ich habe das
Frequenzsignal an einem toggelnden IO abgenommen OHNE dabei einen
Tastkopf am OSC zu haben!
>> Ich hab das Oszi nur zum "anschauen" der>>Quarzschwingungen angeschlossen.>> Wie? Mit einem Klingeldraht? Odr noch schlimmer Koaxkabel?
Nee, Tastkopf 10:1
Falk Brunner schrieb:> DAS ist OK.
Meine ich auch... :-)
Ingo
Hallo!
Ich glaube Du hast ein Problem mit Nebenresonanzen. Sieh Dir mal das
Bild im
Anhang an. Es handelt sich um einen 25Mhz Quarz. Du kannst hier neben
der Hauptresonanz noch diverse Nebenresonanzen sehen. Die liegen alle
dicht bei den 25Mhz. Das Bild ist noch von einem besonders guten Quarz,
ich habe da noch viel schlimmere Katastrophen gesehen. Wir hatten bei
uns in der Firma das Problem das in der Produktion immer bei wenigen
Platinen die Ethernetschnittstelle nicht richtig funktioniert. Das
Problem wurde innovativ gelöst, die Platinen wurden einfach
verschrottet. Erst als es bei einer Serie mal mehr waren und als man
merkte dass es auch ziemlich häufig zu Paketverlusten kommt, durfte ich
das ganze untersuchen. Ich hatte
zunächst den Entwickler konsultiert und nach der Dimensionierung der Cs
gefragt. Antwort "Aus dem Projekt xyz abgekupfert". Das üblich halt, die
Fehler verbreiten sich wie eine Epedemie. Eine Änderung der
Dimensionierung
hat nix gebracht. Ich habe dann an die 100 Quarze mit meinem privaten
Netzwerktester ausgemessen. Die Firma setzt halt Bauelemente ein die sie
nicht einmal ausmessen kann. Der angebliche deutsche Hersteller hat in
den Datenblättern auch nix zu dem Thema veröffentlicht. Die
Messergebniss
waren eine Kathastrophe, obwohl die Quarze alle aus einer Serie stammen
hatte nicht eine Kurve Ähnlichkeit mit der anderen. Der angemailte
Quarz-
hersteller hat immerhin nach 6 Wochen geantwortet: Das
Nebenresonanzverhalten dieses Types ist nicht definiert, wir können
Ihnen
aber nach Spezifikation Quarze fertigen. (Zum nfachen Preis versteht
sich).
Wenigstens hatte man nicht die Messung angezweifelt. Nach meiner Meinung
dürfte es jede Menge Gerätschaften mit solchen Problemen geben, es fällt
halt i.d.R. nicht auf wenn mal Pakete widerholt werden, welcher
Hersteller
hat denn überhaupt das Messequipment um einen Quarz zu qualifizieren.
Früher gabe es solchen Dreck nicht, da waren auch richtig dicke
Quarzscheiben drin. Mein Tipp für dich kauf dir den Netzwerktester vom
Funkamateuer und untersuche die Quarze bevor du sie einsetzt. Verwende
keine SMD-Typen, die sind die schlimmsten. Am besten sind große
Metallgehäuse. Ich würde mal mehrere Quarze aufsägen und gucken wie groß
die Scheibe ist, vielleicht hat der Chinese da auch rumoptimiert. Oder
lass dir einen Quarz machen, das kostet natürlich ne Stange Geld.
Hi,
Das ist ja nur ein Beispiel für einen Quarz von 100.
Das Bild ist nie identisch. D.h. der Abstand und die
Anzahl der Nebenresonanzen streut. Bei diesem Quarz
handelt es sich um einen Quarz im Metallgehäuse, SMD
Quarze sind noch viel schlimmer.
Hier mein Vorschlag für ein Workaround:
Wenn Du Dir Abends wieder die Zeit via DCF holst, hast Du doch die 24h
Zeitdifferenz. Aus dieser Differenz kannst Du Dir sehr einfach einen
Korrekturfaktor für die nächsten 24h berechnen. Theoretisch sollte die
Uhr dann nach 24h korrekt laufen. Diesen Korrekturfaktor kannst Du dann
noch adaptiv über die nächsten Tage verfeinern.
Ingo schrieb:> Die von dir aufgezeigten Nebenresonanzen würden aber noch viel größere> Abwichungen hervorrufen. Abertrotzdem sehr interessant.
Vielleicht hast Du ja die Frequenz durch die viel zu kleine
Lastkapazität nach unten gezogen. Am besten ist nimm Geld
in die Hand, kauf den NWA und messe die Teile aus....
Selfhorst schrieb:> Wenn Du Dir Abends wieder die Zeit via DCF holst, hast Du doch die 24h> Zeitdifferenz. Aus dieser Differenz kannst Du Dir sehr einfach einen> Korrekturfaktor für die nächsten 24h berechnen. Theoretisch sollte die> Uhr dann nach 24h korrekt laufen. Diesen Korrekturfaktor kannst Du dann> noch adaptiv über die nächsten Tage verfeinern.
Keine gute Idee wenn es wirklich Nebenresonanzen sind. Ich hatte den
Fall das man den Quarz durch klopfen zum springen bringen konnte.
hal9001 schrieb:> Sieh Dir mal das Bild im Anhang an.
Hallo, sieht ja sehr interessant aus. Da ich kein HF Spezi bin hab ich
eine Frage dazu.
Wenn ich das richtig verstehe wobbelst du den Quarz zwischen 24 - 26 Mhz
durch und misst die Dämpfung. Dort wo der Quarz seine
Resonanzfrequenz(en) hat, dämpft er das zu messende Signal.
Das sieht natürlich alles andere als toll aus, aber ein µC ist doch kein
Netzwerkanalysator. Die verwendete Schaltung nennt sich glaub ich
Colpit Oscillator. Die wird durch den Quarz (bzw dessen Dämpfung) zur
Schwingung bei einer Frequenz gezwungen. Die kann dann doch nur eine
Frequenz (die niedrigste?) "sehen" oder versteh ich das falsch?
P.S. (Kannst du zum Verständnis die Meßschaltung mal reinstellen?)
hal9001 schrieb:> kauf den NWA und messe die Teile aus..
Der ist aber ausverkauft.
hal9001 schrieb:> Früher gabe es solchen Dreck nicht, da waren auch richtig dicke> Quarzscheiben drin.
Mit Verlaub:
Die Frequenz eines AT-Quarzes ist umgekehrt proportional zu der Dicke
der Quarzscheibe. Somit ist die Dicke bei gegebener Frequenz vorgegeben:
f= 1660 kHz*mm/d
Nebenresonanzen lassen sich vermeiden, indem die Quarzscheibe leicht
konvex geschliffen wird und der Rand gefast wird.
Das ist aber bei Quarzen im Cent-Bereich nicht mehr machbar.
Jens Martin schrieb:> Die kann dann doch nur eine> Frequenz (die niedrigste?) "sehen" oder versteh ich das falsch?
Wenn die Oszillatorschaltung richtig dimensioniert ist, sieht der
Oszillator die Frequenz mit dem niedrigsten ESR und sonst keine.
Die Hauptresonanz und auch die Nebenresonanzen haben aber ihre eigenen
Temperaturcharakteristiken (Parabeln 3. Ordnung).
Bei bestimmten Temperaturen kann es passieren, dass sich eine
Nebenresonanz in die Nähe der Hauptresonanz bewegt und diese dann
verschiebt. Das führt zu Sprüngen in der Temperaturcharakteristik der
Hauptresonanz. Man nennt das "Dips".
Die Messung von Dips ist in DIN EN 60444-7 spezifiziert.
Und wer sagt Dir dass die Oszillatorschaltung richtig ausgelegt ist? -
ausgerechnet auf einen 16MHz-Grundwellenquarz?
Der übrigens ein Ausreißer sein kann oder bei dem die Verklebung
zwischen Elektrode und Anschlussdraht angerissen ist oder der sonst
irgendeine Macke hat.
Solange der Ärger nur bei diesem einen Quarz vorliegt, ist es doch
Unsinn, über 100 Beiträge lang Vermutungen rauszulassen.
Als Erstes sollte man einen anderen Quarz einsetzen und dann messen.
Thomas R. schrieb:> Mit Verlaub:> Die Frequenz eines AT-Quarzes ist umgekehrt proportional zu der Dicke> der Quarzscheibe. Somit ist die Dicke bei gegebener Frequenz vorgegeben:> f= 1660 kHz*mm/d> Nebenresonanzen lassen sich vermeiden, indem die Quarzscheibe leicht> konvex geschliffen wird und der Rand gefast wird.> Das ist aber bei Quarzen im Cent-Bereich nicht mehr machbar.
Da hst Du natürlich recht, das war nicht richtig formuliert. Mit "dick"
meinte ich den Durchmesser der Scheibe. Die SMD-Quarze haben ja keine
Scheibe, dass sind entweder Stäbchen oder Stimmgabeln. Die
Nebenresonanzen
von den Scheibenquarzen sind sehr viel weniger ausgeprägt als die der
SMD-Quarze.
Kein Chiphersteller kann einen Oszillator so designen, dass der für
einen riesigen Frequenzbereich optimiert ist.
Ich gehe davon aus, dass der Quarz i.O. ist, aber mit einer falschen
Lastkapazität betrieben wurde.
Vielleicht hat Ingo noch mehrere gleiche Quarze und kann mal berichten,
was nach einem Austausch passiert.
hal9001 schrieb:> Ich hatte den Fall das man den Quarz durch klopfen zum springen bringen konnte.
Die Ursache dafür ist meistens die, dass die Quarzscheibe schief
eingebaut ist und dadurch das Gehäuse berührt - siehe Foto.
Thomas R. schrieb:> Vielleicht hat Ingo noch mehrere gleiche Quarze und kann mal berichten,> was nach einem Austausch passiert.
Hätte ich, ich habe diese Uhr sogar 3x aufgebaut. Die eine Uhr, von der
wir hier reden arbeitet nun einwandfrei bzw. mit der jetzigen
Gangabweichung kann ich leben.
Wenn ich die anderen beiden Uhren in Betrieb nehme werde ich natürlich
berichten.
Peter R. schrieb:> Solange der Ärger nur bei diesem einen Quarz vorliegt, ist es doch> Unsinn, über 100 Beiträge lang Vermutungen rauszulassen.
Da es sich hier um ein Forum handelt, ist die Hauptaufgabe dieses Forum
Diskussionen zu führen, ob sie sinnvoll sind oder nicht.
Also ich für meinen Teil habe gelernt, dass man auf jedenfall die
Lastkapazitäten prüfen bzw. die Schwingfrequenz prüfen sollte, wenns
etwas ganauer sein muss.
Ingo
Ingo schrieb:> Also ich für meinen Teil habe gelernt, dass man auf jedenfall die> Lastkapazitäten prüfen bzw. die Schwingfrequenz prüfen sollte, wenns> etwas ganauer sein muss.
Gut! Die letzte Schaltung (Serienproduktion) hatte einen solchen Fehler.
Kondensatoren neu berechnet und schon ging's. Kamen noch andere Fehler
dabei raus.
rgds
Thomas R. schrieb:> Die Ursache dafür ist meistens die, dass die Quarzscheibe schief> eingebaut ist und dadurch das Gehäuse berührt - siehe Foto.
Glaube ich in dem Fall nicht, denn der eierte genau auf einer
seiner Nebenresonanzen rum.
So, ich habe die anderen Beiden Uhren auch in Betrieb genommen. Sie
zeigten selbes Verhalten und liefen nur mit 4,7pF genau < 15ppm. Also
stimmt die Aussage.mit 64pF nicht.
Ingo