Guten morgen,
ich möchte einen DCF-Empfänger von Conrad im Betrieb nehmen.
Die Betriebsspannung liegt bei 5V.
den DCF-Ausgang habe ich mit 20kOhm mit der Betribsspannung versorgt.
Das Signal habe ich an einem Atmega328P auf einem Arduino am INT0
angeschlossen.
1
int main(void)
2
{
3
DDRB |= (1<<PINB5); /* Set PB5 to output */
4
PORTB &= ~(1 << PINB5); /* Set PB5 to low */
5
DDRD &= ~(1 << DDD2); /* clear the PD2 pin ant set it to input */
6
PORTD |= (1 << PORTD2); /* turn On the Pull-up */
7
8
EICRA |= (1 << ISC00); /* Any logical change on INT0 generates an interrupt request .*/
Mit diesem Code möchte ich zunächst das das Empfangen des Signals
erkennen. Dazu müsste die LED an PINB5 immer Toggeln. Doch leider bleibt
diese aus, was mich dazu schließen lässt, dass kein Interrupt anliegt.
Aber auch ich den INT0 direkt an 5V anlege, leuchtet die LED nicht.
Diese ist aber auch nicht defekt (wenn ich sie bei der Initialisierung
einschalte, oder mit einem delay toggeln lasse, blinkt diese). Habe ich
bei der initialisierung des Interrupts was falsches gemacht?
Das Programm sieht erstmal richtig aus (es fehlen nur die includes).
Miss aber bitte mal, ob der INT0 Pin nicht schon auf high liegt -
immerhin hast du sowohl den internen Pullup also auch noch einen
externen 20k. Zieh den Pin doch mal auf GND statt auf plus und schau, ob
es dann funktioniert.
Habe den Widerstand am DCF-Empfänger entfernt. Jetzt kommt etwas an.
Das sieht aber so aus, als ob zwischendrinn störungen rein kommen. Das
kann aber auch daran liegen, dass es nur mit Jumper-Kabeln verbunden
ist. Muss mal eine Platine fertigen, wo ich die Pins dann anlöten kann.
Besten dank für den Hinweis
Peter schrieb:> Das sieht aber so aus, als ob zwischendrinn störungen rein kommen.
Das ist in einer Umgebung mit Computern und anderen Schaltnetzteilen
normal. Filtersoftware für DCF77 Signale füllt ganze Kapitel. Viele von
uns setzen den DCF Empfänger weit ab vom Rechner, und speisen ihn mit
einer sauberen gefilterten Spannung.
Dann dreht man auch den Ferritstab quer zum Sender, der mit seiner
langen Seite also Richtung Mainflingen zeigen sollte.
Hi Peter, wenn ich so Deine letzte Aussage lese, dann denke ich nur
"verkehrte Welt". In der Regel ist es so, dass man erstmal auf einem
Steckbrett oder Lochrasterplatine eine Schaltung testet. Wenn die dann
in Ordnung ist, erstellt man eine Platine. Deine Herangehensweise ist
völlig verkehrt. Funktioniert auf dem Steckbrett nicht, weil da
irgendwelche Kabel benutzt werden, die Störungen verursachen. Dann
erstell ich mal eine Platine, da sind die Kabel nicht drauf, da muss es
ja funktionieren. Meine Prognose: Es wird genausowenig funktionieren,
Platine umsonst erstellt und geordert.
Zu Deinem Problem habe ich natürlich auch ein paar Ideen. Ich kenne zwar
das Conrad DCF-Modul nicht, aber ich setze viele andere DCF-Module aus
China ein.
Man muss sich erstmal vergewissern, ob sie von Haus aus schon Pullup-
oder Pulldown-Widerstände haben. Einige haben auch einen Push-Pull
Ausgang (die ich bevorzuge). Hier wird gar kein Widerstand benötigt.
Einige haben einen derart schlechten Ausgangspegel, so dass schon ein 10
kOhm Widerstand den Ausgang so stark belastet, dass der Ausgang nicht
mehr richtig schaltet. Hier ist unbedingt ein Ausgangstreiber mit
Transistor erforderlich.
Störungen sind bei DCF77 fast normal. Nahezu alle Empfänger sind nur auf
billig ausgelegt und haben sehr schlechte Empfangsqualitäten. Hier muss
man die optimale Position und Ausrichtung der Antenne ausprobieren. Das
kann ganz schön mühsam sein, wenn sich eventuell erst auf dem
Fensterbrett ein einigermaßen sauberer Empfang einstellt. Lass mich nur
noch eines sagen, die Kabel auf Deinem Steckbrett sind sicher nicht die
Ursache für diese Störungen.
E3, Eriks Elektronik Ecke
E3 schrieb:> Hi Peter, wenn ich so Deine letzte Aussage lese, dann denke ich nur> "verkehrte Welt". In der Regel ist es so, dass man erstmal auf einem> Steckbrett oder Lochrasterplatine eine Schaltung testet. Wenn die dann> in Ordnung ist, erstellt man eine Platine. Deine Herangehensweise ist> völlig verkehrt. Funktioniert auf dem Steckbrett nicht, weil da> irgendwelche Kabel benutzt werden, die Störungen verursachen. Dann> erstell ich mal eine Platine, da sind die Kabel nicht drauf, da muss es> ja funktionieren. Meine Prognose: Es wird genausowenig funktionieren,> Platine umsonst erstellt und geordert.
Hallo E3,
danke für die Antwort. Normalerweise wollte ich auch zunächst alles auf
dem Arduino und Steckbrett erstellen, um dann eine Platine zu erstellen
wo alles drauf ist was ich benötige.
Wieso kam ich jetzt auf die Idee jetzt schon eine Platine zu erstellen?
Bei jeder Pegeländerung soll die LED toggeln. Heißt bei High soll diese
aus sein und bei Low an. Wenn ich mir jetzt das DCF-Signal ansehe, wird
zwischen 0 und 1 die länge des low-pegels unterschieden. Bei einer 0 ist
das signal 100 ms auf null und bei einer 1 200 ms.
Heißt jede Sekunde müsste die LED angehen und für 100 oder 200 ms
leuchten.
Jetzt ist es aber so, dass die LED nur ganz kurz aufleuchtet (wesentlich
kürzer als 100ms) und dann auch nicht jede sekunde neu aufleuchtet,
sondern auch mal früher. eine art langsames flackern. Das ist aber nicht
immer so. Meistens nur ein kurzes blitzen und dann ca. 1 sekunde pause.
Das sah für mich dann so aus, als ob das Signal durch nicht sauberen
Kontakt nicht perfekt übertragen wird. Daher kam ich auf die Idee eine
Platine zu erstellen, wo die Signalleitung dann ohne stecken miteinander
verbunden werden.
E3 schrieb:> Lass mich nur> noch eines sagen, die Kabel auf Deinem Steckbrett sind sicher nicht die> Ursache für diese Störungen.
Dein Wort in Gottes Ohr :)
Ps.: ich habe mal ein Video gemacht und im Anhang gepackt um das dilemma
mal zu verdeutlichen
Das Ausgangssignal der üblichen DCF-77 Empfänger ist alles andere als
sauber. Wenn er keinen Empfang hat, kann da quasi Rauschen heraus
kommen.
Da der Empfänger eine ungewisse Anzahl von Flanken ausgibt, sollte man
dessen Signal nicht über Interrupts verarbeiten, sondern über Polling.
Wenn du unbedingt Interrupts verwenden willst, dann verwende einen
regelmäßigen Timer mit z.B. 20ms Intervall und taste dann innerhalb der
ISR des Timers den Signal-Pin ab. Damit wäre das Entprellen auch sehr
leicht zu bewerkstelligen.
Damit diese Empfänger einigermaßen funktionieren, benötigen sie eine
super duper stabile und vor allem rauschfreie Stromversorgung. Ich habe
schon Konstrukte gesehen, wo Leute aus lauter Verzweiflung den Empfänger
mit eigenen Batterien betrieben haben.
Außerdem muss der DCF-77 Empfänger möglichst weit weg von anderen
elektronischen Geräten platziert werden. Ganz Schlimm sind Störungen von
PWM gepulsten Leitungen und Lampen mit eingebauten Schaltnetzteilen.
E3 schrieb:> Störungen sind bei DCF77 fast normal. Nahezu alle Empfänger sind nur auf> billig ausgelegt und haben sehr schlechte Empfangsqualitäten. Hier muss> man die optimale Position und Ausrichtung der Antenne ausprobieren. Das> kann ganz schön mühsam sein, wenn sich eventuell erst auf dem
Liegt das an der Antennte oder am dekoder?
Wie baut man denn eine gute Antenne?
Manfred schrieb:> E3 schrieb:>> aber ich setze viele andere DCF-Module aus China ein.>> Nach was muß man da suchen, beim Ali wurde ich nicht fündig.
Das würde mich auch brennend interessieren
Ich denke es liegt in der "natur" der Technik aber es ist auch Absicht,
dass die Antenne im 90° Winkel zum Sender ausgerichtet werden muss.
Wie gesagt arbeiten die Empfänger mit besonders gut entstörter
Stromversorgung besser.
Jan schrieb:> Wie baut man denn eine gute Antenne?
Für solche tiefen Empfangsfrequenzen passenden Feritstab besorgen (je
länger, je besser) und viele Windungen aufbringen (100-200 können nicht
schaden). Mit parallelem C einen Schwingkreis aufbauen und diesen mit
sanft angekoppeltem 77,5kHz Generator auf maximalen Pegel durch Wechseln
des Kondensators abgleichen.
Mit einem Sourcefollower FET diesen Schwingkreis hochohmig auskoppeln
und dann verstärken. Alternativ kann man auch einen symmetrischen
Verstärker mit z.B. OpAmp benutzen.
Je besser der Kondensator und umso sauberer die Spule gewickelt ist,
umso besser die Güte. Wir alten Knacker träumen dabei von
Styroflexkondensatoren, aber es sollte auch ein nicht ganz schlechter
Folien-C tun.
Jan schrieb:> Liegt das an der Antennte oder am dekoder?
Die notwendige Ausrichtung kommt von ihrer Bauweise: Eine DCF77-Antenne
ist immer eine Richtantenne (die von "vorn" und "hinten" verstärkt, von
der Seite aber nichts empfängt).
Da das Signal sehr schwach ist und die Zielgeräte sehr stromsparend sein
müssen, ist das Gesamtsystem äußerst störanfällig. Deswegen schlagen
Frequenzen auf der Stromversorgung (Schaltnetzteil) auch auf die
Empfangsqualität durch.
Die Dekoder können verdammt gut sein, weil das Signal extrem viel
Redundanz enthält (aus Uhrzeitfragmenten kann ich mit der Zeit eine
sinnvolle Gesamtuhrzeit ableiten). Ob kommerzielle Decoder das tun, weiß
ich nicht.
> Wie baut man denn eine gute Antenne?
Es gibt verschiedene Bauweisen. Am einfachsten wäre natürlich ein Dipol,
aber bei 77 kHz wird der etwas groß. Der Ferritstab ist an sich schon
recht gut (und vor allem gut abgestimmt).
Matthias S. schrieb:> Mit parallelem C einen Schwingkreis aufbauen und diesen mit> sanft angekoppeltem 77,5kHz Generator auf maximalen Pegel durch Wechseln des
Kondensators abgleichen.
> Mit einem Sourcefollower FET diesen Schwingkreis hochohmig auskoppeln und dann
verstärken.
Muß ich jetzt die PTB-Schaltung der 70er-Jahre suchen und einscannen?
> Wir alten Knacker träumen dabei von Styroflexkondensatoren,> aber es sollte auch ein nicht ganz schlechter Folien-C tun.
Ja und nein: Ich habe damals die aktive Antenne auf dem unisolierten
Dachboden montiert und Ärger mit dem Empfang gehabt, sobald es Winter
wurde.
Ich habe das Teil dann in die Firma getragen, dort im Klimaschrank
gemessen und danach recht verzweifelt Kondensatoren mit passendem
Temperaturgang gesucht. Mit irgendeiner Mischung keramischer Cs habe ich
es halbwegs hin bekommen.
Stefanus F. schrieb:> Wenn du unbedingt Interrupts verwenden willst, dann verwende einen> regelmäßigen Timer mit z.B. 20ms Intervall und taste dann innerhalb der> ISR des Timers den Signal-Pin ab.
Funktioniert mit 20 msec Intervall gut,
Beitrag "[Bascom/AVR] Uhr und DCF"
Gruss Alex
Manfred schrieb:> Muß ich jetzt die PTB-Schaltung der 70er-Jahre suchen und einscannen?
Lass mal, die wurde vor einigen Wochen auf mikrocontroller.net gepostet.