Funkwecker


Erstellt: 2009-03-01Letzte Änderung: 2009-12-20 [vor 7 Jahren, 5 Monaten, 3 Tagen]

Funkwecker Nachdem ich mich jahrelang jeden Morgen von meiner Stereoanlage wecken ließ, habe ich mich nun endlich zum Bau des folgenden, auf einem AVR ATmega8 basierenden Funkweckers entschlossen.


Info Dieses Projekt wurde aufgrund des unschönen Designs leider abgebrochen. Ein neuer Funkwecker ist in Planung. Seinen Abschluss findet dieses Projekt im Fazit.

Zurück zur Hauptseite "Uhren"

Beschreibung

Bedienung

Es gibt einen Button auf der Geräteoberseite und zwei Taster (»Vor« und »Zurück«) an der Seite des Gerätes, mit denen man durch verschiedene Menüfunktionen Blättern kann, welche auf dem vierstelligen LED-Display angezeigt und durch zwei LEDs (grün und rot) optisch unterstützt werden.

Zur Verfügung stehen dabei neben dem DCF-Empfang das manuelle Einstellen der Uhrzeit und des Datums, die Konfiguration von 10 verschiedenen Alarmen mit individuell wählbaren "Klingeltönen" und einige weitere Optionen. Auch ein Countdown-Zähler ist vorhanden.

Im normalen Betrieb kann mit den Tastern zwischen der Anzeige der Uhrzeit, der Sekunden und des Datums umgeschaltet werden.

Das Menü betritt bzw. verlässt man mit einem gleichzeitigen, zweisekündigen Betätigen beider Taster.

Schaltausgang

Als kleines Schmankerl besitzt der Funkwecker einen Signalausgang, der über eine kleine Stereo-Klinkenbuchse der Außenwelt zur Verfügung steht. Dabei trägt die Spitze des eingesteckten Stereo-Klinkensteckers das Schaltsignal, die mittlere Kontaktfläche die Versorgungsspannung (VCC = 5V) und die untere Kontaktfläche die Masseverbindung (GND).

Es kann so auf einfachste Weise z.B. ein Relais an den Wecker gehängt werden, um die Stereoanlage oder ähnliches einzuschalten. Im Optionen-Menü des Funkweckers kann dabei festgelegt werden, ob im Alarmfall ein Dauersignal oder nur ein kurzer Puls an den Ausgang gelegt werden soll.

Nach oben

Funktionsweise

Display

Das Display besteht aus vier gemultiplexten Siebensegment-LED-Anzeigen und kann mittels PWM gedimmt werden.

Sound

Die Soundgenerierung erfolgt in dem Interrupt, der auch für das Multiplexing des Displays zuständig ist und hat nie sonderlich gut funktioniert. Die erzeugten Töne sind wahrlich gruselig - damit möchte man sich nicht wecken lassen. ;-)

Zeitzähler

Die gesetzte Zeit (entweder per DCF77-Empfang, noch nicht implementiert, oder per manuelle Eingabe) zählt der AVR über einen Interrupt weiter. Dieser wird 100 mal pro Sekunde ausgelöst und inkrementiert dabei einen Zehntelsekundenzähler. Erreicht dieser den Wert 100, wird die Zeit um eine Sekunde weitergezählt. Siehe Zeitbasis.

Tastenabfrage

Die Taster werden in Software entprellt und bei Überschreiten eines festen Schwellwert des Tastenzählers ausgewertet. Siehe Taster entprellen.

DCF77-Empfang

Das DCF77-Signal wird mit dem unter DCF77-Signalfilter beschriebenen Algorithmus entstört und empfangen. Die Implementierung der Auswertung des so empfangenen Signals ist im Code noch nicht erfolgt. Rechts gibt es jedoch ein Foto von meiner manuellen Auswertung des auf den beiden LEDs angezeigten Signals. ;-)

Nach oben

Fotos

Oben das Display und unten die Hauptplatine.

Die Vorderseite der Hauptplatine.

Links die vier Treibertransistoren der Display-Anzeigen, über dem AVR die vier dazugehörigen Basisvorwiderstände. Unter dem AVR der Lautsprechertreiber und der 4,608 MHz-Quarz.

Die Rückseite der Hauptplatine.

Viele, viele Vorwiderstände für das Display. :-D

Die gesamte Schaltung, gezwängt in die obere Hälfte des Gehäuses.

In der Mitte befindet sich der ISP-Stecker, rechts versteckt sich unter viel Heißkleber und ein paar Kabeln der DCF77-Empfänger von Pollin.

Das Netzteil. Unten ein kleiner 9V-Trafo mit Sicherung und Gleichrichter, darüber ein 7805 und zwei Glättungselkos.

Da unten im Gehäuse ein paar unbenutzte Bohrlöcher waren, habe ich ein kleines ESD-Tütchen gefaltet und als Schutz zwischen Gehäuse und Netzschaltung geklemmt.

Das Alarm-Menü und die normale Zeitanzeige.

Die Rückseite des Gehäuses. Man erkennt hinten den Ein-/Ausschalter, die Zugentlastung des Kabels und darüber den Schaltausgang in Form einer kleinen Stereo-Klinkenbuchse.

Rechts befinden sich die beiden Taster, oben erkennt man die Löcher, unter denen der Lautsprecher sitzt und dahinter den blauen Button.


Nach oben

Schaltplan

Die 7-Sement-Anzeigen müssen gemeinsame Kathoden (common cathode) haben. Alle gleichnamigen Anschlüsse müssen miteinander verbunden werden.

Schaltplan
Nach oben

Download

Den C-Sourcecode und mein Linux-Makefile gibt es hier zum Download.

Der Code ist unvollständig, chaotisch, ineffizient und ist hier nur zu Archivierungszwecken und für interessierte Besucher aufgeführt. Ich werde mich mit dem Code nicht weiter befassen und biete daher keinen Support dafür an.

Download: funkwecker-0.0.zip [10.20 kiB]
[479 Downloads]

Nach oben

Fazit

Entscheidung

Natürlich ist es nie schön, ein Projekt einfach so abzubrechen. Jedoch hatte ich gute Gründe dafür - man schaue sich nur einmal die Fotos an. Der DCF77-Empfang funktioniert nur, wenn das Display abgeschaltet ist, da durch das Multiplexing zu viel EM-Müll in die Antenne eingestreut wird. Die Soundgenerierung funktioniert nur sehr schlecht, da sie sich mit der Displayansteuerung einen einzigen Interrupt teilen muss. Und was ist schon ein Wecker ohne guten Weckton. Dazu kommt das hässliche Gehäuse des Funkweckers. Letztendlich ist mir einfach die Lust am Projekt vergangen.

Erfahrungen

Dieser Funkwecker und dessen teilweise Realisierung ist für mich dennoch eine wichtige Erfahrung gewesen. Meine ersten Schritte mit Multiplexing, PWM, Taster-Entprellung und DCF77-Empfang habe ich in diesem Projekt gemacht und im Werkzeugkoffer niedergeschrieben.

Ausblick

Ich entschuldige mich bei allen, die während der Bauphase ihr Interesse am Nachbau dieser Schaltung bei mir angemeldet haben. Daraus wird wohl ersteinmal nichts. So wie ich mich kenne, werde ich jedoch früher oder später einen neuen Funkwecker bauen. Abwarten. ;-)

Nach oben

» Webspace kostet Geld. Wenn du die mosfetkiller-Community unterstützen möchtest, deaktiviere doch bitte Deinen AdBlockerVielen Dank für Deine Unterstützung! :) «