DCF77 Uhr / Frequenzcounter
Vom TTL-Grab zu den Modernen Techniken, das erste Projekt mit dem Atmega8 Mikrocontroller.30.08.2010: Verbesserung in der Anzeige und in der Pulsweitenmessung, jetzt mit dem Atmega168 Controller.
02.02.2011: Erweiterung der Zeitanzeige um die aktuelle Sonnenaufgang- und Sonnenuntergangszeit. Die Berechnung erfordert die math.h Bibliothek, die Formeln wurden der sehr zu empfehlenden Webseite http://lexikon.astronomie.info/zeitgleichung entnommen, Version 2005, dort in c++, wurde für c etwas umgestellt. Statt der double Variablen wurden float Variablen verwendet, die Genauigkeit ist ok und ein Lob für den GCC. Die Micro Controller können keine Gleitpunkt Arithmetik, alles per Software und das nur in zusätzlich ca. 3850 Bytes Programmcode.
03.02.2011: Kleine Korrekturen im source.
11.02.2011: Nachtrag zu float: AVR-GCC benutzt z.Z. immer float, die Genauigkeit zu double wurde in einem PC-Programm simuliert. Für die meisten Tage im Jahr ist das Ergebnis identisch, an manchen Tagen ist die Abweichung +-1 min. IMO ausreichend, denn grundsätzlich hat diese Formel auch Fehler gegenüber den wahren Abläufen im Weltall.
12.06.2012: Für die Anzeige der Uhr kann die Helligkeit der Hintergrundbeleuchtung für das Display in 4 verschiedenen Stufen ausgewählt werden (PWM).
Frequenzmessung: Wenn die Pulsweite kleiner 10% ist, wird diese mit einer Nachkommastelle angezeigt.

.
Die Umschaltung Uhr / Frequenz counter erfolgt mit dem Kippschalter rechts oben, gleichzeitig +5V auf die Vorteiler Platine.
Die menu Steuerung wurde über 2 Taster realisiert: Set und parm++ .
Zuerst wird die Taste parm++ betätigt bis der gewünschte Parameter in der esten Zeile angezeigt wird (wrap around).
Mit dem Taster Set wird der Parameter ausgewählt und es erscheint der im Gerät eingestellte Wert. Mit dem Taster parm++ kann ein neuer
Wert ausgewählt werden, mit einen erneuten SET wird der Wert übernommen und das menu beendet.
Anzeige der Zeiten für den Sonnenaufgang und Sonnenuntergang für den 2.2.2011. Datum und diese Anzeige je 10 Sekunden im Wechsel.
11.2.2011: Hier die Anzeige von 0-11:59 Uhr, ab 12 Uhr wird die Sonnenuntergangszeit angezeigt und die Aufgangszeit des nächsten Tages
in der Form SU hh:mm A hh:mm.

Anzeige der Frequenz, Postive Pulsweite in % und Zeitdauer

Anzeige der Frequenz, Negative Pulsweite in % und Zeitdauer

Anzeige der Frequenz, Cycle Time und Positive Pulweite in %

Menu Beschreibung:
DCF77 menu
DCF77 parm | Werte (default) | Bedeutung |
retur | kein | Verlassen der Menusteuerung |
Licht | ret | menu eine Stufe zurück |
aus | Hintergrundbeleuchtung des Displays ausschalten | |
12,5% | Hintergrundbeleuchtung des Displays 12,5% | |
25,0% | Hintergrundbeleuchtung des Displays 25,0% | |
50,0% | Hintergrundbeleuchtung des Displays 50,0% | |
99,9% | Hintergrundbeleuchtung des Displays 99,9% | |
P LED | ret | menu eine Stufe zurück |
aus | Die LED für den DCF77 Impuls ist nicht aktiv | |
ein | Die LED für den DCF77 Impuls ist aktiv | |
Sleep | ret | menu eine Stufe zurück |
aus | Sleep Modus aus, jede Minute wird das Zeitsignal ausgewertet | |
ein | Sleep Modus ein, nur jede Stunde wird das Zeitsignal ausgewertet | |
Trace | ret | menu eine Stufe zurück |
aus | Zeitanzeige normal | |
ein | Das 64 Bit Zeitsignalregister wird hexadezimal angezeigt |
Frequencounter menu
Frequenzcounter parm |
Werte (default) | Bedeutung |
retur | kein | Verlassen der Menusteuerung |
Modus | retur | menu eine Stufe zurück |
F o.VT | Frequenzmessung ohne Vorteiler 1:16 | |
F m.VT | Frequenzmessung mit Vorteiler 1:16 | |
F auto | Frequenzmessung, Vorteiler automatisch ein/aus | |
Drehz. | Anzeige der Drehzahl in 1/min | |
Teiler | ret | menu eine Stufe zurück |
1 | Teiler = 1 | |
2 | Teiler = 2, für die Tachosignalauswertung, nur im Drez.Modus | |
Cycle | ret | menu eine Stufe zurück |
1 s | Messzyklus je 1 Sekunde | |
2 s | Messzyklus je 2 Sekunden | |
4 s | Messzyklus je 4 Sekunden | |
10 s | Messzyklus je 10 Sekunden, Frequenz mit einer Nachkommastelle anzeigen | |
Licht | ret | menu eine Stufe zurück |
aus | Hintergrundbeleuchtung des Displays ausschalten | |
ein | Hintergrundbeleuchtung des Displays einschalten | |
Trace | ret | menu eine stufe zurück |
aus | Anzeige Normal | |
ein | Interne Zähler anzeigen | |
Pulse |
retur |
menu eine stufe zurück |
Positiv |
Pulsweite von positive bis
negative Flanke |
|
Negativ |
Pulsweite von negative bis positive Flanke | |
Cycle |
Cycle Time anzeigen |
Wenn innerhalb von 10 Sekunden keine Auswahl getroffen wird, verschwindet die menu-Anzeige.
Empfang des DCF77 Signals mit einem handelsüblichen Empfänger (www.conrad.de). Der Aufbau wurde auf Lochrasterplatinen realisiert, für das 2 zeilige Display (2*16) wurde eine Ansteuerung über zwei 5 Bit shiftregister = 10 Bit gewählt, ursprünglich sollte die Hintergrundbeleuchtung auch darüber gesteuert werden, aber dann flackert diese, deshalb die Ansteuerung der Hintergrundbeleuchtung über einen eigenen Port.
Der Vorteiler wird mit einem Portausgang gesteuert.
Die Frequenzmessung sollte bis ca. 30Mhz gehen.
Die Pulsweitenmessung geht nur ohne Vorteiler, Verbesserung der Messung da neue Messtechnik mit eigenem Quarz.
Das Eingangssignal wird im TTL Pegel erwartet, +5V und die Masse ist über 2 Buchsen abzugreifen, damit können beliebige Vorstufen betrieben werden.
Hier die Innenansicht:

Die Schaltung:


Porterweiterung für das LCD-Display:

Beispiel für einen optischer Sensor für die Drezahlmessung. Dazu wird auf dem zu messenden Objekt eine kleine hochreflektierende Folie aufgeklebt:

Der Rohbau des Sensors:

Der Quellcode des atmega168 in c für den WINAVR Compiler (ohne Gewähr und ohne Rücksicht auf Patente):
Verzeichnis abc
Verzeichnis dcf77_freq