Forum: Mikrocontroller und Digitale Elektronik DCF77 Schaltungsidee für PM


von Christian B. (casandro)


Lesenswert?

Servus,

die meisten billigen DCF77-Module führen ja nur eine AM-Demodulation 
durch. Die hat ja prinzipiell das Problem, dass sie nur auf ein paar 
Millisekunden genauer ist.

Mein Vorschlag wäre es, das phasenmodulierte Signal auszuwerten. Das 
könnte eventuell sogar noch billiger möglich sein, da man keinen AGC 
braucht.

Die Idee ist wie folgt. Man baut aus der Spule und einer Kapazität einen 
abgestimmten Schwingkreis. Gegebenenfalls schickt man das Signal noch 
durch zusätzliche Bandpassfilter um die Trennschärfe zu erhöhen. Dann 
schickt man das Signal durch einen Vergleicher der die Nulldurchgänge 
bestimmt.
Das dabei entstehende Rechtecksignal schickt man in einen 
Mikrocontroller.

Im Mikrocontroller sorgt der Impuls dann dafür dass der Timer seinen 
Wert speichert, und ein Interrupt ausgelöst wird. Bei diesem Interrupt 
bestimmt man dann den genauen Zeitpunkt des Nulldurchgangs. Daraus 
bestimmt man die Frequenz und durchschnittliche Phasenlage des DCF77 
Signals in Taktzyklen des Mikrocontrollers.

Hat man die Durchschnittsphase und die Frequenz bestimmt, so kann man 
den "Soll"-Zeitpunkt des nächsten Nulldurchganges bestimmen. Durch die 
Phasenmodulation ist dieser Nulldurchgang um 13?Grad in eine Richtung 
verschoben. Diese Zeitdifferenz speichert man nun als d[t]. (das kann 
man sehr effizient machen)

Weiter bestimmt man noch das die Summe über alle Zeitdifferenzen d[t-x] 
x=0..119. Erreicht diese Summe einen Extremwert, so hat man ein Bit des 
Pseudozufallszahlengenerators. Dieses Bit kann man dann abspeichern.

Immer wenn solch ein Bit ankommt, speichert man es in einem Array mit 
512 Elementen und korreliert dieses Array mit der veröffentlichten 
Pseudozufallszahlensequenz. Findet man eine starke positive oder 
negative Korrelation gefunden, so hat man ein Bit des DCF77 Signales 
gefunden, und somit auch eine Sekunde.

Weiter kann man dann sogar noch zurückrechnen, wann die Sekunde genau 
begann, und ggf mit dem Timer ein PPS Signal erzeugen.

von Achim M. (minifloat)


Lesenswert?

Wozu der ganze Aufwand?
Mit GPS gibt es übrigens auch ein genügend genaues Zeitsignal.
mfg mf

von Christian B. (casandro)


Lesenswert?

a) 99% der billigen GPS Empfänger geben die Zeit nicht preis, die haben 
keinen PPS Ausgang. Und das was auf der seriellen Schnittstelle raus 
kommt ist häufig bis zu einer halben Sekunde verzögert. Das bringt also 
nicht wirklich was.

b) GPS funktioniert nur im freien zuverlässig. Langwelle geht auch noch 
in einer Kiste die 2 Meter im Boden vergraben ist. :)

c) Der Aufwand ist relativ klein, eine Spule, ein Kondensator, ein OPV 
und ein Mikrocontroller.

von Harald Wilhelms (Gast)


Lesenswert?

Christian Berger schrieb:

 DCF-Empfänger:

> c) Der Aufwand ist relativ klein, eine Spule, ein Kondensator, ein OPV
> und ein Mikrocontroller.

...wobei das ganze DCF-System nie für Genauigkeiten besser als
einige ms konzipiert war. Das scheitert schon daran, das es
Verzögerungen auf der Funkstrecke gibt, die auch nicht konstant
sind. Die Langzeitstabilität dagegen ist execellent. :-)
Gruss
Harald
PS: Nur heute Nacht gibts einen "Fehler" von einer Stunde. :-)

von Christian B. (casandro)


Lesenswert?

Naja die PTB spricht da eher von 100 us bei der AM-Demodulation. So groß 
sind die athmosphärischen Schwankungen auch nicht.

Und im Vergleich zu den Fehlern die man bei einem GPS-Empfänger ohne PPS 
Signal hat ist das nichts. Ebenso nichts im Vergleich zu billigen DCF-77 
Empfängern mit bis zu 100 ms Fehler.

Ja, der dämliche Fehler heute Nacht wird uns wohl noch lange erhalten 
bleiben.

von Chris (Gast)


Lesenswert?

Bei einem breitbandigem Empfänger hat man eine Genauigkeit von +-5ms
und normalerweise empfängt man das Signal zwischen 10-30%, und das 
benutzt man, um das Quarz welches normalerweise auf konstanter 
Temperatur gehalten
wird, nachzuregeln. Ist aber dank GPS inzwischen nur eine Backuplösung, 
da
auch jede so billiges Modul einen PPS Ausgang besitzt mit einer 
Auflösung <1uS. Trotzdem ist ein DCF Signal sinnvoll, da das GPS Signal 
die UTC Zeit ja nur alle 12.5 Minuten ausgibt, der Rest ist ja GPS Time 
und stimmt mit der
UTC Time nicht überein, und generell bei einem Server, welcher ja mit 
UTC time läuft, ist es wichtig, wann die Sekunde nr 60 stattgefunden 
hat, gps
kann das nicht liefern, auch wenn es in Wirklichkeit 2 Minuten was 
liefert,
was aber nicht von günstigen Modulen ausgegeben wird.

von Chris (Gast)


Lesenswert?

Sorry, aber da musst du nochmals in deine Quellen nachsehen. Laut ptb
hat man mit phasenkorrelation eine Ungenauigkeit von +-5ms bei 
eintsprechen
breiter Bandbreite und steilen Flanken. Bei einem gerigen Abstand zum 
Sender
sind  +-2ms gegeben (260km ca). Andernfalls bei reiner AM Demodulation 
sowie
10Hz Bandbreite, wie sie bei üblichen DCF Modulen verwendet wird, sind 
es
+-0.1 Sek, also +-100mS und nicht uS, und +-100mS bedeuten einen Fehler 
von
200mS.

von 900ss (900ss)


Lesenswert?

Christian Berger schrieb:
> Mein Vorschlag wäre es, das phasenmodulierte Signal auszuwerten.

Ich finde das ziemlich interessant aber verstehe im Moment zu wenig von 
deiner Idee. Könntest du das Verfahren nochmal etwas genauer schildern?

900ss

von Christian B. (casandro)


Lesenswert?

Chris schrieb:
> da
> auch jede so billiges Modul einen PPS Ausgang besitzt mit einer
> Auflösung <1uS.

Ähm, das will ich sehen. Natürlich gibt es Module mit PPS Ausgang. Die 
kosten dann aber gleich ziemlich viel Geld und sind ohne Gehäuse. Die 
normalen Module, beispielsweise mit RS232 Anschluss sind fast alle ohne 
PPS.

Die Module in UMTS-Modulen haben auch fast nie PPS Ausgänge.

von Christian B. (casandro)


Lesenswert?

@900ss: Das DCF77 Signal besteht nicht nur aus einer 
amplitudenmodulierten Komponente, sonder auch aus einer 
phasenmodulierten Komponente, welche man deutlich genauer auswerten 
kann.

Normalerweise würde man erwarten, dass es deutlich einfacher ist ein 
amplitudenmoduliertes Signal auszuwerten als ein phasenmoduliertes. Dank 
Mikrocontrollern ist das aber nicht mehr so. Mann kann die Demodulation 
auch direkt durchführen. Dadurch kann man relativ einfach mit wenig 
Hardware und mehr Software die Zeit sehr genau erhalten.

von GPS (Gast)


Lesenswert?

Christian Berger schrieb:
> Chris schrieb:
>> da
>> auch jede so billiges Modul einen PPS Ausgang besitzt mit einer
>> Auflösung <1uS.
>
> Ähm, das will ich sehen. Natürlich gibt es Module mit PPS Ausgang. Die
> kosten dann aber gleich ziemlich viel Geld und sind ohne Gehäuse. Die
> normalen Module, beispielsweise mit RS232 Anschluss sind fast alle ohne
> PPS.
>
> Die Module in UMTS-Modulen haben auch fast nie PPS Ausgänge.

Mal zur Info: die Uhrzeit wird bei NMEA im Klartest ausgegeben. Da 
braucht man lediglich den String zu extrahieren und sonst nichts....

von Chris (Gast)


Lesenswert?

Auch die Module mit Gehäuse und Rs232 haben einen PPS Ausgang, nur muß 
man
den auch anschließen, es ist klar daß eine GPS Maus diesen nicht 
herausgeführt hat, er ist aber vorhanden und kann problemlos verwendet 
werden. Normalerweise kann er sogar mittels Transistor z.B. auf RI 
gegeben
werden.

von spess53 (Gast)


Lesenswert?

Hi

>Die Idee ist wie folgt. Man baut aus der Spule und einer Kapazität einen
>abgestimmten Schwingkreis.

Ich lasse mich gern belehren, aber ich bezweifle, das ein einfacher 
Schwingkreis einer Phasenänderung so einfach folgen kann.

MfG Spess

von 900ss (900ss)


Lesenswert?

Christian Berger schrieb:
> Das DCF77 Signal besteht nicht nur aus einer
> amplitudenmodulierten Komponente, sonder auch aus einer
> phasenmodulierten Komponente, welche man deutlich genauer auswerten
> kann.

Das ist mir bekannt. Aber die Beschreibung, wie du das auswerten 
möchtest ist etwas dünn, jedenfalls verstehe ich das nicht. Darum hatte 
ich dich gebeten, das genauer darzustellen. Und es wäre nett, wenn du 
das machst :-)

900ss

von Christian B. (casandro)


Lesenswert?

GPS schrieb:
> Mal zur Info: die Uhrzeit wird bei NMEA im Klartest ausgegeben. Da
> braucht man lediglich den String zu extrahieren und sonst nichts....

Ja, mit 4800 Bits pro Sekunde. Das sind 480 Zeichen pro Sekunde. Ein 
Datensatz hat ungefähr 60 Zeichen, das macht ungefähr einen Fehler von 
125 ms, weil man ja nicht weiß, welche Zeit denn genau gemeint ist, die 
zum Anfang der Zeile oder die zum Ende der Zeile.
Wenn mehrere Datensätze hintereinander gesendet werden kann der Fehler 
sogar noch größer sein, da der GPS-Empfänger die Datensätze ja 
zwischenbuffert.

Das Protokoll war nur zur Positionsbestimmung gedacht. Dass da noch eine 
Uhrzeit mit kommt ist ein kleiner Nebeneffekt. So weit wie ich weiß 
stimmt aber die Zeit mit der Positionsangabe überein. Das ist ja auch 
die Hauptanwendung.

Ganz anders ist natürlich die Situation, wenn man einen PPS Ausgang hat, 
aber den hat nicht jedes Modul. Besonders die billigen aus dem 
Konsumentensegment nicht.

von Chris (Gast)


Lesenswert?

Da muß ich dir Widersprechen, pps Ausgang habe auch die billigen.
Nenn mir ein Modul, welches es laut dir nicht hat.
UMTS Module bitte ausgeschlossen, denn die machen nur AGPS, und als 
solche
bekommen die nicht mal eine UTC Zeit vom GPS Message.

von spess53 (Gast)


Lesenswert?


von Christian B. (casandro)


Lesenswert?

900ss D. schrieb:
> Darum hatte
> ich dich gebeten, das genauer darzustellen. Und es wäre nett, wenn du
> das machst :-)

Gerne, zunächst verarbeitet man das das analoge Signal so weit, dass das 
DCF77 Signal mit Abstand das stärkste Signal ist. Zweckmäßigerweise 
macht man das mit Bandpässen. Man bekommt da dann einen Sinus mit 77,5 
kHz, der amplituden- und phasenmoduliert ist.

Dieses Signal schicke ich dann durch einen Komparator oder 
Begrenzerverstärker. Da kommt ein 77,5 kHz Rechtecksignal heraus, 
welches jedoch auch immer noch die Phasenmodulation drin hat. Sie zeigt 
sich dadurch, dass die Nulldurchgänge (=Flanken) zeitlich verschoben 
sind. Ich betrachte hier nur die Nulldurchgänge in eine Richtung, das 
alles geht aber auch mit beiden Richtungen.

Jetzt benutze ich den Mikrocontroller um die Zeitpunkte der Flanken zu 
bestimmen. Hat man die Zeitpunkte, so kann man den Zeitpunkt bestimmen, 
an dem das unmodulierte Signal einen Nulldurchgang hätte. Grob gesagt 
mittelt man einfach über die Zeiten. Jetzt kann man den unmodulierten 
Zeitpunkt mit dem Istzeitpunkt vergleichen und somit feststellen, wie 
die Phase verschoben wurde.

Die Phasen der Modulation bleibt bei DCF77 für 120 Zyklen gleich. Du 
musst feststellen können, wenn sie sich ändert. Grob gesagt geht das 
beispielsweise dadurch, dass man die letzten 120 Phasen"fehler" 
aufaddiert. Das macht man für jeden Nulldurchgang, eine Summe der 
Phasenfehler. Ändert sich die Modulation, so bekommt man hier einen 
Extremwert, sprich der Wert stieg beispielsweise vorher, und sinkt 
jetzt. Das kann man dazu benutzen um sich hier zu synchronisieren.
Worauf man sich hier synchronisiert sind die Ausgangsbits des 
Pseudozufallszahlengenerators des Senders. Durch die Summen bekommt man 
den Mittelwert über den Winkel der Phasenmodulation während dieses Bits, 
sowie die genaue zeitliche Position des Bits.

Diese Bits (512 pro Sekunde, die Sekunde wird nicht komplett genutzt) 
müssen nun mit der Pseudozufallsfolge korreliert werden. Da diese 
Zufallszahlenfolge nur 0 und 1 (bzw -1 und 1) enthält ist das relativ 
einfach. Man addiert und subtrahiert die Winkel der Phasenmodulation 
entsprechend der Pseudozufallsfolge. Dies macht man für jedes eingehende 
Bit und erhält dann, am Ende der Sequenz, einen starken Peak. Dieser 
Peak ist dann entweder positiv oder negativ und gibt an, ob das 
Nutzdatenbit 0 oder 1 ist. Das Datenformat hier ist im Prinzip identisch 
mit dem normalen AM DCF77 Format. Man bekommt also normalerweise jede 
Sekunde ein Bit, ich glaube die Minute wird auch durch eine unmodulierte 
Sekunde dargestellt.

Ich hoffe, das sollte zumindest einen groben Überblick gegeben haben, 
was willst Du denn genau wissen?

Hier übrigens mehr Infos zum Signal, und auch grobe Angaben zur 
Genauigkeit, die aber hier im Forum umstritten sind, und wahrscheinlich 
auch mit Vorsicht zu genießen sind.
http://www.ptb.de/cms/fileadmin/internet/fachabteilungen/abteilung_4/4.4_zeit_und_frequenz/4.42/dcf77.pdf

von Christian B. (casandro)


Lesenswert?


von 900ss (900ss)


Lesenswert?

Christian Berger schrieb:
> Man bekommt da dann einen Sinus mit 77,5
> kHz, der amplituden- und phasenmoduliert ist.

Hmmm.... da hab ich meine Zweifel. Wenn dem so wäre, dann brauchte man 
doch die Phasenmodulation nicht, dann konnte man doch auch die AM 
auswerten. Das Signal was du siehst nach dem Filter wird kaum ein Sinus 
sein, sondern etwas verrauschtes. OK hängt von der Bandbreite des 
Filters ab. Aber wenn die zu schmal wird, dann siehst du ja auch die 
Phasenmodulation nicht mehr (wenn ich das noch alles richtig verstehe).

Christian Berger schrieb:
> Ich hoffe, das sollte zumindest einen groben Überblick gegeben haben,
> was willst Du denn genau wissen?

Ich habe es jetzt schon fast gerafft :-) Mir war nicht klar, wo die 120 
herkommt, aber jetzt hab ich es. Das resultiert aus der Taktfrequenz des 
Schieberegisters. Ich muß mir das Verfahren nochmal ganz in Ruhe durch 
den Kopf gehen lassen.

Der analoge Teil und die Nulldurchgangserkennung muß natürlich gut sein, 
wenn die Phasenverschiebungen nicht verfälscht werden sollen.
Ob das so einfach ist?

Die Diskussion um GPS oder ob man es so genau haben muß ist mir 
eigentlich wurscht dabei. Ich finde es reizvoll das Maximum an 
Genauigkeit aus dem DCF-Signal herauszuholen.
Mit GPS hab ich auch schon mal gearbeitet. Wenn man immer denselben 
Empfänger hat, bekommt man eine brauchbare Genauigkeit hin, wenn man den 
zeitlichen Fehler zum Ausgabezeitpunkt des NMEA-Strings bestimmt und 
diesen als feste Konstante zur Fehlerkorrektur benutzt. Dann paßt das 
recht gut. Mit PPS geht es natürlich besser und einfacher.

Wenn du den Verstärker und Filter aufgebaut hast, welche das gewünschte 
Signal liefern, dann lass das bitte mal sehen hier.

Danke für die Erklärung.

von Chris (Gast)


Angehängte Dateien:

Lesenswert?

Zum PPS, diese beiden Empfängern (Ebay) haben pps Signale welche 
abgegriffen werden können (ttl). Auch wenn du selbst was baust musst du 
zum Lötkolben greifen. Zum DCF
Hier ein Bild des DCF Signals von irgendwo her im Netz, sind ADC Werte
von der Amplithude (rot) und der Phase(grün). Ein Pixel=1ms. Mehrere
Sekunden sind übereinander geplottet.

von Christian B. (casandro)


Lesenswert?

OK, und wo in dem Diagramm beginnt jetzt die Sekunde?

von 900ss (900ss)


Lesenswert?

Christian Berger schrieb:
> OK, und wo in dem Diagramm beginnt jetzt die Sekunde?

Ich würde sagen bei der ersten fallenden Flanke der Amplitude.
Mann erkennt sehr gut die "0" und "1" Impulse, die übereinander liegen. 
Und der Start liegt immer recht "genau" übereinander.
Was die Phase dazu sagt verstehe ich nicht.

Das DCF-Amplituden Signal sieht gut aus finde ich. Weiß nur nicht, was 
Chris damit sagen will.

von Christian B. (casandro)


Lesenswert?

Naja, bei solchen einfachen Dekodern gibt es natürlich eine gewisse 
Verzögerung zwischen dem Beginn der Sekunde und der fallenden Flanke. 
Wenn die genau definiert ist und sie konstant ist, dann geht das. Wenn 
die schwankt, dann nicht.

Es kann auch so gut aussehen weil auf die Flanke und nicht auf die wahre 
Sekunde getriggert wurde.

von 900ss (900ss)


Lesenswert?

Ja das ist war. Man müßte mehr Infos zu dem Bild haben.

von Tim (Gast)


Lesenswert?

Wird nicht das Zeitsignal amplitudenmoduliert und die Wetterdaten 
phasenmoduliert? Mit der Phasendemodulation bekommst du doch nur die 
Wetterdaten oder nicht?
Oder willst nur den exakten "Takt" haben?

von Chris (Gast)


Lesenswert?

Nein, die Wetterdaten werden auch AM-Moduliert.
Die Phatendaten dienen einmal dazu, das Signal zu validieren, bzw Fehler
zu korrigieren, wenn man einen schlechten Empfang hat.
Was drüber versendet wird, ist unklar. Derzeit verwendet der Wetterchip
keine Phaseninformationen. Es gibt noch eine weitere Datenübertragung
abgesehen vom PNG.
Zum Bild, das ist ca 1 Sekunde an Daten, immer am Sekundenanfang.
Verwendet wurde eine Breitbandantenne, 10khz-1Mhz mit low-pass Filter 
auf
ADC, welcher dann eine rekursive Bandpassfilterung macht, das Signal
runtermischt und dann integriert. Man erkennt sehr schon die 100/200ms
für die einzelnen Bits sowie auch as Trägersignal wenn bei ausbleibenden
Sekundendaten und auch die 25% Absenkung des Signals, zur Bildung eines
Normoszillator.

von Harald Wilhelms (Gast)


Lesenswert?

Tim schrieb:
> Wird nicht das Zeitsignal amplitudenmoduliert und die Wetterdaten
> phasenmoduliert? Mit der Phasendemodulation bekommst du doch nur die
> Wetterdaten oder nicht?

M.W. werden die Wetterdaten in den ersten 20 Bits jeder Minute
übertragen, die vorher mehr oder weniger unbenutzt waren. Leider
gibts da wohl keine dokumentierte Dekodierung.
Gruss
Harald

von 900ss (900ss)


Lesenswert?

Chris schrieb:
> Zum Bild, das ist ca 1 Sekunde an Daten, immer am Sekundenanfang.
> Verwendet wurde eine Breitbandantenne, 10khz-1Mhz mit low-pass Filter
> auf ADC....

Du hast oben zu dem Bild geschrieben: "irgendwo aus dem Netz". Du kennst 
aber die Stelle noch oder wießt du die Einzelheiten? Zeig mal bitte den 
Link. Ich finde das auch interessant.

von Frank R. (zausel)


Lesenswert?

Hallo Christian,
ich habe auch schon einmal darüber nachgedacht das phasenmodulierte 
Signal des DCF77 mit einem kleinen Mikrocontroller auszuwerten. Auf den 
ersten Blick sieht die Sache recht einfach aus, aber es gilt dann doch 
einige Klippen zu umschiffen.
Nehmen wir zum Beispiel die Messung der Frequenz zur Bestimmung der 
unmodulierten Phase ("Durchschnittsphase"):
Bei 77,5kHz ist die Periodendauer 12,9ys. Der Phasenhub von +/- 13° 
entspricht demnach rund +/- 466 ns. Angenommen die Messung erfolgt mit 
einem Zähler der mit 16 MHz inkrementiert, dann hat der Zähler eine 
Periodendauer von 62,5 ns. (Zwischen negativem und positivem Phasenub 
liegen also gerade mal sieben bis acht Zählschritte.)
Auf Grund der diskreten Messung der Periodendauer liegst Du im 
schlimmsten Fall um +/- 0,5 Zählertakte neben dem wirklichen Meßwert. 
Das bedeutet, schon nach ca. 15 Perioden DCF77-Signal ist dein 
"Norm-Nulldurchgang" um den zu messenden Phasenhub davon gewandert.
Mit einem "normalen" Zähler ist das also nicht realisierbar. Meine Idee 
war intern einen genaueren (Festkomma-)Wert für die Periodendauer zu 
ermitteln und diese fortlaufend mit dem Zähler abzugleichen. Jedes mal 
wenn der Fehler zwischen berechenter Periode und Zählerdurchlauf größer 
0,5 Takte wird müßte ein "Schalttakt" eingefügt werden.
Leider ist das Projekt bei mir nie aus der Planungsphase heraus 
gekommen.
Vielleicht wird es ja diesmal was mit der Realisierung. :-)

von Wolfgang Horn (Gast)


Lesenswert?

Christian Berger schrieb:
> die meisten billigen DCF77-Module führen ja nur eine AM-Demodulation
> durch. Die hat ja prinzipiell das Problem, dass sie nur auf ein paar
> Millisekunden genauer ist.
>
> Mein Vorschlag wäre es, das phasenmodulierte Signal auszuwerten. Das
> könnte eventuell sogar noch billiger möglich sein, da man keinen AGC
> braucht.

Hi, Christian,

ja, mit einem Schwingkreis und Drumrum kannst Du Phasensprünge erkennen.
Genauso auch mit einer PLL und Auswertung des Fehlersignals.

Noch genauer bist Du, wenn Du die Nulldurchgänge der Trägerfrequenz 
auswertest.
Wenn Du die Trägerfrequenz mit einem Trigger digitalisierst, dann hast 
Du immer noch Phaenschwankungen drin wegen AGC, Ausbreitung und 
Störungen.
Die sollten minimal sein bei Sekundenpuls in der Zeit vor dem Einsatz 
der PSK.

Bleibt die Frage, welcher Nulldurchgang gehört zur Sekundenmarke? Nun, 
dazu habe ich zwei RC-Tiefpässe uterschiedlicher Grenzfrequenz verwendet 
und darauf einen Trigger. Dessen Signal streut auch, läßt sich aber über 
Minuten und Stunden mitteln.

Ciao
Wolfgang Horn

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
Noch kein Account? Hier anmelden.