Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

DCF77 Empfangsmodul

Abbildung 1 - DCF-Modul der Fa. ELV mit 220 kOhm Pull-Up-Widerstand am Signalausgang.

Die Physikalisch-Technische-Bundesanstalt (PTB) sendet über einen Langwellensender bei 77,5 kHz die Uhrzeit (Atomuhr) für die Bundesrepublik Deutschland aus.

In vielen privaten Haushalten befinden sich heute sogenannte DCF-Funkuhren, die über den Langwellensender automatisch zwischen Sommer- und Winterzeit umschalten und ihre angezeigte Zeit in festgelegten Zeitabständen mit der Atomuhr abgleichen.

Die Zeitinformation wird über die Impulslänge codiert; dabei wird pro Sekunde genau ein Bit übertragen, insgesamt 60 Bits pro Minute (siehe Zeitprotokoll). Ein LOW-Bit (0-Bit) wird durch Absenkung der Trägeramplitude für 100 ms dargestellt, ein HIGH-Bit (1-Bit) durch Absenkung für 200 ms.

In der 59. Sekunde erfolgt keine Absenkung; dadurch kann sich ein Empfänger auf den Beginn einer neuen Minute synchronisieren.

Das Zeitprotokoll

BCD - binary coded decimal bedeutet so viel wie binär codierte Dezimalstellen

Am Ausgang eines DCF-Moduls lässt sich das Signal abnehmen. Führt man es an den Eingang einer kleinen LED-Transistor-Schaltung, dann lässt sich über das Aufblinken der LED im Sekundentakt die Funktion des Moduls optisch überprüfen oder man legt das Ausgangssignal an den Eingang eines Oszilloskops.

Übung 1 - Empfang eines DCF-Moduls überprüfen

In dieser Übung wird das Verhalten eines DCF-Moduls mit Hilfe einer LED-Schaltung näher untersucht.

Empfang eines DCF Moduls mit einer LED-Schaltung überprüfen

Material

  • 1x  DCF-Modul (Fa. Reichelt)
  • 3x  Batterie 1,2 V Akku
  • 1x  Steckernetzteil, 5 V
  • 1x  Steckbrett
  • 1x  Batteriehalter (3-fach)
  • 1x  NPN Transistor, z.B. BC 547
  • 1x  Widerstand, 220 Ohm
  • 1x  Widerstand, 10 kOhm
  • 1x  Datenblatt des DCF-Moduls

Aufgaben

  • Entnimm dem Datenblatt des DCF-Moduls die maximale Betriebsspannung.
  • Entnimm dem Datenblatt den Ausgangsstrom bei "HIGH" und "LOW".
  • Entnimm dem Datenblatt die Impulsbreite für logisch "0" und "1".
  • Baue die Schaltung nach Schaltungsskizze auf dem Steckbrett auf.
  • Schließe die Spannungsversorgungen an. Achte auf die richtige Polung.
  • Die rote LED sollte nach kurzer Zeit blinken. Ist das nicht der Fall, verändere die Position des Ferritkerns so lange, bis ein regelmäßiges Blinken der LED einsetzt.
  • Mit welcher Frequenz blinkt die LED?
  • Fällt dir am Blinkverhalten der LED etwas aus? Versuche es zu beschreiben.

Schaltungsskizze

Ergebnisse

Die maximale Betriebsspannung des DCF-Moduls liegt nach Datenblatt des Herstellers zwischen 1,2 V und 5 V.

Die Ausgangsströme bei "HIGH" und "LOW" sind mit > 5 µA angegeben.

Die Impulsbreite für logisch "0" liegt zwischen 40 und 130 ms, für logisch "1" zwischen 140 und 230 ms.

Wenn alles richtig aufgebaut wurde, sollte die LED im Sekundentakt blinken und alle 60 Sekunden einen "Aussetzer" anzeigen.

Bei genauer Beobachtung sollte erkennbar sein, dass die Leuchtdauer der LED variiert; es gibt kürzer und etwas längere Blinkzeichen.

Die Beobachtungen aus Übung 1 lassen sich mit einem Oszilloskop genauer analysieren. Verbindet man die Signalleitung des Moduls anstelle mit einer LED-Transistorschaltung mit einem  Oszilloskopkanal, erhält man ein sehr genaues Zeitdiagramm (Abb. 2). Es bestätigt die Beoabchtungen an der LED.

Abbildung 2 - Das rot markierte Rechteck weist die 59. Sekunde im Zeitsignal aus. Die nachfolgenden Absenkungen haben eine Breite von 100ms ("0") bzw. 200ms ("1").

Die Aufnahme der Abb. 2 ist mit einem PicoScope2000 an einem DCF Empfangsmodul der Fa. ELV entstanden. Der Open-Collector-Ausgang ist mit einem 220 kOhm Pull-Up-Widerstand (Abb. 1) zur Versorgungsspannung +5V versehen.

Schaut man sich die DCF77-Zeitinformation etwas genauer an, erkennt man sehr deutlich die zwei unterschiedlichen Absenkungen der Trägeramplitude: 100ms für eine "0" und 200ms für eine "1".

Abbildung 3 - Absenkungen der Trägeramplitude im DCF-Zeitzeichensignal von 100 und 200 ms.

Ein invertiertes Zeitsignal erhält man mit dem DCF-Modul der Fa. Reichelt aus Übung 1. Es reagiert deutlich empfindlicher auf Störsignale (z. B. vom Monitor, Drucker etc.) und Restwelligkeit in der Spannungsversorgung; der Abstand des Moduls zu Störquellen sollte deshalb möglichst groß gehalten werden. Als Energiequelle wurde ein Batterieblock (3x AA) verwendet.

Abbildung 4 - Invertiertes DCF-Signal

Die Zeitinformationen beginnen ab Bit 21. Bit 20 ist immer "1".

Abbildung 5 - Zeitinformationen im DCF-Funksignal ab Bit 21.

Dekodiert man die in Nullen und Einsen ausgedrückte Zeitinformation manuell, muss man wissen, dass das LSB zuerst geschrieben wird. Die Zeitinformation aus Abb. 5 dekodiert ergibt:

  • 12:16 - Freitag, 16.02.18 (bitte selbst nachprüfen!!).

Übung 2 - Die Impulsbreite bestimmen

In dieser Übung wird mit einem Propeller-Board und der Programmiersprache C/C++ gearbeitet. Die Eigenschaften eines Mehrkern-Prozessors werden ausgenutzt.

Das Zeitdiagramm eines DCF77-Signals setzt sich aus Nullen (100ms Impuls) und Einsen (200ms Impuls) zusammen (Abb. 4, Abb. 5).

Bleibt zu klären, wie man ein HIGH- oder LOW-Signal mit Hilfe eines Propeller-Controllers (geht auch mit anderen Controllern;-)) bestimmen kann. Dazu wird eine einfache Methode benutzt, die man mit Hilfe des Pseudocodes so beschreiben könnte:

Die ermittelten Werte der beiden Variablen ZaehleLowSignal bzw. ZaehleHighSignal geben die Mikrosekunden an, die das Signal auf HIGH gezogen war und sind damit ein Maß zur Bestimmung für eine "0" oder eine "1". Das zeitlängere Signal entspricht dem 200ms Impuls und steht damit für eine "1", entsprechend das zeitkürzere für die "0".

Die Impulsbreiten werden über einen Zufallsgenerator vom Multicore-Propeller-Controller über COG1 erzeugt und an P10 des Prop-BoE ausgegeben; es wird nicht mit dem DCF77-Modul gearbeitet. Das Signal wird dann an den Eingang P0 gelegt und von COG0 ausgewertet. Durch Einsatz des Zufallsgenerators sind die erzeugten Impulslängen unterschiedlich groß.

Schaltungsaufbau

Impulsbreite messen
Material
  • 1x  Board of Education mit Propeller-Controller und USB-Kabel
  • 1x  Steckdraht
Aufgaben
  • Baue die Schaltung nach Schaltungsskizze auf.
  • Übertrage das Programm impulsbreite.c in den Editor und speichere es ab.
  • Verbinde das Board über USB-Kabel mit einem PC/ Laptop und starte das Programm.
  • Im Terminalfenster sollten Messzeiten für HIGH- und LOW-Impulse ausgegeben werden.
Abbildung 5a - Schaltungsaufbau auf dem Steckbrett eines Prop-BoE. Ausgang P10 ist mit Eingang P0 verbunden.

Das Unterprogramm "Rechteck" wird von COG1 permanent ausgeführt, während COG0 die Impulslängenbestimmung vornimmt. COG0 muss nicht explizit gestartet werden; er wird automatisch mit dem Start eines C/C++ Programms initialisiert.

Terminalausgabe

Übung 3 - Das Synchronisationssignal finden (BS2)

In dieser Übung wird ein Programm entwickelt, mit dem sich das Synchronisationssignal (Bit 0) bestimmen lässt. Es ist die Stelle im Zeitprotokoll, bei der das LOW-Signal eine Impulsbreite von mehr als 1 Sekunde aufweist (siehe Abb. 5).

Synchronisationssignal finden
Material
  • 1x  DCF-Modul (Fa. Reichelt)
  • 1x  USB-Oszilloskop
  • 1x  Datenblatt des DCF-Moduls
  • 1x  Board of Education mit BASIC Stamp2
  • 1x  Blockbatterie, 9V
  • 3x  Steckdraht
Aufgaben
  • Baue die Schaltung nach Schaltungsskizze auf.
  • Übertrage das Programm synchronisierung.bs2 in den Editor und speichere es ab.
  • Schließe die Spannungsversorgungen an. Achte auf die richtige Polung.
  • Die rote LED sollte nach kurzer Zeit blinken. Ist das nicht der Fall, veränder die Position des Ferritkerns so lange, bis ein regelmäßiges Blinken der LED einsetzt.
  • Starte das Programm und überprüfe, ob im Terminalfenster die Synchronisationsstelle ermittelt wurde.

Schaltungsaufbau

Abbildung 6 - BS2 mit Board of Education und DCF77-Modul. Die rote LED blinkt im Sekundentakt und zeigt den Empfang der Daten an.

Einschub: Signalprüfung mit einem USB-Oszilloskop

Nach Anschluss der Versorgungsspannung und einer Wartezeit von ca. 1 Minute sollte ein sauberes strörungsfreies DCF-Zeitsignal empfangen werden können. Ggf. muss der Standort verändert werden, bis ein störungsfreies Signal empfangen werden kann. Mit Hilfe eines USB-Oszilloskops wird die Signalqualität kurz überprüft.

Abbildung 7 - Die HIGH- und LOW-Signale werden im Sekundentakt gesendet. Bit 59 (LOW) erzeugt das Synchronisationssignal. Zwischen dem 58. Bit und dem 0. Bit der neuen Zeitinformation liegen ca. 1,8s (DCF-Modul der Fa. Reichelt).
Abbildung 8 - Während des Empfangs der Zeitzeichen können auch Störsignale eintreffen. Die LOW- (100 ms) und HIGH (200 ms) - Signale sind gut zu erkennen.Das Störsignal ist deutlich schmaler als 100ms. Aufgenommen am DCF-Modul der Fa. Reichelt.

Störsignale werden durch  Netzteile von Computern, Laptops, Leuchteinrichtungen, Monitore, Neonlampen, Schaltnetzteile u.v.a.m verursacht und können den Synchronisationsvorgang des DCF-Empfängers empfindlich stören. Abhilfe kann man nur schaffen, indem man sich mit dem DCF-Empfangsmodul möglichst weit weg bewegt von potentiellen Störquellen.

Das Programm synchronisierung.bs2

Terminalausgabe

Abbildung 9 - Im Terminalfenster wird angezeigt, wenn die Synchronisationsstelle im Zeitzeichen gefunden ist.

Wie arbeitet das Programm synchronisierung.bs2?

Zeilen 13 - 17

Endlosschleife, die jedes mal neu durchlaufen wird, sobald eine Synchronisationsstelle bestimmt wurde.

Zeilen 20 - 41

In diesem Unterprogramm findet der eigentliche Suchvorgang statt.

Abbildung 10 - Linke Spalte: Programmzeile, IZ_HIGH: Impulszähler_HIGH.

Übung 4 - Synchronisationssignal finden (Prop BoE, AB)

Der Propeller-Controller ist gegenüber seinem kleineren Bruder, der BASIC Stamp2, wesentlich höher getaktet und muss in Propeller-C/C++ programmiert werden. In der folgenden Übung wird ein Programm entwickelt, das die Synchronstelle im DCF77-Zeitsignal findet.

Synchronisationssignal finden
Material
  • 1x  DCF-Modul (Fa. Reichelt)
  • 1x  Datenblatt des DCF-Moduls
  • 1x  Board of Education mit Propeller Controller
  • diverse Steckdrähte
Aufgaben

 

  • Baue die Schaltung nach Schaltungsskizze auf.
  • Übertrage das Programm prop_synchronisierung.c in den Editor und speichere es ab.
  • Schließe die Spannungsversorgungen an.
  • Im Terminalfenster sollten nach kurzer Zeit die Messzeiten für die Impulsbreiten eines HIGH- und LOW-Signals sowie die Synchronstelle im Zeitsignal angezeigt werden.

Schaltungsaufbau

Das Programm prop_synchronisierung.c

Die Terminalausgabe

Druckversion | Sitemap
© Reinhard Rahner - Gettorf