www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Gang(un)genauigkeit Quartz?


Autor: Martin M. (mmc8801)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es geht nochmal um meine Skizeitnahme.

Hab ja schon vor ein paar Wochen mal angefragt wegen der 
Funkübertragung; die XBee-Module sind mittlerweile da und schauen recht 
vielversprechend aus.

Jetzt geht es darum, die beiden Uhren am Start und Ziel miteinander zu 
synchronisieren.

Dazu habe ich 2 ATmega88 genommen, auf denen jeweils dieser Code
#include <avr/io.h>

int main(void)
{
  DDRC = 0xFF;

  long i;

  while(1)
  {
    PORTC = 0xFF;
    for (i=0;i<50;i++) asm("NOP");
    PORTC = 0x00;
    for (i=0;i<950UL;i++) asm("NOP");
  }
}

läuft.

Die µC laufen mit Ext. Crystal Oscillator, 11.0592 MHz.

Am Port C (PC5) hängt jeweils ein Oszi-Tastkopf, Trigger ist auf CH1.

Ich wollte dann eigentlich nach einiger Zeit am Oszi die 
Gangungenauigkeit ablesen, aber irgendwie läuft das ganz schnell 
auseinander, siehe dieses Video:

http://www.myvideo.de/watch/6765009/Quartz_Ganggen...

Ich hätte irgendwie erwartet dass die beiden Impulse sehr langsam 
auseinander "driften"...

Hab ich irgendwo einen Denkfehler oder ist so ein Quartz wirklich so 
ungenau?

Wenn ja was hätte ich für Möglichkeiten 2 Uhren zu einem Zeitpunkt x zu 
synchronisieren, so dass nach x+2h der Gangunterschied <10ms bleibt?

Danke,
Martin

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,

das mit dem Weglaufen ist völlig OK.

Der Quarz ist Bestandteil eines Schwingkreises.
Wenn er genauer sein soll muß man ihn Abgleichen.
Bei Quarz an µC wird ein Trimmkondensator verwendet
und die Frequenz darf durch die Messung nicht beeinflußt
werden (nicht einfach mit Tastkopf an den Quarz!).

Aber du hast doch Funkverbindung. Dann kann ein Atmel (master)
dem anderen (Slave) sagen :"Beim nächsten "A" ist es 12:32:00"

Der Slave korrigiert dann seine Uhr nach. Läßt sich ja periodisch
wiederholen und wenn eine Übertragung ausfällt macht es auch
nichts.

avr

Autor: Martin M. (mmc8801)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo avr,

danke für deine Antwort.

Das mit dem Trimmkondensator hört sich gut an.

Wie stabil ist das Ganze dann d.h. wie oft muss ich "nachkalibrieren"? 
Oder ist das eine einmalige Sache?

Wegen der Funkverbindung - das Ganze läuft über XBEE Module; ich denke 
nicht dass die echtzeitfähig sind; die haben ja zig Layer dazwischen bis 
sie irgendwann mal schicken; die prüfen ob das Band frei ist usw...also 
zum Synchronisieren glaub ich ist das nicht gut...

Würde es was helfen, einen Quartzofen zu benutzen?

Danke,
Martin

Autor: Holli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

in Deutscheland Quarz und nicht Quartz. Zu Deinem Problem. Schon mal mit 
der Triggerung des 2. Kanals gespielt?


Holli

Autor: Martin M. (mmc8801)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Holli, OK dann Quarz.

Was meinst du mit der Triggerung des CH2?

Wenn ich auf CH2 triggere schaut das Oszibild genauso aus, nur dass dann 
CH1 durchläuft...

Wenn beide Controller synchron laufen würden, müsste das Bild doch 
stabil sein oder?

Martin

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem Trimmkondensator ist nur so gut wie
die Messgeräte die verwendet werden. Da bei dir
jedoch wohl sehr unterschiedliche Temperaturen
herschen dürfte DCF besser sein.
Dann laufen die Atmel auch syncron.

Evtl. mit diesem einfachen Modul (im Forum oft eingesetzt):
http://www.pollin.de/shop/shop.php

avr

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fehlt noch: Best.Nr. 810 054  DCF-Modul

Autor: Martin M. (mmc8801)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du meinst die Bestell-Nr 810 054 von Pollin?

Krieg ich da auch eine absolute Genauigkeit zwischen den beiden 
DCF-Empfängern von <10ms hin?

Wenn ja wäre das die optimale Lösung...

Martin

Autor: Marko B. (glagnar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entscheidend ist die Absenkung der DCF Frequenz (77,5 kHz).
Der Empfänger macht daraus eine Flanke die du auswertest.
Die Flanken sollten bei 2 identischen Modulen fast syncron
sein (Streuung über Empfangsstärke möglich/wahrscheinlich).

avr

Autor: Sven L. (svenl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man auf die DCF-Flanken triggert, kann man Kurzzeitgenauigkeiten im 
Fehlerbereich 1*10^-6 erreichen.

Mein Frequenznormal besitzt einen OCXO (Quarzofen), der auf eine 
bestimmte Temperatur geregelt ist. Der Quarz im Inneren ist so 
geschliffen, dass sein Umkehrpunkt genau auf die Regeltemperatur fällt 
und die Drift nahezu vollständig kompensiert wird.

Koppelst Du die Phase eines solchen OCXO an einen DCF-Empfänger, kann 
man die Fehlerquote auf 1*10^-9 bis 1*10^-10 im Tagesmittel verringern.

Für Deinen Fall wären zwei DCF-Empfänger das Sinnvollste, damit die 
Uhren synchron laufen.

Jedoch müssen dann beide Geräte bei einer maximalen Uhrendifferenz von 
10 ms nicht weiter als rund 3000 km voneinander entfernt sein... Das ist 
doch machbar, oder? ;)

Gruß!

Sven

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Martin M. (mmc8801)

>Die µC laufen mit Ext. Crystal Oscillator, 11.0592 MHz.

>Am Port C (PC5) hängt jeweils ein Oszi-Tastkopf, Trigger ist auf CH1.

>Ich hätte irgendwie erwartet dass die beiden Impulse sehr langsam
>auseinander "driften"...

Naja, ein Quarz hat ohne Trimmer so um die +/-100ppm Frequenzfehler. 
D.h. nach 1/100ppm = 10000s ist dein 1. Quarz um 1s weggelaufen. Bei 
grösseren Frequenzen ist eine volle Periode schon schneller erreicht. 
Bei 1kHz schon nach 10s.

>Wenn ja was hätte ich für Möglichkeiten 2 Uhren zu einem Zeitpunkt x zu
>synchronisieren, so dass nach x+2h der Gangunterschied <10ms bleibt?

Das sind 1,4ppm. Schon recht sportlich. Dazu muss man auf jeden Fall den 
Quarz per Timmer abgleichen, wobei man aber NICHT direkt am Quarz messen 
darf. Man muss auf einem anderen Pin den Takt aus dem AVR führen, CLKOUT 
haben ja einige. Wenn nicht, muss man per OCP einen Takt erzeugen.

Wahrscheinlich ist DCF77 eine sinnvolle Lösung. Allerdings braucht man 
auch dort einen genauen lokalen Oszillator. Siehe [[  AVR - Die genaue 
Sekunde / RTC]]

MfG
Falk

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.