Zeitsignalempfänger anschließen

Hallo erstmals

und zwar ich habe mir den Zeitsignalempfänger Dcf BN 641138 von Conrad gekauft.

und wie soll ich den am Arduino anschließen?

Vielen Dank im Voraus Felix

Wie im zugehörigen Datenblatt ersichtlich: http://www.produktinfo.conrad.com/datenblaetter/625000-649999/641138-an-01-de-Anschlussplan_DCF_Empfaengerplatine.pdf

Hallo Felix,
ich persönlich finde Foren über Technologien unwahrscheinlich hilfreich, aber man erwartet, dass man auch ein wenig Eigeninitiative bringt und das Suchen den anderen Usern überlässt.
Würdest du mal z.B. mal ins Netz schauen, so gibt es genügen Beispiele mit dem DCF77-Baustein vom blauen C.
So auch das hier gonium.net » Blog Archive » Arduino DCF77 radio clock receiver
Viel Erfolg.

Gruß Gerd

Tja ich habe den DCF Zeitsignalempfänger schon angeschlossen.
und zwar Eingang an 5V, Ground und den DCF Out an den 13 Pin an Arduino.

Doch es funktioniert nicht.

Als Beispiel habe ich den Sketch Internal Clock sync verwendet

Dann zeig mal deinen Sketch. Interner Pullup aktiviert? Oder hast du einen externen benutzt, wie im Schaltplan dargestellt?
Ein "funktioniert nicht" ist keine Beschreibung, die zur Problemlösung beiträgt. :wink:
Wo findet man diesen "Internal Clock sync"-Sketch?

Also ich habe den internen Pullup verwendet.

Und den Sketch habe ich von der DCF77 Library

Der Sketch:

/*

  • InternalClockSync.pde
  • example code illustrating time synced from a DCF77 receiver
  • Thijs Elenbaas, 2012
  • This example code is in the public domain.

This example shows how to fetch a DCF77 time and synchronize
the internal clock. In order for this example to give clear output,
make sure that you disable logging from the DCF library. You can
do this by commenting out #define VERBOSE_DEBUG 1 in Utils.cpp.
*/

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

#define DCF_PIN 13 // 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);
}

Im Serial Monitor sieht man immer nur das Unix Anfangsdatum also 1 Jan 1970

Pin 13 ist eine unglückliche Wahl.
Bis ausschließlich Arduino UNO R3 war da eine LED mit 500Ohm bzw 1000Ohm Vorwiderstand auf Masse geschaltet. Arduino UNO R3 hat einen Operationsverstärker der die LED vom Pin 13 abkoppelt. Darum ist das Verhalten der verschiedenen Versionen unterschiedlich.

Das DCF-Modul hat seine Eigenheiten. Wie im Forum von einem User beschrieben blockiert ihm der DC-Wandler der Hintergrundbeleuchtung das Signal sodaß er keinen Empfang hatte. Auch PC und andere Elektrogeräte können den Empfang behindern. Versuch mal einen Spannungssfolger mit einem Operationsverstärken an das Ausgangssignal anzuschließen un eine LED anzusteuern. Die LED muß (fast) jede sekunde Kurz aufblinken.

grüße Uwe

Hallo Felix,
ist immer schon manchmal ein Problem mit den Dingern. Hast du die Antenne mal ein wenig verändert. Sie sollte grob in Richtung Braunschweig ausgerichtet sein.
Es kann auch sein, dass dein PC ggf. schon das Signal aufgrund von Störstrahlung kaputt mach.
Vielleicht versuchst du es erst nur einmal mit einer LED, um überhaupt zu sehen, ob ein Signal ansteht, wie es im Sketch von dem Link dargestellt wird.
Mit einem Oskar könntest du es natürlich noch besser überprüfen, jedoch hat nicht jeder einen.

Gruß Gerd

Also die Led blinkt garnicht auf

Die LED sollte schon mal angehen, sonst hast du keinen korrekten Empfang, oder deine Anpassung ist nicht OK

Also die Anschlüße sind Ground, 5V und DCF Out das mit dem Arduino verbunden ist.

uwefed:
Das DCF-Modul hat seine Eigenheiten. Wie im Forum von einem User beschrieben blockiert ihm der DC-Wandler der Hintergrundbeleuchtung das Signal sodaß er keinen Empfang hatte.

Das war dann wohl ich, habe meine Erfahrungen dazu hier gesammelt: sth77 | Arduino Blog: Projekt Analoguhr - Teil 3
Im konkreten Fall ging es um die Hintergrundbeleuchtung meines Monitors.

Ich habe mich zwei Tage mit diesem besagen Modul rumgeschalgen. Hatte alles richtig Programmiert dann war der Frust so groß, habe alles so liegen lassen Licht aus und raus. 10min später zurückgekommen und da war die Zeit. => Fehler war der Halotrafo ist eine switching Typ Taktfrequenz habe ich gemessen (30 kHz) und eine menge menge schweinerreien und das war der Fehler.

Ich hatte mit dem Teil auch meine Mühe. Nachdem ich die Antenne genügend weit (ca. 3m) von irgendwelchen elektronischen Geräten weg gebracht hatte und den Arduino komplett vom PC getrennt hatte, funktionierte es mit etwas modifiziertem Code (Ausgabe auf ein LCD-Display). Sobald ich aber auch nur eine Masse-Verbindung zum PC habe (z.B. USB-Debugging), kriege ich kein brauchbares Signal mehr hin, egal wo ich die Antenne plaziere.

Antenne ... sollte grob in Richtung Braunschweig ausgerichtet sein.

Tut zwar eigentlich nichts zur Sache, aber die Radio-Signale kommen von einem Langwellensender bei Frankfurt, genauer : da wo die A45 auf die A3 trifft.

Selbst bei uns ( 20 km entfernt ) sind elektrische Störungen sehr lästig.

http://de.wikipedia.org/wiki/DCF77:
Der Zeitsignalsender DCF77 ist ein Langwellensender im Ortsteil Mainflingen in Mainhausen, der die meisten funkgesteuerten Uhren im westlichen Europa mit der genauen in Deutschland geltenden gesetzlichen Uhrzeit versorgt. Die Bezeichnung DCF77 ist das dem Sender zur internationalen Identifikation zugewiesene Rufzeichen. Er ist Teil der Sendeanlagen in Mainflingen.
...
Über DCF77 sendet die Physikalisch-Technische Bundesanstalt (PTB) in Braunschweig seit 1959 eine Normalfrequenz und seit 1973 zusätzlich dazu ein Datensignal für Datum und Uhrzeit. Die PTB ist hierzu im Gesetz über die Einheiten im Messwesen und die Zeitbestimmung verpflichtet. Betrieben werden die Anlagen in Mainflingen durch die Media Broadcast GmbH, eine ehemalige Unterabteilung von T-Systems, die seit Januar 2008 dem französischen Sendernetzbetreiber TDF gehört.

Der Sender ist praktisch 500km nördlich von mir. :wink: :wink:

Grüße Uwe

Also ich habe so ein Modul hier und nicht die geringsten Probleme damit. Allerdings arbeite ich auch gerade an extra robustem Filtercode. Wäre jemand der große Störungen hat bereit mir Daten von so richtig kaputten Signalen zu schicken damit ich den Code testen und optimieren kann? Das Ergebnis stelle ich selbstverständlich der Allgemeinheit zur Verfügung.

//
//  www.blinkenlight.net
//
//  Copyright 2012 Udo Klein
//
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program. If not, see http://www.gnu.org/licenses/

#include <MsTimer2.h>

const uint8_t monitor_pin = 13;

const uint8_t dcf77_sample_pin = 19; // A5
const uint8_t dcf77_analog_sample_pin = 5;


void sampler() {  
    const uint32_t input = analogRead(dcf77_analog_sample_pin)>200;
    digitalWrite(monitor_pin, input);      
    Serial.print(input? "0": "1");
    
    static uint16_t tick = 0;
    if (++tick == 100) {
        tick = 0;
        Serial.println();
    }
}

void setup() {
  
    Serial.begin(115200);  
       
    pinMode(dcf77_sample_pin, INPUT);
    digitalWrite(dcf77_sample_pin, HIGH);
       
    pinMode(monitor_pin, OUTPUT);
 
    MsTimer2::set(1, sampler);
    MsTimer2::start();     
}


void loop() {  }

Gewünscht wäre der Output von 1 Stunde Datensammeln. 1 Tag wäre noch besser :wink: