Forum: Mikrocontroller und Digitale Elektronik DCF-Empfänger löst kein Interrupt aus


von Peter (Gast)


Lesenswert?

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 .*/
9
  EIMSK |= (1 << INT0);    /* External Interrupt Request 0 Enable */
10
  
11
  sei();
12
    while (1) 
13
    {
14
    }
15
}
16
17
ISR(INT0_vect)
18
{
19
  PORTB ^= (1 << PINB5);
20
}

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?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von Peter (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von E3 (Gast)


Lesenswert?

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

von Peter (Gast)


Lesenswert?

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

von Peter (Gast)


Lesenswert?

Das mit dem Video hat wohl doch nicht funktioniert. Habe es extra im 7z 
verpackt.

von Stefan F. (Gast)


Lesenswert?

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.

von Manfred (Gast)


Lesenswert?

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.

von Jan (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

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).

von Manfred (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

In meinen Programmen löst der DCF77 Empfänger grundsätzlich keinen 
Interrupt aus.

von Alex D. (allu)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

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.