Drücke „Enter”, um zum Inhalt zu springen.

Anpassung der Arduino DCF77-Bibliothek von thijse

1

Bei dem Vorhaben eine Nixie Uhr auf Basis eines Arduino Nano Clons mit einem DCF77 Empfänger zu erstellen, bin ich auf die DCF77 Bibliothek von thijse auf github gestoßen. Nachdem ich die Bibliothek installiert hatte musste ich leider feststellen, dass die Synchronisation, trotz der Nähe zum Sender in Mainflingen einfach nicht funktionieren wollte. Da ich zu Beginn den Verdacht hatte, dass das relativ günstige DCF77 Modul von eBay die Probleme verursacht, habe ich das Signal mit Hilfe eines Oszilloskops kontrolliert. Hierbei konnte ich deutliche “Spikes” zwischen den einzelnen Impulsen feststellen. Deshalb habe ich das Ausgangssignal des Empfängers mit Hilfe eines Impedanzwandlers (LM741) an den Eingang des Arduinos angeschlossen. Dieses Problem war damit schonmal beseitigt. Trotzdem wollte die Synchronisierung auch nach über einer Stunde Wartezeit nicht funktionieren (sollte eigentlich nach spätestens 180s erledigt sein).

Nachdem ich mir die Bibliothek näher angeschaut hatte, bin ich in der Header-Datei (DCF77.h) auf folgende Variablendefinitionen gestoßen:

#ifndef DCF77_h
#define DCF77_h

#if ARDUINO >= 100
#include <Arduino.h> 
#else
#include <WProgram.h> 
#endif
#include <Time.h>

#define MIN_TIME 1334102400     // Date: 11-4-2012
#define MAX_TIME 4102444800     // Date:  1-1-2100

#define DCFRejectionTime 700    // Pulse-to-Pulse rejection time. 
#define DCFRejectPulseWidth 50  // Minimal pulse width
#define DCFSplitTime 180      // Specifications distinguishes pulse width 100 ms and 200 ms. In practice we see 130 ms and 230
#define DCFSyncTime 1500        // Specifications defines 2000 ms pulse for end of sequence

Mir sind dabei die zum Teil sehr knapp gewählten Timings aufgefallen. Ich habe daher testweise die Zeiten folgendermaßen abgeändert:

#define DCFRejectionTime 650//700    // Pulse-to-Pulse rejection time. 
#define DCFRejectPulseWidth 30//50  // Minimal pulse width
#define DCFSplitTime 160//180        // Specifications distinguishes pulse width 100 ms and 200 ms. In practice we see 130 ms and 230
#define DCFSyncTime 1700//1500        // Specifications defines 2000 ms pulse for end of sequence

Und siehe da: die Zeit ist nach spätesten 3 Minuten synchron und aktualisiert sich jede Minute 🙂

  1. Chris

    Hallo,
    ich probiere mich gerade auch mit dem DCF77 aus.
    Kannst du mir sagen wie du auf deine Werte für die Timings gekommen bist?

    Liebe Grüße Chris

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert