Forum: Mikrocontroller und Digitale Elektronik DCF77 Zeitsignalempfänger


von Felix S. (stock95)


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);
}

von lala (Gast)


Lesenswert?

Ist das das gesamte Programm?

von Dietrich L. (dietrichl)


Lesenswert?

Felix Stockinger schrieb:
> Pull Out Resistor

Was ist das?

von Martin S. (tungl)


Lesenswert?

Lass den ganzen DCF-Code erstmal weg, haenge eine LED an einen Ausgang 
und lasse dir den Zustand an Pin 12 mit der LED anzeigen. Die sollte 
dann im Sekundentakt blinken, dann weisst du, dass der Empfaenger 
funktioniert.

von Felix S. (stock95)


Lesenswert?

@lala

 Es ist das Beispielprogramm InternalClockSync von der DCF77 Library

@dietrich1

ein Pull Out Widerstand ist ein 10kOhm Widerstand vom Dcf Ausgangsignal 
zum 5V Signal

von troll (Gast)


Lesenswert?

Felix Stockinger schrieb:
> ein Pull Out Widerstand ist ein 10kOhm Widerstand vom Dcf Ausgangsignal
> zum 5V Signal

Das Tier heisst Pull Up...

von Dietrich L. (dietrichl)


Lesenswert?

Felix Stockinger schrieb:
> Dcf Empfänger vom Conrad

Typ? Bestellnummer?

von Felix S. (stock95)


Lesenswert?


von Martin S. (tungl)


Lesenswert?

Mal abgesehen von meinem Vorschlag von oben: Hast du mal sowohl den 
normalen als auch den invertierten Ausgang des Moduls ausprobiert? Da 
man deinen Code ja nicht kennt, kann man ja nicht sagen, welche der 
beiden Moeglichkeiten er erwartet.

von Felix S. (stock95)


Lesenswert?

Nee funktioniert genauso nicht

von Dietrich L. (dietrichl)


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

von dolf (Gast)


Lesenswert?

betreibe den empfänger einige meter(2m?) vom controller entfernt.
beim nachbarn geht das nur wenn genügend abstand zur uhr besteht.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Dietrich L. schrieb:
>> Pull Out Resistor
>
> Was ist das?

Das ist der, den man vor Wut aus der Schaltung reißt, wenn sie nicht 
funktioniert!

von Jürgen S. (jurs)


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.

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.