Man mag in der heutigen Zeit, wo man für 4,95 € einen fertigen Wecker kaufen kann, den Sinn dieses Projektes nicht ganz nachvollziehen können. Aber es hat durchaus seine Berechtigung, denn ich fand
einfach kein Gerät, welches meine Wünsche ohne Einschränkungen erfüllen konnte: selbstleuchtende Anzeige, 2 Weckzeiten, einstellbare Weckerlautstärke, Speicherung der Weckzeiten bei Netzausfall
ohne zusätzliche Batterie, DCF77 oder HBG75 Synchronisation und einfache Bedienung. Also machte ich mich selbst ans Werk und baute diesen Wecker mit einem AT90S4434 (bzw. AT90S8535 oder ATmega8535) auf.
Letzte Bearbeitung: 10.03.2007
Beschreibung
Nachdem ich nun einige Erfahrungen mit meiner großen Multifunktionsuhr gesammelt hatte und ich mir sowieso einen neuen Wecker zulegen wollte, kam mir die Idee, eine kleine Uhrenversion in Form eines Weckers zu bauen. Dabei ist ein schönes kleines Gerät mit folgenden Funktionen dabei herausgekommen:
Schaltung
Die Schaltung ist im Vergleich zur Multifunktionsuhr wesentlich einfacher. Da hier nur 4 Anzeigeelemente bedient werden müssen, reichen die I/O-Anschlüsse des verwendeten Controllers für eine direkte
Ansteuerung der Anzeigen aus. Außerdem sind die Ausgänge des µC bis 20 mA belastbar, so dass sogar auf zusätzliche Treiber verzichtet werden kann.
Zum den Anschlüssen des µC: Die Ports PD0-PD7 steuern die rechte Anzeigestelle inklusive Dezimalpunkt an. PC0-PC6 sind für die nächste Stelle (zweite von rechts) zuständig. Hier wird der
Dezimalpunkt nicht gebraucht, deshalb bekommt PC7 eine andere Verwendung und bedient den Tongenerator. Die nächste Anzeigestelle arbeitet wieder mit Dezimalpunkt und belegt deshalb einen kompletten Port (PA0-PA7).
Die Ansteuerung der linken Anzeigestelle weicht etwas von den anderen ab. Da hier nur die Ziffern 1 und 2 angezeigt werden müssen, kann man die Ansteuerung wesentlich vereinfachen. Es werden nur die Segmente b und
c einzeln gebraucht und die Segmente a, d, e und g können zu einer Gruppe zusammengefasst werden. Insgesamt reichen also 3 Portanschlüsse (PB0-PB2) aus. Die 5 verbleibenden Anschlüsse arbeiten als
Eingänge: Einer davon (PB3) liest die Daten vom DCF77-Empfänger ein und der Rest (PB4-PB7) überwacht die 4 Bedientasten.
Die zur Anzeige führenden µC-Anschlüsse enden zunächst auf einem 34-poligen Pfostensteckverbinder. Dieser ist so auf der Elektronikplatine angeordnet, dass die Anzeigeplatine direkt von oben
aufgesteckt werden kann. Die unverzichtbaren LED-Vorwiderstände habe ich auf der Anzeigeplatine untergebracht, da hier mehr Platz zur Verfügung stand. Die Werte von 1 kOhm erscheinen auf den ersten Blick etwas
hoch, aber die verwendeten Anzeigeelemente SA08-11SWRA leuchten so intensiv, dass man den Strom auf 3,5 mA reduzieren kann.
Allerdings ist das bei Dunkelheit auch noch zu viel, deshalb habe ich noch eine zusätzliche Dimmschaltung mit D6-D10, Tr2, IC2/2 und R8-R10 eingebaut. Bei Tageslicht ist der Fotowiderstand relativ niederohmig, so
dass das Gatter 2 von IC2 einen H-Pegel erkennt, welcher einen Low-Pegel am Ausgang zur Folge hat und den Tr2 durchsteuert. Die Anzeige hat in diesem Fall die volle Betriebsspannung zur Verfügung. In der
Dämmerung wird der Fotowiderstand hochohmig bis schließlich das IC2/2-Gatter umschaltet und den Tr2 sperrt. Dann wird die Betriebsspannung um die Flussspannung der 5 Dioden D6-D10 reduziert und beträgt
nur noch knapp 2V, was eine angenehme Helligkeit während der Nacht zur Folge hat.
Ursprünglich wollte ich die Helligkeit per PWM ohne zusätzliche Hardware steuern, was im Test auch sehr gut geklappt hat. Allerdings zeigte sich in der Praxis das gleiche Problem wie bei der Multifunktionsuhr:
die getaktete Anzeige stört den DCF77-Empfang. Also habe ich mich für die Hardware-Variante entschieden, die zudem den Vorteil hat, dass sie sich immer zu den optimalen Zeiten aktiviert.
Und jetzt zu einem wichtigen Schaltungsteil, der zu jedem Wecker gehört: die Tonerzeugung. In der ursprünglich geplanten Weckerversion sollte der Ton komplett vom µC generiert werden, was jede Menge
Bauteile eingespart hätte. Das hat auch funktioniert, aber der Ton war leider ein wenig unsauber. Die Ursache dafür liegt an einem Timer-Interrupt, der alle 10 ms aktiviert wird und somit die Tonausgabe
stört. Auf den Timer kann ich aber schlecht verzichten, weil er die Zeitzählung, den DCF-Empfang, die Tastenabfrage und Entprellung und teilweise auch die Anzeige steuert. Also wird über den
µC-Anschluss PC7 nicht direkt die Tonfrequenz ausgegeben, sondern nur ein High-Pegel als Aktivierungssignal. Dieses führt zu dem als Generator geschalteten Schmitt-Trigger-Gatter IC2/4 und dient als Freigabe
für den Generator. Der Generatorausgang wird invertiert auf ein Potentiometer zur Lautstärkeeinstellung geführt und gelangt schließlich über den Treiber Tr1 zum Lautsprecher. Die
zusätzliche Invertierung mit IC2/3 ist notwendig, damit der Lautsprecher im Ruhezustand des Generators stromlos ist.
Die Frequenz des Generators wird durch R2 und C7 bestimmt. Ich habe die Werte so bemessen, dass ein relativ hoher Piep-Ton erzeugt wird. Wer das nicht mag, kann durch Vergrößerung von C7 die Frequenz
niedriger einstellen. Dann kommt man auch in den Bereich der Resonanzfrequenz des benutzten Mini-Lautsprechers (oft als Sound Transducer bezeichnet) und dann wird es fast unerträglich laut. Für Leute mit
tiefem Schlaf aber ist diese Einstellung aber vielleicht empfehlenswert :-)
Die Anschlüsse PB5-PB7 und RESET haben noch eine Zusatzfunktion: Über sie lässt sich der µC programmieren. Ich habe diese 4 Anschlüsse und einen Masseanschluss auf einen 5-poligen Steckverbinder geführt, so dass man den µC jederzeit neu programmieren kann, ohne ihn aus der Schaltung entfernen zu müssen.
Zum Schluss noch ein Wort zur Stromversorgung: Hier kann ein einfaches Steckernetzgerät verwendet werden, welches einen Strom von 150-200 mA liefern kann. Die anliegende Wechselspannung sollte dabei mindestes 7V betragen. Es ist auch ein Betrieb mit Gleichspannung möglich, wobei die Polarität keine Rolle spielt. Allerdings sind dann mindestens 10V als Eingangsspannung erforderlich. Bei höheren Eingangsspannungen empfiehlt es sich, den Spannungsregler auf ein kleines Kühlblech zu montieren.
Diese Stückliste enthält alle Bauelemente, die für den Wecker erforderlich sind.
Die Datei wecker-pl.zip enthält ein komplettes Platinenlayout für den Wecker in Form von PDF-Dateien. Dieses wurde von Lothar Jasper entwickelt und zur Verfügung gestellt, vielen Dank.
Noch ein paar Hinweise zu den verwendeten Bauelementen:
Und noch ein Hinweis zum DCF77-Empfänger: Es gibt hier verschiedene Ausführungen, einige besitzen nur einen Ausgang (einen solchen habe ich verwendet) und einige haben 2 Ausgänge. Wenn man einen mit 2 Ausgängen benutzt, dann muss unbedingt der invertierte Ausgang verwendet werden. Neuere Empfänger haben noch einen Anschluss "PON", dieser muss auf Masse liegen. Auch wenn im Text nur DCF77 erwähnt wird: es ist auch möglich, den Wecker mit einem HBG75 Empfänger zu betreiben.
Die aktuelle Software v1.05 vom 04.03.2007 für den Mikrocontroller kann man komplett als Zip-Datei downloaden. Hier ist der kommentierte Quelltext und das fertige HEX- und EEPROM-File enthalten. Es gibt noch eine modifizierte Software v1.05 mit H-aktiven LED-Ausgängen. Diese ermöglicht den Anschluss von Anzeigen mit gemeinsamer Kathode oder den Anschluss von Großanzeigen über Treiber-ICs.
Bei Verwendung eines ATmega8535 ist die richtige Einstellung der Fuse-Bits wichtig. Das Bild links zeigt die Einstellung im AVR-Studio.
So sieht die Einstellung in PonyProg für den ATmega8535 aus.
Bedienung
Alle Funktionen werden mit 4 Bedientasten gesteuert. Mit der Taste AL1 wird der Alarm 1 eingeschaltet, dabei wird für 5 Sekunden die Weckzeit 1 angezeigt. Die Anzeige flackert während dieser Zeit, damit man diesen Zustand von der normalen Zeitanzeige unterscheiden kann. Innerhalb dieser 5 Sekunden hat man die Möglichkeit, mit den Tasten Std und Min die Weckzeit 1 zu verändern, wobei selbstverständlich nach jedem Tastendruck der 5-Sekunden-Timeout wieder von vorn beginnt. Ein Druck auf die Taste Std bewirkt die Erhöhung der Weckzeit 1 um eine Stunde, die Taste Min bewirkt eine Erhöhung um 5 Minuten. Das ist zunächst etwas ungewöhnlich, aber durchaus praktisch, denn so kommt man schneller an die gewünschte Zeit heran und die Zwischenzeiten braucht man eigentlich gar nicht (wer stellt schon seinen Wecker auf 6:01 Uhr?).
Es ist auch möglich, die Weckzeit rückwärts einzustellen, also z.B. die Stunden von 6 auf 5 zu setzen: Man drückt auf die Taste Std, hält diese fest und drückt zusätzlich die Taste Min so oft, bis man die gewünschte Stunde erreicht hat. Mit den Minuten funktioniert das genauso, dann werden die Tasten in der umgekehrten Reihenfolge verwendet. Da diese Logik vielleicht nicht von jedem nachvollzogen kann, will ich nicht weiter darauf eingehen :-)
5 Sekunden nach der letzten Eingabe wechselt die Anzeige wieder zur normalen Uhrzeit, allerdings leuchtet jetzt der äußerst rechte Dezimalpunkt als Bestätigung für die aktivierte Weckzeit 1. Die Weckzeit wird (falls sie sich verändert hat) im EEPROM abgespeichert, außerdem wird der veränderte Alarmstatus im EEPROM vermerkt, so dass sich die Uhr nach einem Netzausfall an den aktivierten Alarm 1 erinnert. Der Alarm kann wieder deaktiviert werden indem man erneut AL1 oder AL2 drückt. Der rechte Dezimalpunkt verlischt dann wieder.
Das Einstellen der Weckzeit 2 erfolgt ebenso wie das Einstellen der Weckzeit 1, hier muss nur anstatt AL1 die Taste AL2 gedrückt werden. 5 Sekunden nach der Einstellung der Weckzeit 2 kehrt auch hier die Anzeige wieder zur Uhrzeit zurück, allerdings blinkt dann der rechte Dezimalpunkt als Bestätigung für den aktivierten Alarm 2. Es ist übrigens nicht vorgesehen, beide Weckzeiten gleichzeitig zu aktivieren.
Wird nun irgendwann die aktivierte Weckzeit 1 oder 2 erreicht, dann ertönt das Wecksignal. Dieses besteht aus 3 kurzen Pieptönen und einer anschließenden gleichlangen Pause und wird innerhalb einer Minute 60 mal wiederholt. Danach wird das Wecksignal wieder abgeschaltet, der Alarm bleibt aber aktiviert. Üblicherweise wird man das Wecksignal aber nicht eine Minute lang ertragen wollen, deshalb kann man es durch Drücken einer beliebigen Taste abschalten, wobei der Alarm auch gleichzeitig deaktiviert wird.
Während der normalen Zeitanzeige kann man durch Drücken der Taste Std oder Min zur Sekundenanzeige wechseln. Der Dezimalpunkt, der normalerweise zwischen den Stunden und Minuten gleichmäßig blinkt, zeigt jetzt direkt die eingehende Impulse des DCF77-Empfängers an. So kann man bei Empfangsproblemen nachschauen, ob überhaupt ein DCF-Signal empfangen wird. Ein nochmaliger Druck auf Std oder Min schaltet wieder zur normalen Zeitanzeige zurück.
Erwähnenswert ist noch, dass beim Einschalten der Uhr zunächst für 2 Sekunden die Versionsnummer der Software angezeigt wird. Danach erscheint die Anzeige 0.00, da ja noch keine Synchronisation mit der DCF77-Zeit stattgefunden hat. Diese Aktion dauert bei fehlerfreiem Empfang zwischen 1:40 und 2:59 Minuten und während dieser Zeit leuchtet der sonst blinkende Dezimalpunkt zwischen Stunden und Minuten ständig. Falls vorher ein Alarm aktiviert war, leuchtet oder blinkt der rechte Dezimalpunkt.
Aufbau der Platinen
Der Wecker wurde auf 2 Punktrasterplatinen aufgebaut: Die Elektronikplatine enthält (wie der Name schon sagt) die gesamte Elektronik und auf der Anzeigeplatine sind die Anzeigeelemente sowie die dazugehörigen
Vorwiderstände untergebracht.
Das nebenstehende Bild zeigt die Elektronikplatine von oben. Auf der rechten Seite oben befindet sich eine Klinkenbuchse für die Stromzuführung. Normalerweise gehört hier ein Hohlsteckeranschluss hin,
aber dieser hätte von der Höhe her nicht ins Gehäuse gepasst. Darunter sind die Gleichrichterdioden, der Ladekondensator und der Spannungsregler (mit Kühlblech) zu sehen. Oben in der Mitte befindet
sich der DCF77-Empfänger und links neben der kleinen Empfängerplatine der Fotowiderstand. Da das Gehäuse transparent wird, kann der Fotowiderstand direkt auf der Platine platziert werden.
In der Mitte ist deutlich der Steckverbinder für die Anzeigen, der µC und der Lautstärkesteller zu erkennen. Ganz unten befinden sich die Bedientasten und dazwischen der Quarz für den µC sowie
der Lautsprecher.
Schauen wir uns das Ganze von unten an. Für die Verdrahtung der Lötpunkte habe ich unterschiedliches Material verwendet: Masse- und Stromversorgungsleitungen sind mit einer Drahtstärke von 0,5 mm verlegt
worden und für alle Signalleitungen verwendete ich 0,3 mm Draht. Die gesamte Verdrahtung ist relativ unkritisch, aber 2 Dinge sind zu beachten: Der Quarz sollte mit möglichst kurzen Drähten an den
µC angeschlossen werden und die 100 nF Stützkondensatoren sind möglichst nah an den ICs anzuordnen.
Unter den 4 Anzeigeelementen sind die 29 Vorwiderstände angeordnet. Die Anschlüsse führen von einer Pfostenbuchse über ein kurzes Stück Flachbandkabel zur Platine und werden auf der
Rückseite entsprechend verbunden.
Nach der vollständigen Prüfung der Verdrahtung habe ich die Pfostenbuchse mittels Zweikomponenten-Kleber an der Platine befestigt.
Und das ist die Rückseite der Anzeigeplatine. Die Verdrahtung zwischen den Vorwiderständen und den Flachbandkabelanschlüssen ist etwas knifflig, aber durchaus machbar.
Hier sind beide Platinen bereits in einem Acryl-Gehäuse eingebaut.
Das ist dann das Endergebnis, wenn man beide Platinen zusammensteckt. Der Einsteller für die Weckerlautstärke befindet sich jetzt unter dem Gehäuse der Anzeigeplatine. Zum Einstellen der Lautstärke
ist es erforderlich, die Anzeigeplatine abzuziehen, was man aber ohne Bedenken bei eingeschaltetem Wecker tun kann - echtes Plug & Play :-)