Ich verwende das DCF77-Modul CANADUINO® Atomic Clock AM Receiver Kit V4.
Angeschlossen wurde die Versorgungsspannung 5V und Masse.
Alle weiteren Pins außer OUT blieben unbeschalten.
Ich habe das Signal an OUT oszilloskopiert (siehe Bilder) und weiss gerade nicht
was ich hier falsch mache.
Sieht nach durch lokale Störer gestörtem Signal aus. Verbessere die Empfangssituation.
Suche einen besseren Platz für die Antenne, bzw. das Assy.
Störungen können durch den Messaufbau selbst entstehen. (Oberwellen von Röhrenhochspannungswandler und SNT des Oszilloskops.)
Einfach überprüfen kannst Du die saubere Taktung auch durch die LEDs. Dazu brauchst Du nicht unbedingt ein Oszilloskop.
Hmm ok, Danke erstmal, ja die Antenne liegt nur etwa 5cm erhöht auf meinem Tisch,
muss da wohl mal paar längere Kabelchen an die Pins der Dekoder Platine anbringen..
Sieht nach durch lokale Störer gestörtem Signal aus. Verbessere
die Empfangssituation.
Suche einen besseren Platz für die Antenne, bzw. das Assy.
Oder einfach zuerst mal: Warte noch eine Weile. Diese einfachen AM-Empfänger brauche oft längere Zeit, um ihre AGC korrekt einzupegeln.
Erst, wenn sich auch nach 'ner Minute oder so immer noch kein korrekter Sekundentakt ergibt, dann lohnt es, den von Karl B. vorgeschlagenen Ansatz weiter zu verfolgen.
Ok, ja, ich meinte Kabelchen an den OUT Pin und den versorgungspins
der Platine, nicht längere Kabelchen zur Antenne.
Ja habe schon ein Weilchen gewartet.
Verwendet habe ich uC-seitig den DCF77 Code von Ulrich Radig,
hier die Ausgabe auf dem UART:
Kann man der Messung trauen? Ich lese da einen Hi-Pegel von 0,5V ab.
Du solltest übrigens die Tastkopfeinstellungen und die Zeitbasis des Oszis mit in den Screenshot aufnehmen.
muss da wohl mal paar längere Kabelchen an die Pins der Dekoder Platine
anbringen
Da klemmt viel mehr. Da ist nicht ein einziger sinnvoller Sekundenimpuls zu sehen.
Versorge das Ding mal aus Batterien. Der Versorgungbereich ist ja immerhin 2V-5,5V.
das ist kein Fehler von dir. Ich habe das DCF-77-Modul von Pollin, und mein Oszillogramm sieht eigentlich genauso aus. Da sind einfach durch die HF-Einwirkungen von Schaltnetzteilen und anderen Störquellen zu viele Peaks, welche den Langwellenempfänger stören.
Ich habe mir auch mal eine Funkuhr gebaut. Die Pulse werden durch eine LED angezeigt, und die flackern auch mal zwischen den Pulsen.
Ich werte die Pulse mit einem Atmega 16 aus, ist übertrieben, wollte da aber noch weitere Features damit steuern. Habe da auch eine Duo-LED, die mir sagt, ob das Funktelegramm störungsfrei empfangen wurde, oder nicht. Leuchtet sie grün dann wurde die letzte Minute fehlerfrei empfangen, bei rot gab es Störungen. Auf dem LC-Display werden die letzten 8 Bits angezeigt, die wandern kontinuierlich durch, und auch da sieht man Störungen, wenn ein Bit nicht sichtbar von vorne nach hinten durchgeschoben wird.
Bei idealem Empfang synchronisiert sich die Uhr jede Minute, da Energiesparen nicht nötig ist, die Uhr hängt am Netz.
Der Aufbau ist auch nicht wirklich ideal. Die Ferritantenne bekommt sicher auch Schläge vom Prozessor, und den Leitungen zum LCD ab. Dann steht sie noch keine 80 cm von einem TV und zwei Monitoren samt PC entfernt und wird von einem Schaltnetzteil (Handylader) versorgt. Aber dennoch synchronisiert sie sich alle paar Minuten, ca 200 km vom DCF-77-Sender entfernt und quer zu ihm aufgestellt.
Nachts ist fast durchgehend guter Empfang.
Daher: Drehe mal die Antenne und beobachte das Oszillogramm. Meine Armbanduhr braucht auch manchmal 10 Minuten, bis sie sich Synchronisiert hat.
Ja na gut, mein Labornetzteil (Schaltnetzteil) steht in 50 cm Entfernung,
ich habe schon versucht die Antenne grob Richtung Frankfurt auszurichten,
leider ist diese Richtung gerade die Richtung durch meinen Wohnblock :-/
Auch habe ich probiert die Antenne gegenüber des Steckbrettes etwas anzuheben,
durch die kurzen Kabelchen konnte ich die Antenne aber nur 5cm höher stellen.
Mein doch eher billiger Radiowecker Mebus 41460 hat anscheinend nicht
solche Probleme - steht aber halt im Schlafzimmer weiter weg von Störquellen.
Na gut, ich Danke erst einmal Allen und melde mich wieder wenn
ich meinen Testaufbau verbessert habe.
Die Periodendauer wurde mit der Linealfunktion ausgemessen,
wie auf den Screenshots zu sehen.
Verwendet wurde ein USB Oszilloskop,
ja die Legende hätte ich noch mit screenshotten können,
richtig, aber die Periodendauer wurden eben wie gesagt mit der
Linealfunktion ausgemessen.
Die ungleiche Länge ist eindeutig zu erkennen,
beim regulären DCF77 Signal müsste die ja immer 1 Sekunden betragen.
ich habe schon versucht die Antenne grob Richtung Frankfurt
auszurichten,
Die sollte quer zur Richtung stehen.
Genau. Der Witz ist hierbei: das Maximum ist nicht sehr ausgeprägt, +-45° vom Maximum spielen nur eine untergeordnete Rolle. Aber das Minimum ist doch sehr ausgeprägt. Also gerade rund um die 90° ist wirklich Ebbe.
Das DCF-Modul braucht nur 3 Leitungen: GND, +5V und Signal.
Nimm 5 bis 10 Meter Kabel und halte VIEL Abstand von deiner Elektronik und dem DCF-Modul.
Dann darf da pro Sekunde nur ein Impuls sichtbar sein, entweder 100 ms lang ode 200 ms lang (+/- 30 ms), aber auf keinem Fall weitere Impulse dazwischen.
Das Ausgangssignal vom DCF-77-Empfänger von Conrad 2014 / Eingeätzt: BA 20084A0
Ausgangssignal in Ruhe = Low,
Die empfangenen Taktzeitabstände sind 0.9964 ... 1.0032 s,
Die Pausen bei der vollen Minute sind 1.9981 ... 1.9991 s
Die Einschaltzeiten "Kurz", Nennwert 0.1s sind 0.083459 ... 0.091393
Die Einschaltzeiten "Kurz", Nennwert 0.2s sind 0.181608 ... 0.186976
Das Modul sendet (im ) folgende - Rohdaten-Werte
Also:
für 0 nicht 0.1 s, sondern 0.144001 s ... 0.148603 s
für 1 nicht 0.2 s, sondern 0.188666 s ... 0.192470 s
Das liegt außerhalb üblicher Spezifikationen, meines liefert 118 bzw 219ms - den zugehörig älteren Thread finde ich nicht wieder. Das ist aber garnicht der Punkt hier, die Sekunde wird durch die fallende Flanke markiert und wiederholt sich in exakt dieser Zeit. Das Gezappel in Dirks Grafiken deutet auf Störer in der Nähe hin, die kein Empfangsmodul der Welt wegzaubern kann.
das ist kein Fehler von dir. Ich habe das DCF-77-Modul von Pollin, und
mein Oszillogramm sieht eigentlich genauso aus. Da sind einfach durch
die HF-Einwirkungen von Schaltnetzteilen und anderen Störquellen zu
viele Peaks, welche den Langwellenempfänger stören.
Das Canaduino Modul gibts in zwei Versionen, für 60 kHz und dür 77,5 kHz.
Ist es auch die richtige, also für 77,5 kHz?
Ein 60 kHz Modul würde hier nur Störungen empfangen.
Zum anderen entnehme ich der Anleitung, daß der Filterquarz für die jeweilige Empfangsfrequenz nur mitgeliefert würde und noch einzulöten sei.
Ist das auch geschehen?
Wenn man den Pin 6 (LED) des Moduls mit GND verbindet, aktiviert man LEDs an verschiedenen Signalen, auch am Empfängrr-Ausgang.
Das würde ich mal machen und das Modul mit zwei Mignonzellen in Reihe versorgen und dann mal in der Wohnung herumsuchen, ob sich irgendwo eine sauber blinkende Ausgangs-LED zeigt.
Mein doch eher billiger Radiowecker Mebus 41460 hat anscheinend nicht
solche Probleme - steht aber halt im Schlafzimmer weiter weg von Störquellen.
Dem reicht es aus, wenn er mitten in der Nacht, wenn der EMV-Störpegel am niedrigsten ist, ein korrektes Telegramm empfängt und die Zeit syncronisieren kann. Den Rest des Tages läuft er dann mit seinem Quarz.
Zum anderen entnehme ich der Anleitung, daß der Filterquarz für die
jeweilige Empfangsfrequenz nur mitgeliefert würde und noch einzulöten
sei. Ist das auch geschehen?
Ich vermute mal ja.
Wenn man den Pin 6 (LED) des Moduls mit GND verbindet, aktiviert man
LEDs an verschiedenen Signalen, auch am Empfängrr-Ausgang.
Das würde ich mal machen und das Modul mit zwei Mignonzellen in Reihe
versorgen und dann mal in der Wohnung herumsuchen, ob sich irgendwo eine
sauber blinkende Ausgangs-LED zeigt.
Das ist ebenfalls ein sehr guter Tipp. Man erkennt an der LED sogar einigermaßen gut wenn das Signal gestört ist. Wenn es störungsfrei kommt kann man sogar "H" und "L" unterscheiden. Man erkennt natürlich auch die 59te Sekunden, da bleibt die LED aus.
Ich verwende das DCF77-Modul CANADUINO® Atomic Clock AM Receiver Kit V4.
Angeschlossen wurde die Versorgungsspannung 5V und Masse.
Alle weiteren Pins außer OUT blieben unbeschalten.
Ich habe das Signal an OUT oszilloskopiert (siehe Bilder) und weiss
gerade nicht was ich hier falsch mache.
Hallo Dirk,
dir wurde ja schon einiges geschrieben. Am interessantesten ist der Kommentar von Thorsten S.
Vor einigen Monaten habe ich mir auch einige der Module gekauft. Aufgrund deines Threads habe ich nun ein Modul in Betrieb genommen und am Picoskope getestet. Für meinen Test habe ich den Anschluss LED, wie von Thorsten S. kommentiert, auf GND gelegt. Das Modul brauchte ca. 1 Minute, dann fing die LED OUT an zu blinken. Den Rest zeigen meine Screenshots. Ich konnte einwandfrei H und L delektieren, ebenso die 59te Sekunden. Das Modul liefert am Ausgang 4,9V. Pullup bzw. Pulldown Widerständen sind nicht erforderlich. Die Ausgängen werden von einem 74HC14 bedient, der treibt 20mA in jede Richtung.
Der Screenshot "Atomic-V4-59s" zeigt die 58te und 59te Sekunde, wobei in der 59ten keine Absenkung erfolgt.
Ich versorge die Schaltung mit 5V aus einem Korad Netzteil. Der Test fand im Hobbykeller statt.
Deine Messungen sind leider Alle unplausibel. Du misst z.B. 161,4ms. Das ist auf DCF77 bezogen kein H und kein L. Wenn die Messung korrekt wäre müsstest Du 1000ms messen.
Oft ist der Störnebel zu groß. Ohne groß zu überlegen würde ich erst mal einen besseren Standort für den Test suchen. Mein Empfänger funktionierte auch nur auf dem Fensterbrett.
Die Quartz Variante der Boards habe ich kontrolliert, sie stimmt,
ist allerdings wirklich schwer mit bloßem Auge zu erkennen.
Testaufbau war auf einem Tisch, Arduino u. DCF77-Board in einem
Steckbrett, verbunden mit Kabelchen, die Antenne ca. 5cm erhöht.
Versorgt wurde das ganze mit einem Labornetzteil Typ Manson NSP2050.
Gemessen wurde mit einem USB Oszilloskop, ja der Tastkopf war in der SW
nicht auf 1:10 eingestellt.
Ich vermute die Störungen waren zu groß und die Abstrahlung des Netzteiles und
die Ausrichtung und Position der Antenne waren nicht gut.
Meinen Radiowecker stellte ich testweise auch auf die Position meines Steckbrettes
und er konnte sich nach 5 Minuten noch nicht synchronisieren.
Danach stellte ich den Wecker auf eine ca. 50cm hohe Pappkiste und schaltete
das Netzteil aus und er konnte sich nach ca. 3 Minuten synchronisieren.
Meine naive Hoffnung war dass die Logik auf dem Board einen Eingangsfilter hat
der anderen Frequenzen wegfiltert. Habe keine große Ahnung von
Radiotechnik und diese Annahme war wohl schlichtweg falsch.
Ich werde bei Gelegenheit die Messungen mit besser platzierter Antenne und einer
Speisung mit Batterien widerholen und dann mal zeigen was dabei rauskommt.
Meine naive Hoffnung war dass die Logik auf dem Board einen
Eingangsfilter hat
der anderen Frequenzen wegfiltert.
Auch ein schmalbandiges Eingangsfilter nützt nichts, wenn die Empfangsfrequenz selbst zu sehr gestört ist.
Je nach Standort kann es sein, dass das DCF77-Signal nachts besser ankommt. "Antenne nach Frankfurt ausgerichtet" heißt, Antennenstab quer zur Richtung ;-)
Auch ein schmalbandiges Eingangsfilter nützt nichts, wenn die
Empfangsfrequenz selbst zu sehr gestört ist.
Für Empfangstest benutzte ich einen Direktumsetzer, später einen Superhetempfänger mit BFO.
So kann man das Signal der Zeitzeichensender hörbar machen.
Im ersten Audiobeispiel ist das Signal durch ein Schaltnetzteil in der Nähe der Antenne gestört.
Im zweiten Beispiel ist der DCF77 Empgang (und im Hintergrund noch HBG 75 kHz damals) sauberer und decodierfähig.
So kann ich ganz leicht mit dem batteriebetriebenen DCF77-Empfänger in der Wohnung herumgehen, und schnell den besten Standort ausfindig machen.
ciao
gustav
P.S.: Bei MSF60 hört man im Sommer die Kracher von Gewittern deutlich über dem gewünschten Signalpegel, die dann die eigentliche Ursache für schlechte Decodierbarkeit sind. Nicht nur SNTs.
Es gibt drei Versionen:
https://www.mas-oy.com/portfolio/mas6180b/
MAS6180B 1.1V-3.6 V Datasheet (Discontinued soon)
MAS6180C 1.5V-5.5V Datasheet (Obsolete)
MAS6180D 1.1V-5.5V Datasheet
kurze Frage: Was passiert, wenn eine Störung angezeigt wird?
Zeigt die Uhr bei rot leuchtender LED die falsche Zeit an oder was wird
angezeigt?
Nein, die läuft dann über die Taktfrequenz des Prozessors weiter. Die LED habe ich nur verbaut, weil noch Ports frei waren, und es für mich interessannt war, wie zuverlässig das Signal decodiert wird, also nur eine Spielerei.
Wenn die rot leuchtet, zeigt die Uhr auch in der vierten Zeile des LCD "Warten auf DCF-77" an, bei grün einen kleinen symbolischen Funkturm.
Nein, die läuft dann über die Taktfrequenz des Prozessors weiter.
Wenn die rot leuchtet, zeigt die Uhr auch in der vierten Zeile des LCD
"Warten auf DCF-77"
Interessehalber:
a) Nach welchen Kriterien wird ermittelt, ob die rote LED leuchten soll, also wie wird festgestellt, ob das aktuelle Telegramm falsch oder richtig ist?
bzw.:
b) Läuft die Uhr in erster Linie mit der Taktfrequenz und wird, wenn das empfangene Telegramm als richtig eingestuft wird, die "Prozessorzeit" überschrieben?
Schau Dir die kursierenden, uralten ASM-Programme einmal im Detail an.
Dann wirst Du feststellen, dass eine Unstimmigkeit bei der Parityauswertung ein "Flag" setzt. Das Error-Flag wird in der Main-Routine ausgewertet. Hier das Reagister r19 auf Null getestet.
Es läuft der Timer Interrupt weiter. Es wird die zuletzt als gültig anerkannte Zeitinformation einfach weiter hochgezählt und ausgegeben.
Bei dem von mir verwendeten Programm erfolgt das über ein "Job-Flag". Ich nenne das "Gangreserveumschaltung".
Zur Erkennung, dass umgeschaltet wurde, hatte ich das so programmiert, dass die Sekunden nicht hochgezählt werden.
Ist der DCF77-Empfang wieder einwandfrei, wird das Job-Flag resettet und die Uhr wird wieder synchronisiert, Sekunden werden wieder ausgegeben.
Interessehalber:
a) Nach welchen Kriterien wird ermittelt, ob die rote LED leuchten soll,
also wie wird festgestellt, ob das aktuelle Telegramm falsch oder
richtig ist?
bzw.:
b) Läuft die Uhr in erster Linie mit der Taktfrequenz und wird, wenn das
empfangene Telegramm als richtig eingestuft wird, die "Prozessorzeit"
überschrieben?
Die Uhr wird erstmal von dem DCF-Protokoll eingestellt, manuell geht das nicht.
Wenndas Protokoll erkannt wurde, wird die Zeit angezeigt. Da diese Uhr permanent den DCF-Empfänger eingeschaltet hat, wird sie bei optimalem Empfang jede Minute neu synchronisiert. Ist das Signal unplausibel, dann läuft die Uhr autark mit dem Taktsignal des Atmega 16, ich habe den mit einem 8 MHz-Quarz versehen, es ginge auch ohne Quarz, dann ist die Abweichung der Uhrzeit aber noch ungenauer, als mit dem selben.
Ist aber so kein Problem, da die Uhr am Netz hängt (eigentlich ein Mobiltelefonladegerät, ein Schaltnetzteil, das 5 V ausgibt).
Ich habe glaube ich auch einen Schaltplan, aber auf einem Rechner, der gerade nicht mehr startet. Das Platinenlayout ist auch auf dem Rechner. Leider habe ich auf meinem neuen Rechner kein DVD-Laufwerk, kann daher die Software Sprint-Layout nicht installieren, um einen Screenshot der Platine zu machen, sollte aber kein Problem sein.
Im Prinzip musst du nur einen Atmega nehmen, ein LCD an beliebige Ports anschliessen, und einen DCF-Empfänger anschliessen. Ich habe da noch einen Port zur Ausgabe des Signals auf eine LED gelegt, um die Sekundensignale zu sehen. DCF senkt ja seine Sendeleistung im Sekundentakt für 100 ms, 200 ms oder 1000 ms. Diese Senkungen werden eben mit der LED angezeigt. Wenn die LED dauernd leuchtet, dann ist der Sender ausser Betrieb, wenn sie zwischenduch flackert, dann stört irgendwas den Empfang.
Die Software ist in Bascom geschrieben. die konnte man damals frei runterladen, dabei sind aber die Programme auf 4 kB begrenzt. Ich habe die Vollversion auf einem alten XP-Klapprechner.
Ob deiner Nachfrage, Wolle G. habe ich mal versucht, Bascom wieder auf meinen neuen Rechner runterzuladen, aber da bedarf es wohl einer Sperma- oder Blutprobe, um da reinzukommen, und die kostenlose Software bis 4 kByte runterzuladen.
Sollest du die Software haben, dann gehe mal in die Hilfe. Es gibt da ein Programm in Assembler, das du in Bascom einbinden kannst, und da werden auch diverse Bits in der Ausgabe erklärt. da habe ich auch die Entscheidung zwischen grün und rot gefunden.
Bascom ist wohl scheinbar out, aber ich habe damals Basic gelernt, und finde das intuitiver als C oder C++.
Ob deiner Nachfrage, Wolle G. habe ich mal versucht, Bascom wieder auf
meinen neuen Rechner runterzuladen, aber da bedarf es wohl einer Sperma-
oder Blutprobe, um da reinzukommen, und die kostenlose Software bis 4
kByte runterzuladen.
Ist das Signal unplausibel, dann läuft die Uhr autark mit dem
Taktsignal
Danke für den umfangreichen Beitrag.
Mir ging es aber im Wesentlichen nur um die vor dir angewandte Methode, die das Aussortieren ungültiger Zeitdiagramme betreibt, um Falschanzeigen zu vermeiden.
Meine vor ca. 15 bis 20 Jahren gebaute DCF77-Uhr, die im Wesentlichen nur mit CMOS Schaltkreisen gebaut wurde, läuft und läuft … , ohne dass bisher eine Falschanzeige zu sehen war.
Bei meiner Methode werden 2 aufeinander folgende Zeittelegramme geprüft, ob sie sich um 1 Minute unterscheiden. Wenn dies nicht der Fall ist, wird die Uhrenanzeige von einem Taktgeber um 1 Minute erhöht. Wenn ja, wird die empfangene Zeit übernommen.
Hoffentlich habe ich mich verständlich genug ausgedrückt
Ich habe da noch einen Port zur Ausgabe des Signals auf eine LED gelegt,
um die Sekundensignale zu sehen. DCF senkt ja seine Sendeleistung im
Sekundentakt für 100 ms, 200 ms oder 1000 ms. Diese Senkungen werden
eben mit der LED angezeigt.
Wieso Port? Meine DCF-LED ist reine Hardware, ebenso wie der zuschaltbare Signalton - beide direkt am Ausgang des Empfangsmoduls. Wenn Daten als fehlerhaft bewertet werden, wird das im Display gezeigt.
Mir ging es aber im Wesentlichen nur um die vor dir angewandte Methode,
die das Aussortieren ungültiger Zeitdiagramme betreibt, um
Falschanzeigen zu vermeiden.
Es gibt mehrere Dinge, die man zwecks höherer Zuverlässigkeit kombinieren kann.
Ein Österreicher der da auch für einen PIC mal ein DCF77 Programm geschrieben hat verwendete folgende Mechanismen zur Fehlererkennung:
Auswertung der 3 Paritätsbits
Check Minute_alt zu Minute_neu
Sommerzeit Winterzeit können nicht beide gesetzt sein
Zeit zwischen zwei erkannten Sequenzen muss 1 Minute betragen
... und noch ein zwei andere Merkmale
Ich glaube damit ist man relativ sicher.
Ich hatte mal eine Funkuhr die mir 26:54 Uhr angezeigt hat :-)
Da wurde offensichtlich keine Plausibilitätsprüfung vorgenommen.
Wieso Port? Meine DCF-LED ist reine Hardware, ebenso wie der
zuschaltbare Signalton - beide direkt am Ausgang des Empfangsmoduls.
Wenn Daten als fehlerhaft bewertet werden, wird das im Display gezeigt.
Der Ausgang des DCF-77-Moduls von Pollin ist so gut wie gar nicht belastbar. Er kann keine LED direkt betreiben, daher habe ich das Modul direkt an einen Port des Prozessors gehängt und betreibe mit einem anderen die LED. Der Atmega 16 hat ja genügend davon.
An dem Port hängt auch noch ein kleines Reed-Relais, mit dem ich das Signal auf weitere Uhren verteilen kann. Das war ein Versuch, und geht auch über eine längere Leitung recht gut.Allerdings dauert die Synchronisation an der Tochteruhr deutlich länger, da der Entprellkondensator des Reedrelais die Signallänge verfälscht.
Wieso Port? Meine DCF-LED ist reine Hardware, ebenso wie der
zuschaltbare Signalton - beide direkt am Ausgang des Empfangsmoduls.
Wenn Daten als fehlerhaft bewertet werden, wird das im Display gezeigt.
(..)
An dem Port hängt auch noch ein kleines Reed-Relais, mit dem ich das
Signal auf weitere Uhren verteilen kann.
Das war ein Versuch, um das Signal stark genug in die Leitung zu bringen, und andere Uhren mit diesem zu versorgen. War aber ob des Prellens eine Schnapsidee. Würde das heute nicht mehr machen, Das Signal sieht trotz Entprellung auf dem Oszi grausam aus.
Meine naive Hoffnung war dass die Logik auf dem Board einen
Eingangsfilter hat
der anderen Frequenzen wegfiltert. Habe keine große Ahnung von
Radiotechnik und diese Annahme war wohl schlichtweg falsch.
Hat er ja prinzipiell. Die abgestimmte Ferritantenne ist schon nicht sehr breitbandig und im Geradeausempfänger dient der Filterquarz zur schmalbandigen Filterung.
Andere Frequenzen kann der gut wegfiltern, aber gegen breitbandige Störer, wie Schaltnetzteile, die hinreichende Energie auf exakt 77,5 kHz liefern, ist kein Kraut gewachsen.
Man kann ja den Empfänger auch nicht beliebig schmalbandig machen, da ja die Sekundenmarken noch empfangen werden müssen. 20 Hz - 10 Hz Bandbreite ist dager die untere Grenze, bei der schon eine Impulsdauer-Verzerrung der amplitudenmodulierten Information eintritt.
Andere Frequenzen kann der gut wegfiltern, aber gegen breitbandige
Störer, wie Schaltnetzteile, die hinreichende Energie auf exakt 77,5 kHz
liefern, ist kein Kraut gewachsen.
Die Annahme, dass Schaltnetzteile nur auf einer Frequenz konstant eine HF-Aussendung produzieren, ist so nicht richtig. Für diesen Zweck könnte man ja von der Regulierungsbehörde Frequenzen freigeben, wie zum Beispiel solche im 27 MHz-Band. Alle SNTs dürften dann nur auf einem eng begrenzten Frequenzbereich arbeiten.
Zum Beispiel produziert die Lastausregelung bei SNTs wechselnde Frequenzbeanspruchung über einen mehr oder weniger definierten, meist größeren Bereich, die nicht mit einem einfach auf Resonanzfrequenz abgestimmten Sperrfilter herauszufiltern wäre. Daraus folgt eine größere Frequenzbeanspruchung, sprich zeitweilig größere beanspruchte Bandbreite.
Dabei kann der Bereich um die 77,5 kHz sporadisch in Mitleidenschaft gezogen werden. Der DCF77-Empfänger benötigt aber einen einwandfreien Empfang über eine "größeren" Zeitraum. Da reicht ein kurzer Sweep eines SNT schon aus, um die Decodierung des Slow-Codes zu verhindern.
Der PTB sind diese Probleme nur zu gut bekannt. Nicht umsonst wurde eine relative Sendeleistungserhöhung durch tiefere Trägerabsenkungspegel vor Jahren schon etabliert. Damit kam man den Wünschen der Kunden nach verbessertem Störabstand nach.
Hier einfach eine Ausgabe von r19 auf einen Port programmieren.
Evtl. noch mit "com" aus High Low machen. Dann ist die Statusled nur im Fehlerfalle "on".
Die im Rhythmus von DCF77 selbst blinkende LED kann zwar auch auf Fehler hinweisen, ich dachte, die Frage bezog sich dezidiert auf eine Störungsanzeige LED, die entweder dauernd "on" oder "off" ist.
Gibt Uhren, die geben im Display an, wieviel Zeit die Uhr ohne Synchronisation gelaufen ist. Also ein extra SRAM-Register einrichten nur für Hochzählen der Zeit, wenn r19 nicht Null.
Andere Frequenzen kann der gut wegfiltern, aber gegen breitbandige
Störer, wie Schaltnetzteile, die Energie auf exakt 77,5 kHz
liefern, ist kein Kraut gewachsen
Um derartige Störungen zu ignorieren, kann man sich einen Ort im Raum suchen, an dem nahezu störungsfreier Empfang möglich ist.
Um die Uhr am Wunschort aufstellen zu können, kann man die Ferritantenne über ein passendes langes Kabel anschließen. (bei mir ca. 1,5m)
Wieso Port? Meine DCF-LED ist reine Hardware, ebenso wie der
zuschaltbare Signalton - beide direkt am Ausgang des Empfangsmoduls.
Wenn Daten als fehlerhaft bewertet werden, wird das im Display gezeigt.
Der Ausgang des DCF-77-Moduls von Pollin ist so gut wie gar nicht
belastbar. Er kann keine LED direkt betreiben,
Das ist bekannt, weshalb man einen Treiber an das Modul setzt, gerne CMOS 40xx.
DCF senkt ja seine Sendeleistung im Sekundentakt für 100 ms, 200 ms oder
1000 ms.
Fiel mir nur zufällig noch auf.
Eine Trägerabsenkung um 1000 ms ist nicht vorgesehen.
Es ist das Charakteristikum von DCF77, dass die 59. Sekundenmarke schlichtweg fehlt.
Und es gibt entsprechende Überlegungen, wie man das programmtechnisch dann umsetzt, um einen Minutenanfang zu erkennen.
SCNR: Habe nochmal aus der Bastelkiste ein DCF77-Empfangsmodul herausgekramt.
Tatsächlich steht im Beipackzettel, dass die Pinbelegung noch nachgereicht werden müsste.
Hier habe ich die LED zwischen Ausgang und GND über den Innenwiderstand des Drehspulmessgeräts geschaltet (100µA-Bereich). Dabei werden die Austastungen (für die meisten damals kursierenden ASM-Programme "richtig") von H nach L gezeigt. Müsste so direkt einen AVR µC Eingangsport bedienen können.
Oder einfach zuerst mal: Warte noch eine Weile. Diese einfachen
AM-Empfänger brauche oft längere Zeit, um ihre AGC korrekt einzupegeln.
Nun ja, bei dem im Video gezeigten Aufbau dauerte es keine 10 Sekunden.
Weiterhin viel Spaß!
ciao
gustav
P.S.: Weil ich nicht mehr weiß, wo ich Antenne und Empfangsmodul gekauft hatte, das Bildchen mit den Etiketten. Evtl. findet man die genaue Bezugsquelle nachträglich noch. Habe ich mir geschenkt.
DCF senkt ja seine Sendeleistung im Sekundentakt für 100 ms, 200 ms oder
1000 ms.
Fiel mir nur zufällig noch auf.
Eine Trägerabsenkung um 1000 ms ist nicht vorgesehen.
Es ist das Charakteristikum von DCF77, dass die 59. Sekundenmarke
schlichtweg fehlt.
Und es gibt entsprechende Überlegungen, wie man das programmtechnisch
dann umsetzt, um einen Minutenanfang zu erkennen.
ciao
gustav
Das ist tatsächlich DIE Frage, die man sich stellt, wenn man so ganz unbedarft und ohne vorher anderer Leute Code gelesen zu haben, mit einer eigenen Lösung anfängt.
Ich habe damals einen Systemweiten Sekunden-Timer gestartet, der ein paar Millisekunden nach geht. Der wurde nachgeführt. Für eine Anzeige ist das völlig ausreichend und selbst für einen Taktgeber ist es unerheblich, ob die regelmäßigen Pulse alle um einen gemeinsamen Zeitraum verschoben sind. Mit dem Bloßen Auge kann man auch nicht erkennen, dass da eine Verzögerung ist. Mit dem Puls kann man aber jederzeit fehlende Sekunden-Marken überbrücken.
Es gibt aber auch Selbstbauten, die zeigen :59, setzen 1 Sekunde aus und springen dann auf :01. Hab ich auch schon gesehen.
Der nachgeführte Timer hat zudem wenige ms vor dem zu erwartenden Puls erst die Erkennung des Pulses eingeschaltet, so wurden alle Spikes zwischen den Sekunden ausgeschlossen.
Er geht nicht langsamer, sondern er triggert immer versetzt. Ich weiß nicht mehr, was sich als gut funktionierend herausgestellt hat, aber im Grunde gibt es einen Interrupt, der schaltet ab 980ms den Interrupt frei, der auf den GPIO der DCF Uhr reagiert. Um 1010ms gibt es einen Interrupt, der schaltet die Sekunden optisch weiter. Gleichzeitig startet er das Einlesen von 8 GPIO Zuständen zur Erkennung einer Sekundenmarke und 100ms später werden noch mal 8 GPIO Zustände gemittelt um eine 1 zu erkennen.
Der GPIO Interrupt nutzte damals Assembler und Assembler-Befehle-Takte zählen, damit man den Interrupt Timer korrigieren konnte. Am Ende hat er sein eigenes Enable Flag noch gelöscht.
Das ganze hat sehr gut funktioniert, die Uhr selber habe ich irgendwann bei einem Umzug noch gesehen, aber den AVR Code habe ich vermutlich nicht mehr.
Hallo und schön, dass die Programmierseite wieder in den Vordergrund rückt.
OK. Die mir bekannten TTL-Varianten hatten zur Erkennung des Minutenbeginns, bzw. zur Erkennung, dass eine Marke ausgelassen wird, extra einen NE555-Timer eingebaut.
Beim vorgestellten MSF60-Decoder belasse ich es bei der unschönen, nicht korrekten Sekundenanzeige, wobei tatsächlich erst eine halbe Sekunde nach Minutenbeginn, eben durch Auswertung der dafür im Code vorgesehenen 500ms-Austastung die Synchronistation hergestellt wird. Die Sekundenanzeige zeigt dann sofort 01. Kann noch optisch etwas aufgehübscht werden.
Nun zurück zu der programmtechnischen Lösung der Erkennung des Minutenbeginns bei DCF77 nach Auslassen der 59. Sekundenmarke:
Es wird in dem besagten populären AVR-ASM-Programm mit Flags als den zugewiesenen Zuständen zugewiesene Bits und unter Zuhilfenahme des Speicherbits im Statusregister mit entsprechenden Sprungbefehlen gearbeitet. (Das Carrybit spielt auch eine essenzielle Rolle.)
Dabei wird im Flag-Register nicht nur der aktuelle logische Zustand am Port, der die Impulse empfängt, gespeichert, sondern in einem zugewiesenen Registerbit unter anderem auch der Zustand einen Timer-Interrupt davor.
Bei einem Portzustand-Abfragezyklus von 1/100 Sekunde ruft man den Zustand der Flags ab und verzweigt in entsprechende Unterprogramme.
In einem speziellen Sprungbefehl ist das Argument zum Beispiel mit 150 gesetzt. Hier wird stets der Zustand des Ports zum Zeitpunkt eine ISR vorher abgefragt. Ist es 150 mal hintereinander "High", dann sind 1,5 Sekunden vergangen. Dabei wird dann das entsprechende Flagbit ins Speicherbit des Statusregister kopiert, damit der entsprechende Sprungbefehl aktiviert werden kann. Beim Durchlaufen der Interruptroutine werden die Flags entsprechend gesetzt. In der Main-Routine dann ausgelesen, Ausgaberoutinen abgerufen und bestimmte Flags wieder gelöscht.
Zum Beispiel:
.def flags = r11 ; Verschiedene Flags
; Bit 0: akueller DCF77-Zustand - high oder low
; Bit 1: vorheriger DCF77-Zustand
; Bit 2: Uhr wurde mind. einmal synchronisiert
; Bit 3: Start neue Minute;TimerISR set,main reset
; Bit 4: Datum gueltig
; Bit 5: nicht belegt
; Bit 6: nicht belegt
; Bit 7: nicht belegt