Funkuhr msp430

dcf77_sanlage 

Projekt

DCF77 Funkempfänger

mit LCD Anzeige

Steuerung mit MSP430

 

 

Problem/ Aufgabenstellung

Ziel dieses Projektes ist eine Uhr zu bauen welche mit einem DCF77 Empfänger die genaue Uhrzeit, Datum und Wochentag zu empfangen und zu dekodieren und anschließend an LCD Display auszugeben.

DCF77 Sender in Mainflingen

 

Standort des Senders DCF77 ist die Sendefunkstelle Mainflingen (Koordinaten: 50°01′ Nord, 09°00′ Ost) etwa 25 km südöstlich von Frankfurt am Main.

rcc_dcf77_reichweite

Abbildung 1: Reichweite des Senders

Der Name DCF77 leitet sich von der verwendeten Trägerfrequenz von 77,5 kHz ab, welche zur Modulation des Signals verwendet wird.

 

DCF77 Signal

Abbildung 2: 50 kW Halbleitersender der Media Broadcast GmbH in Mainflingen zur Erzeugung des DCF77 Signals mit einer nominellen Leistung von 50 kW.

Abbildung 2: 50 kW Halbleitersender der Media Broadcast GmbH in Mainflingen zur Erzeugung des DCF77 Signals mit einer nominellen Leistung von 50 kW.

 

Modulation

Die Amplitude der DCF77 Trägerschwingung wird mit Sekundenmarken moduliert: Zu Beginn jeder Sekunde, mit Ausnahme der letzten Sekunde jeder Minute als Kennung für den folgenden Minutenbeginn, wird die Amplitude für die Dauer von 0,1 s oder 0,2 s phasensynchron mit der Trägerschwingung auf etwa 15 % abgesenkt. Die Restamplitude ermöglicht die Gewinnung einer kontinuierlichen Trägerschwingung und soll die Nutzung des DCF77-Trägers als Normalfrequenzsignal erleichtern. Die unterschiedliche Dauer der Sekundenmarken dient zur binären Kodierung von Uhrzeit und Datum.

 

Kodierung der digitalen Informationen in Puls Weiten Modulierte Signale

Abbildung 3:Kodierung der digitalen Informationen in Puls Weiten Modulierte Signale

Die unterschiedliche Dauer der auf modulierten Sekundenmarken dient zur binären Kodierung von Uhrzeit und Datum: Sekundenmarken mit einer Dauer von 0,1 s entsprechen der binären Null und solche mit einer Dauer von 0,2 s der binären Eins.

Kodierung

Es werden in einer Minute 59 Bits übertragen, wobei in der 60. Sekunde keine Amplitudenabsenkung erfolgt. Diese fehlende Absenkung wird zur Synchronisierung und zum Start einer neuen Minute verwendet.

Abbildung 4: Schema der Kodierung der mit DCF77 übertragenen Zeitinformation

Abbildung 4: Schema der Kodierung der mit DCF77 übertragenen Zeitinformation

Einmal während jeder Minute werden die Nummern von Minute, Stunde, Tag, Wochentag, Monat und Jahr BCD-kodiert übertragen (BCD: Binary Coded Decimal, jede Stelle einer Zahl wird separat kodiert). Vom Kalenderjahr werden nur die Einer- und Zehnerstelle übertragen, das Jahr 2004 also als 04. Der ausgesendete Kode enthält jeweils die Information für die folgende Minute.

Abbildung 5: Wertigkeit aller Bits eines kompletten DCF77 Datensatzes

Abbildung 5: Wertigkeit aller Bits eines kompletten DCF77 Datensatzes

Verwendete Hardware

Mikrocontroller

Da es sich um eine Uhr handelt welche üblicherweise im 24h Dauerbetrieb verwendet soll  und mit einer batteriegestützten Spannungsversorgung betrieben wird ist eine sehr sparsame CPU erforderlich.

Die 16-bit Mikrocontroller MSP430 der Firma Texas Instruments eignen sich hierfür besonders gut, da sie eine sehr geringe Stromaufnahme von nur  230 µA pro MHz benötigen.

Außerdem ist der verwendete DCF77 Empfänger nur mit 3,3 Volt zu betreiben, welches die MSP430 Serie als Betriebsspannung benötigt.

 

TI MSP430 Launchpad

Als Entwicklungssystem wird das TI Launchpad mit dem G2553 verwendet.

 

Abbildung 6: TI Launchpad

Abbildung 6: TI Launchpad

Dieses System hat folgende Vorteile:

  • Kosten von nur 4,30 Euro
  • Integrierter USB Programmer/ Debugger
  • 32 kHz Uhrenkristall
  • Geringer Stromverbrauch
  • Alle Anschlüsse des MSP’s als Buchsenleiste ausgeführt
  • 2 Taster, 2 LED‘s

MSP430-G2553

Der G2553 ist der größte Baustein der im Launchpad verwendet werden kann. Er hat einen Programmspeicher von 16 kilobyte und 512 byte SRAM.

DCF77 Empfänger Modul

Der Empfangsteil ist ein Pollin DCF-Modul mit einer Ferrit Antenne, welche auf die 77,5 kHz Trägerwelle abgestimmt ist.

Der DCF-Empfänger wird mit 3,3V betrieben und verfügt über einen seriellen Ausgang  (DATA) an welchen das DCF Signal anliegt.

Der DATA-PIN geht auf VDD(3,3 V) wenn die Trägeramplitude absinkt. Dadurch ergibt sich ein Puls-weiten Moduliertes Signal welches vom MSP430 ausgewertet werden kann.

 

Abbildung 7: Pollin DCF77 Modul

Abbildung 7: Pollin DCF77 Modul

 

 

 

 

 

DCF77

PIN

Symbol

Funktion

msp430

1

VDD

Betriebsspannung

VCC/3,6V

2

GND

Ground

GND

3

DATA

DCF Ausgang

P2.4

4

PON

Power ON

P2.5

Abbildung 8: Belegung der Anschlüsse am DCF77 Modul

 

4×20 Zeichen LCD Anzeige

Als Anzeige kommt ein LCD Display mit 4 Zeilen je 20 Zeichen zum Einsatz. Es verfügt über einen KS0066 Kontroller und wird mit 5V betrieben.

Die Eingänge sind jedoch 3,3V tolerant so das keine Pegelanpassung zwischen dem G2553 erfolgen muss.

 

Abbildung 9: LCD Anzeige

Abbildung 9: LCD Anzeige

 

LCD

PIN

Symbol

Funktion

msp430

1

Vss

GND

GND

2

Vdd

5V

Vcc

3

Vo

Contrast Adj.

Poti

4

RS

Funktion select

P1.1

5

R/W

Read/Write

GND

6

E

Enable Signal

P1.2

7

DB0

Data Bus Line

N.C.

8

DB1

Data Bus Line

N.C.

9

DB2

Data Bus Line

N.C.

10

DB3

Data Bus Line

N.C.

11

DB4

Data Bus Line

P1.4

12

DB5

Data Bus Line

P1.5

13

DB6

Data Bus Line

P1.6

14

DB7

Data Bus Line

P1.7

15

A/Vee

Anode / Light

N.C.

16

K

Kathode / Light

N.C.

Abbildung 10: Pin-Belegung des Displays

Platine

Die Entwicklung einer Basisplatine war nötig, um die einzelnen Komponenten wie Launchpad, Display und DCF-Empfänger verbinden zu können und dem Display eine verstellbare Kontrastspannung über das Potentiometer zur Verfügung stellen zu können.

Dies wurde über eine Streifenrasterplatine realisiert.

 

Abbildung 11: Basisplatine mit Streifenraster im RM 2,54

Abbildung 11: Basisplatine mit Streifenraster im RM 2,54

Gesamtsystem

 

Abbildung 12: Verbinden der einzelnen Komponenten mittels Jumper-wires

Abbildung 12: Verbinden der einzelnen Komponenten mittels Jumper-wires

PIN

board

Funktion

GPIO

msp430 G2553

GPIO

Funktion

board

PIN

1

VCC

3,3V

/

/

0V

GND

20

2

P1.0

LED1

Output

/

32,67kHz

XIN

19

3

P1.1

LCD/RS

Output

/

32,67kHz

XOUT

18

4

P1.2

LCD/E

Output

/

/

TEST

17

5

P1.3

S2

Input

Input

S1

RST

16

6

P1.4

LCD/DB4

Output

Output

LCD/DB7

P1.7

15

7

P1.5

LCD/DB5

Output

Output

LCD/DB6

P1.6

14

8

P2.0

N.C.

Input

Output

DCF/PON

P2.5

13

9

P2.1

N.C.

Input

Input

DCF/Data

P2.4

12

10

P2.2

N.C.

Input

Input

N.C.

P2.3

11

Abbildung 13: Verdrahtung Launchpad – Baseboard

 

Finite State Machine

Als Steuerung wurde ein sogenannter „Endlicher Zustandsautomat“ oder auch „Finite State Machine“ verwendet.

Solch ein Zustandsautomat hat folgende Vorteile:

  • Auch große Programme bleiben übersichtlich
  • Theoretisch können mehrere Automaten quasi „parallel“ betrieben werden
  • Leicht erweiterbar
  • Variable Ausführungszeit (Abarbeitung wird mit dem TimerA0-Interrupt alle 10ms getriggert)
  • Sauberer Zustandswechsel durch „IN_STATES“ und „OUT_STATES“

Der Automat besteht aus mehreren „DO_STATES“ die zyklisch durch das Hauptprogramm, hier alle 10ms,  aufgerufen werden, wobei immer nur ein einziger Zustand aktiv sein kann. Der aktuelle „DO_STATE“ wird ausgeführt und fragt ab ob ein Zustandswechsel auftritt.

Ist dies der Fall und der Zustand soll gewechselt werden, werden die Transitions aufgerufen. Zuerst wird die „OUT_STATE“ Transition des letzten Zustands ausgeführt anschließend wird die „IN_STATE“ Transition des neuen Zustands aufgerufen.

Dies Transitions werden im Gegensatz zur „DO_STATE“ nur ein einziges mal ausgeführt.

Abbildung 14: State Chart der FSM

Abbildung 14: State Chart der FSM

Video

Ein Testvideo mit Uhrenvergleich

Programm Anhang

Programm Code:

Funkuhr MSP430

Schreibe einen Kommentar

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

*