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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren