Gang(un)genauigkeit Quartz?

#1357720
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
1
#include <avr/io.h>
2

3
int main(void)
4
{
5
  DDRC = 0xFF;
6

7
  long i;
8

9
  while(1)
10
  {
11
    PORTC = 0xFF;
12
    for (i=0;i<50;i++) asm("NOP");
13
    PORTC = 0x00;
14
    for (i=0;i<950UL;i++) asm("NOP");
15
  }
16
}

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_Ganggenauigkeit_Versuch

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
Gast #1357750
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
#1357755
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
#1357818
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
#1358183
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren