DCF77 Zeitsignalempfänger

OP #2867523
Lesenswert?
• ▲
▼
Hallo erstmals


und zwar ich habe mir einen Dcf Empfänger vom Conrad geholt und habe ihn 
an meinen Arduino Uno an Pin 12 angeschlossen. Ich habe einen externen 
Pull Out Resistor mit 10kOhm angeschlossen. Wenn ich mit dem Multimeter 
messe bekomme ich nur eine Spannung von 0,06 V am Dcf ausgang und der 
Dcf Empfänger hängt an 5V.

Doch er funktioniert nicht ich habe bereits alles versucht doch ich 
bekomme kein richtiges Signal.

Eine Wetterstation mit Dcf Empfänger bekommt am gleichen Standort 
innerhalb von 1 Minute ein Signal.

Hier der Sketch:


#include "DCF77.h"
#include "Time.h"

#define DCF_PIN 12           // Connection pin to DCF 77 device
#define DCF_INTERRUPT 0     // Interrupt number associated with pin

time_t time;
DCF77 DCF = DCF77(DCF_PIN,DCF_INTERRUPT);


void setup() {
  Serial.begin(9600);
  DCF.Start();
  Serial.println("Waiting for DCF77 time ... ");
  Serial.println("It will take at least 2 minutes until a first update 
can be processed.");
}

void loop() {
  delay(1000);
  time_t DCFtime = DCF.getTime(); // Check if new DCF77 time is 
available
  if (DCFtime!=0)
  {
    Serial.println("Time is updated");
    setTime(DCFtime);
  }
  digitalClockDisplay();
}

void digitalClockDisplay(){
  // digital clock display of the time
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.print(year());
  Serial.println();
}

void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon 
and leading 0
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}
#2867566
Lesenswert?
• ▲
▼
Du kannst zum Test den Empfänger mit Pull-Up nur an +5V hängen (ohne 
µC). Dann müssten an den Ausgängen Spannungsschwankungen im 
Sekundenraster zu sehen sein. Je nach Reaktionsgeschwindigkeit des 
Multimeters können diese "Zuckungen" allerdings auch gering sein.

Dann zum Test den Ort und die Ausrichtung ändern - vielleicht bist Du in 
einem Funkloch oder hast Störquellen in der näheren Umgebung.

Gruß Dietrich
#2881298
Lesenswert?
• ▲
▼
Felix Stockinger schrieb:
> habe ihn an meinen Arduino Uno an Pin 12 angeschlossen.
> ...
>
> Eine Wetterstation mit Dcf Empfänger bekommt am gleichen Standort
> innerhalb von 1 Minute ein Signal.
>
> Hier der Sketch:
>
>
> #include "DCF77.h"
> #include "Time.h"
>
> #define DCF_PIN 12           // Connection pin to DCF 77 device
> #define DCF_INTERRUPT 0     // Interrupt number associated with pin

Mal völlig abgesehen vom fehlenden Signal des DCF-Receivers: Das 
Programm kann so mit diesen defines und am Pin D12 grundsätzlich und 
überhaupt nicht funktionieren.

Grund: Der Pin Digital 12 ist am Arduino UNO überhaupt nicht 
interruptfähig!

Der Arduino UNO hat überhaupt nur zwei Pins, die interruptfähig sind.

Digital 2 kann Interrupt 0 auslösen
Digital 3 kann Interrupt 1 auslösen

Die einzigen Möglichkeiten zur Verwendung dieser Library sind also beim 
einem Uno-Board der Anschluß des Datenausgangs des DCF-Moduls an Pin D2 
oder D3.

Die passenden defines wären bei Verwendung von Eingang D2:

#define DCF_PIN 2           // Connection pin to DCF 77 device
#define DCF_INTERRUPT 0     // Interrupt number associated with pin

Oder an Pin D3:

#define DCF_PIN 3           // Connection pin to DCF 77 device
#define DCF_INTERRUPT 1     // Interrupt number associated with pin

Alles andere geht grundsätzlich nicht.
Hallelujah, warum sagt ihm das denn keiner?

Im übrigen kenne ich diese Library. Na ja. Den frühesten Zeit-Fix 
bekommt diese Library nicht nach zwei, sondern nach drei Minuten. Bei 
einwandfreiem Signal nach 3 bis 4 Minuten.

Und wenn Du testest und noch ein Problem mit der Signalqualität vom 
DCF-Modul hast, dann versuche auch bitte nicht gleich eine Zeit zu 
bekommen, sondern versuche erstmal das Beispielprogramm 
"DCFPulseLength"!

Solange Du mit dem Testprogramm DCFPulseLength keine stabilen Pulslängen 
angezeigt bekommst, mit einer Gesamtdauer von ca. 1 Sekunde, aufgeteilt 
in Pulse von ca. 100 und 900 msec ("Low") oder 200 und 800 msec 
("High"), hast Du auch keine Chance auf ein Funktionieren des 
Zeitempfangs.

Wenn Du das Programm laufen läßt, schließe am Arduino ein 2 bis 3 m 
langes USB-Kabel an und bewege den Arduino mit der DCF-Antenne 
mindestens 2 m von allen Störquellen weg, als da wären (unvollständige 
Aufzählung):
- Monitore (Röhren wie LCD)
- Computer
- Energiesparlampen und Leuchtstofflampen
- Schaltnetzteile
Ohne exakten Sekundentakt am DCF-Modul kannst Du keine DCF-Zeitsignale 
empfangen. Und das Testprogramm DCFPulseLength zeigt Dir genau an, was 
für Impulse da von Deinem DCF-Modul empfangen werden.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.