www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2 Uhren synchron halten


Autor: Steffen Mdv (steffenmdv)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe folgendes vor:
Zwei unabhänige MC (PICs) sollen Ereignisse messen und sich anschließend 
darauf per Funk (RFM12-Module) verständingen wessen Ereignis zuerst 
auftrat.
Die Genauigkeit soll dabei im ms Bereich liegen, d.h. in einer Stunde 
sollte der Fehler maximal 5ms betragen.

Ich habe dazu folgende Idee und bitte um Eure Meinungen:

1. Jeder PIC bekommt einen sehr genaue Zeitgeber (ca. 2ppm) Ich habe bei 
Maxim den DS32KHZ und DS4000 (10MHz) gefunden die das erfüllen würden. 
(btw. Kennt jemand dafür eine Bezugquelle?)
Am Anfang sychroniesiere ich die Module über ein Kabel und lasse einen 
Zähler mitzählen. Tritt ein Ereigniss auf sende ich das dem anderen 
Modul mit dem aktuellen Zählerstand. Falls das 2. Modul auch ein 
Ereigniss registriert hat vergleicht es den empfangenen und eigenen 
Zählerstand und weiß wer zuerst etwas registriert hat.

2. Möglichkeit: Synchronisation über Funk. Ich würde nur recht genaue 
Quarze benutzen (10-20ppm sind wohl verfügbar, ggf. messe ich sie vorher 
durch oder so) und versuche ein Protokoll für die Synchronisation über 
Funk zu implementieren, das etwa jede Minute ausgeführt wird. Dabei muss 
ich nur irgendwie eine mögliche Verzögerungszeit der Funkübertragung 
herausbekommen. Eventuell könnte ich auch eine "Basisstation" nehmen die 
beiden Modulen etwas sendet.

Hat jemand weitere Ideen oder Anregungen?

Gruß, Steffen


Autor: katzeklo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hälst du davon, jedem ein eigenes kleines DCF-Modul zu spendieren?

Autor: katzeklo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hälst du davon, jedem PIC ein eigenes kleines DCF-Modul zu 
spendieren?

Autor: Schlumpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Google mal IEEE 1588. Da haben sich schon viele schlaue Leute nen Kopf 
drüber gemacht, wie sowas vom Prinzip funktioniert.

Genaugenommen muss dein Quarz gar nicht so genau sein.
Du kannst ja die "Geschwindigkeit" der Slave Uhr regeln, indem du in 
zyklischen Abständen die Aktuelle Master-Uhrzeit übermittelst und aus 
der Differenz den Gangunterschied deiner Uhren rausrechnest und mit 
diesem Ergebnis die Slave-Uhr langsamer oder schneller laufen lässt.

Ist das System eingeschwungen, so sollte die Abweichung relativ gering 
sein.
Voraussetzung ist, dass die Latenzzeit deiner Übertragungsstrecke 
einigermassen konstant ist, denn sonst bekommst du ständig Sprünge auf 
deinen Regler

Autor: PeterL (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2ppm sind aber schon 5,6msec / Std
und das pro °C ( Quarzofen verwenden !)

wenn es der Empfang zulässt nimm DCF77 Phasensynchron

Peter

Autor: steffenmdv (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hinweise.

DCF77 Empfänger hatte ich vorher schon ausgeschlossen - weil ich nicht 
wusste dass man damit so genaue Zeiten erhalten kann. Werde ich aber 
trotzdem nicht verwenden, weil ein kontinuierlicher Empfang nicht 
sichergestellt ist.

Das in IEEE 1588 beschriebene Protokoll ist im Prinzip genau das was ich 
machen wollte. Da werde ich mich wohl etwas einarbeiten.

Gruß, Steffen

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab sowas über IEEE 802.15.4 Funk realisiert. Mit dem CC2420, der 
hat einen Hardware-Ausgang, wann der Start Frame Delimiter empfangen 
bzw. gesendet wurde. Genauigkeit der Synchronisierung ca 5µs direkt 
danach. Sync läuft über die Capture-Funktion des MSP430. Vielleicht 
kannst du ja auf deinem Funkmodul einen ähnlichen Ausgang finden...

Autor: blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst dir auch mal NTP (Network Time Protocol) anschaun. Ich weiß 
nicht ob das für deine Anwendung genau genug wird, aber ich denke schon. 
Und dieses Protokoll wurde extra auf schwankende Ping-Zeiten optimiert. 
Weitere Vorteil: Du findest fertige Software dazu im Netz. (Sowohl 
Server als auch Client)

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.