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
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
2ppm sind aber schon 5,6msec / Std und das pro °C ( Quarzofen verwenden !) wenn es der Empfang zulässt nimm DCF77 Phasensynchron Peter
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
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...
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)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.