Pfad: Home => AVR-Übersicht => Anwendungen => DCF77-Weckuhr m16
DCF77 Weckuhr Anwendungen von
AVR-Einchip-Prozessoren AT90S, ATtiny, ATmega und ATxmega
DCF77 Weckuhr mit LCD
Logo

DCF77-Weckuhr mit LCD

Dieses Anwendungsprojekt mit einem ATmega16 ist eine Weckuhr mit den folgenden Eigenschaften:

0 Inhalt

  1. Hardware
    1. Weckuhrschaltung
    2. Der Eigenbau-DCF77-Empfänger
  2. Aufbau und Bedienung
    1. Aufbau
    2. Inbetriebnahme
    3. Bedienung
  3. Software
    1. Quellcode, Assemblieren und Brennen
    2. Test- und Inbetriebnahmehilfen
    3. DCF77-Signaldekodierung und Fehlerdiagnose
Die gesamte Beschreibung der DCF77-Uhr-ATmega16 gibt es hier als PDF (104 Seiten, 3,1 MB).

1 Hardware

Die Hardware besteht aus der eigentlichen Weckuhr und dem DCF77-Empfänger.

1.1 Weckuhrschaltung

Schaltbild Weckuhr Die Weckuhr besteht aus dem Controller ATmega16 und der Peripherie.

Der Prozessortakt wird durch den Quarz von 3,21768 Mhz an den Pins XTAL1 und XTAL2 bestimmt. Aus diesem Takt leitet sich der Sekundenimpuls und die Uhrzeit bzw. das Datum ab, wenn kein DCF-Empfänger angeschlossen ist oder nicht funktioniert. Es können auch Quarze mit 2,048 oder 2,097152 oder 2,4576 MHz angeschlossen werden, dazu ist lediglich eine Zeile im Assembler-Quellcode zu ändern. Mit einem Quarz mit 4,194304 MHz können nur die zwei tiefsten Töne der 70-stufigen Tonleiter nicht korrekt gespielt werden und müssen im Quellcode korrigiert werden, ansonsten geht auch diese sehr hohe Quarzfrequenz.

Mit dem ISP6-Interface an den Pins RESET, MOSI, MISO und SCK kann der Controller programmiert werden.

Angeschlossen ist eine vierzeilige LCD-Anzeige mit 20 Zeichen. Der 10k-Trimmer justiert den LCD-Kontrast. Die Hintergrundbeleuchtung an Pin 15 und 16 wird aus der Betriebsspannung mit einem Vorwiderstand von 220Ω am PWM-Ausgang OC2 des Timers 2 geschaltet.

An den Pins ADC0, ADC1 und ADC2 sind angeschlossen: das Potentiometer zur Einstellung von Datum, Uhrzeit und Weckzeit, der Fototransistor für die Messung der Umgebungshelligkeit und, falls ein DCF77-Empfänger mit Signalpegelausgang verwendet wird, der Signalpegel. Die Versorgungsspannung für den AD-Wandler wird über die 22µH-Drossel und einen Keramikkondensator von 100n gefiltert und AVCC zugeführt. Die Referenzspannung AREF wird mit 100n abgeblockt.

Das Signal des DCF77-Empfängers ist an INT0 angeschlossen. Die Software arbeitet mit Aktiv-Low- und Aktiv-High-Signalen korrekt (siehe dazu die Signalauswertungs-Software).

Die drei Tasten für die Bedienung sind an PB0, PB1 und PB2 angeschlossen.

Am OC1A-Ausgang von Timer 1 ist über einen Elko ein Lautsprecher angeschlossen. Er spielt beim Wecken diverse Melodien.

Die Stromversorgung erfolgt aus einem 9V-Trafonetzteil. Es speist die Schaltung über eine Schottky-Diode. Parallel erfolgt bei Ausfall des Netzes die Versorgung aus vier AAA-Akkus, ebenfall über eine Schottky-Diode abgetrennt. Der Akkusatz wird aus der gleichgerichteten 9V-Spannung über den Widerstand von 3k3 aufgeladen (Ladestrom max. 3 mA bei vollständiger Entladung, ca. 1 mA im geladenen Zustand).

1.2 Der Eigenbau-DCF77-Empfänger

Als DCF77-Empfänger kann ein fertig aufgebautes Modul oder ein Eigenbau verwendet werden. Ein geeigneter sehr empfindlicher und trennscharfer Empfänger ist hier beschrieben. Er wurde bei der Entwicklung der Software verwendet.

2 Aufbau, Inbetriebnahme und Bedienung

2.1 Aufbau

DCF77 m16 Prozessorplatine Der Controller-Teil wurde auf einer doppelseitig kaschierten Lochrasterplatine aufgebaut, so dass die 16-polige Buchsenleiste zur LCD auf der Verdrahtungsseite liegt und die LCD mit ihrer Steckerleiste aufgesteckt werden kann.

Zu erkennen sind auch die sechspolige ISP-Steckverbindung links oben und die 16-polige Steckverbindung rechts oben, die über ein Flachbandkabel alle externen Komponenten kontaktiert. Die Stromversorgung erfolgt über die zweipolige Schraubverbindung rechts unten.

DCF77 Einbau in das Gehaeuse Hier ist der Einbau der Komponenten in ein Plastikgehäuse zu sehen. Links das Netzteil, rechts der Lautsprecher, unten der Prozessorteil und oben die kleine Platine mit den Tasten und dem Fototransistor.

Auf dem Boden des Gehäuses sind der DCF77-Superhet und die vier AAA-Akkus montiert. Diese Nähe zwischen der Empfangsantenne und dem Lautsprecher bedingt übrigens, dass der Empfänger bei aktiver Musikausgabe zustopft. Ist die Musikausgabe zu Ende, dauert es einige Sekunden, bis die Störungen wieder abgeklungen sind und der Empfang wieder fehlerfrei erfolgt.

2.2 Inbetriebnahme

DCF77 m16 Fuses Im ersten Inbetriebnahmeschritt sind die Fuses des ATmega16 auf den externen Quarz umzuprogrammieren. Die abgebildeten Parameter sollten mit dem Programmiergerät in den Chip programmiert werden, damit der Prozessor mit 3,2768 MHz läuft.

Um die weitere Inbetriebnahme der Schaltung zu erleichtern, sind in der Software eine Reihe von Testmöglichkeiten für alle externen Komponenten vorgesehen. Diese können durch Setzen von verschiedenen Debug-Schaltern eingeschaltet werden. Alle verfügbaren Debug-Optionen sind hier ausführlicher beschrieben. Das Setzen von einem der Debug-Schalter lädt zusätzlich die Include-Datei debug_code.inc hinzu, der im Normalbetrieb nicht mit in das Flash geladen wird.

DCF77 LCD debugging Zuerst sollte die LCD getestet werden, da ohne sie keine weiteren Testschritte machbar sind. Durch Setzen des Schalters dbgLcd, Assemblieren und Brennen wird der geänderte Code ausgeführt und die Eröffnungsmeldung ausgegeben. Daraufhin wird kein weiterer Programmcode ausgeführt. Versagt dieser Schritt, muss erst der Fehler gesucht und beseitigt werden, bevor die Inbetriebnahme weitergehen kann.

Weitere Testmöglichkeiten sind:
  1. dbgAdc: kann verwendet werden, um einen AD-Wandler-Kanal auf Ergebnisse hin zu untersuchen,
  2. dbgKey: kann verwendet werden um Reaktionen der angeschlossenen Tasten sichtbar zu machen,
  3. dbgSpk: gibt auf dem Lautsprecher einen 1.000Hz-Ton aus,
  4. dbgDcfDur: gibt die Dauer von Low- und High-Signalen am DCF77-Signaleingang in Millisekunden aus,
  5. dbgDcfSig: stellt Signalfehler am DCF77-Signaleingang mit längerem Text dar,
  6. dbgDcfBits: stellt die letzten acht empfangenen Bits am DCF77-Eingang fortlaufend dar, hier die ersten acht bits einer Minute: Debug DCF bits
  7. dbgMusic: stellt verschiedene Parameter beim Abspielen von Musikstücken fortlaufend dar.
Mit diesem Instrumentarium lassen sich alle Hardwarekomponenten testen und in Betrieb nehmen.

2.3 Bedienung

Tastenbedienung der DCF-Uhr Die Bedienung des Weckers ist denkbar einfach. Die Tastenzuordnung bei den vier Betriebszuständen ist leicht zu merken und die Einstellungen sind fix vorgenommen.

Alle Tastenfunktionen erscheinen in Zeile 4. Eine ausführliche Darstellung der Tastenfunktionen gibt es hier.

3 Software

3.1 Software im HTML-Format

Die gesamte Software im HTML-Format kann hier im Browser angeschaut werden.

3.2 Download der Assembler-Dateien

Die folgenden Dateien sind herunterzuladen und in das gleiche Verzeichnis zu speichern:
  1. dcf77_m16_v4_de.asm (Hauptdatei),
  2. lcd_8_routinen.inc (LCD-Routinen),
  3. musik_code.inc (Musik und Melodien),
  4. debug_code_de.inc (Debug-Routinen).
Die Debug-Schalter in der Hauptdatei werden eingestellt (final: alle 0), assembliert und die .hex-Datei in den Controller geflasht. Wer nicht weiß wie assembliert wird: hier gibt es eine Anleitung.

Bitte beim Programmieren nicht vergessen, den Takt per Fuses auf den externen Quarz umzustellen und, wenn nicht 3,2768 MHz, dessen Frequenz in der Software unter "Einstellbare Konstanten" vor dem Assemblieren anzugeben.

3.3 Beschreibung der Software, Dokumentation

Die gesamte Software ist hier ausführlich beschrieben, die einzelnen Funktionen werden dort erläutert.

©2018 by http://www.avr-asm-tutorial.net