Sonnenaufgangssimulation mit einem Lichtwecker

Frontansicht

Inhalt

  1. Die Grundidee
  2. Der Radiowecker
  3. Das Gehäuse
  4. Die Platine
  5. Der PIC
  6. Die Nulldurchgangserkennung
  7. Die Phasenabschnittsdimmung
  8. Nachwort
  9. Download

Die Grundidee

Wir bauen mit Hilfe eines Mikrocontroller und eines alten Radiowecker, einen Lichtwecker. Der Radiowecker wird dabei nur unwesentlich verändert. Löst der Radiowecker einen Alarm aus, beginnt unser Mikrocontroller mit der Arbeit.

Der Benutzer kann dabei Uhr- und Weckzeit am Radiowecker einstellen und erhält über dessen Display eine optische Rückmeldung. Lediglich die Verbindungen des Alarmsignals, die ursprünglich das Radio aktivierten, werden auf den PIC umgeleitet. Tritt ein Alarm auf, betätigt der PIC den "Alarm-Aus"-Knopf des Radioweckers und beginnt mit der Simulation eines Sonnenaufgangs. Der Benutzer realisiert diesen Vorgang nicht. Später betätigt der PIC den "Radio-an"-Knopf des Weckers um das Radio zuzuschalten.

Der Radiowecker

Zum Einsatz kommt ein alter Radiowecker mit TMS3450 Controller. Da das Gehäuse ein einer Stelle bereits beschädigt ist, wird es nicht weiter benutzt. Auf der Platine werden die Masseverbindungen zum Display unterbrochen und Kabel angelötet (dahinter später ein Relais). Somit lässt sich das Display später in der Nacht abschalten und blendet nicht.

Das Gehäuse

Frontseite

Die Fertigung des Gehäuse machte die größte Arbeit. Wir haben in der Werkstatt noch eine kleine Holzkiste mit Klappdeckel gefunden, in die 8 Löcher und ein Öffnung für das Display gebohrt/gefräst wurden. Daraufhin wurde die Schachtel schwarz lackiert und Klarlack gesprüht. Auf der Rückseite befinden sich zwei Löcher für den Stecker sowie eine Öffnung für das Stromkabel. Auf der Vorderseite wurden das Display und die Taster für das Bedienen des Radios sowie das Stellen der Uhr- und Alarmzeit eingesetzt und angeschlossen. Zwei weitere Taster werden später Display und Lastausgang ein- und ausschalten.

Die Platine

Die Kommunikation mit der alten Radioweckerplatine erfolgt über Optokoppler (Alarmsignal, Alarm-Aus-Knopf, Radio-an-Knopf und Radio-aus-Knopf) und ein Relais für die Displaymasse. Die Stromversorgung erfolgt über einen Spannungsregler und einen relativ großzügigen Kondensator, da der Radiowecker ursprünglich mit ungeglätteten 12V Halbwellen arbeitet. Ein Optotriac (k3012) kümmert sich um das Schalten des Lastausgangs.

Der PIC

Innenleben

Die Arbeit verrichtet ein 16F688 PIC. An ihn sind Relais (via Treiber), 4 Optokoppler, der Optotriac und diverse Taster angeschlossen. Der integrierte Komparator des PICs kümmert sich um die Nulldurchgangserkennung (siehe dort). Die Programmlogik ist schneller erklärt: Wird ein Alarmsignal erkannt, deaktiviert der PIC diesen durch Drücken der virtuellen Alarmaus-Taste und beginnt mit dem Start der Dimmsequenz. Nach etwa 15 Minuten zieht das Relais an und versorgt das Display des Radioweckers mit Strom. Weitere 7 Minuten später wird der virtuelle Radio-an-Knopf gedrückt und aus dem Gerät ertönt der eingestellte Radiosender. 30 Minuten nach der Erkennung des Alarmsignals ist der Vorgang beendet, das Display ist an, das Radio spielt und die Lampe leuchtet in voller Stärke.

Über spezielle Tastenkombination kann dieser Vorgang auch rückwärts ablaufen (Simulation eines Sonnenuntergangs) oder die Lampe auf eine feste Dimmstufe eingestellt werden. Die Alarmerkennung lässt sich natürlich auch deaktivieren, sollte die Weckfunktion nicht benötigt werden.

Über eine spezielle Diagnosefunktion kann die Vorgangszeit von 30 Minuten auf 2 Minuten reduziert werden. In der Entwicklungsphase war dies unverzichtbar.

Die Nulldurchgangserkennung

Wechselstrom ändert bekanntlich ständig sein Potential. Als Nulldurchgang wird genau der Zeitpunkt bezeichnet, indem der Potentialunterschied 0V beträgt. Um diesen zu finden, wird der Komperator des PICs über Widerstande direkt hinter dem Trafo angeschlossen. Ändert dieser seinen Ausgangspegel (die Richtung ist nicht entscheidend), muss sich das Gefälle geändert haben und wir befinden uns sehr kurz hinter dem Nulldurchgang. (Auf Grund von Dreckeffekten kann es auch kurz davor der Fall sein!) Dieses Ereignis tritt bei 50Hz-Wechselstrom 100mal pro Sekunde auf (120mal bei einer Netzfrequenz von 60 Hz). Problematisch ist jedoch die Phasenverschiebunng des Transformators. Durch die Induktivität des verbauten Relais ist diese Verschiebung außerdem veränderlich. Um Platz für einen zweiten zu sparen bzw. nicht unnötig Energie in Vorwiderständen zu verheizen, fiel die Lösungsentscheidung sehr sturr aus: Nach Erkennung des Nulldurchgangs am Sekundärkreis, wird je nach Relaiszustand (der dem PIC ja bekannt ist) ein unterschiedliches Offset aufgerechnet, bis vom Nulldurchgang an der Primärseite ausgegangen wird - mit Erfolg!

Die Phasenabschnittsdimmung

Rueckseite

Wird ein Potentialwechsel (von positiv nach negativ) erkannt, startet der PIC einen Timer mit 1/4 Vorteiler. Tritt dieser Potentialwechsel erneut auf, wird dieser Timerwert gespeichert. Bei einem weiteren Nulldurchgang wird der Timer (diesmal ohne Vorteiler) gestartet. Erreicht er den eingespeicherten Wert, so befinden wir uns an der Extremstelle der Sinuskurve. Da der Radiowecker nur mit Halbwellen arbeitet und seine Spannung unausreichend glättet, war es zur Berechnung notwendig die Zeit der gesamten Periode (darum 1/4 Vorteiler) zu ermitteln!

Durch Veränderung des gespeicherten Timerwertes lässt sich der Triac nun zu beliebigen Zeitpunkten zünden. Die Zündung erfolgt dabei nur für einige Microsekunden, so dass die Löschung automatisch erfolgt. (Einzige Ausnahme: Lampe auf höchster Helligkeit, dann wird der Triac dauerhaft mit Gatestrom versorgt).

Nachwort

Unser Lichtwecker funktioniert und verrichtet einen guten Job. In der Praxis hat sich jedoch gezeigt, dass Menschen, die gewöhnlicherweise in vollständiger Dunkelheit schlafen, bereits während der niederen Dimmstufen geweckt werden. Der Körper muss ich scheinbar erst wieder an die Lichtreize während des Schlafens gewöhnen. Im Gegensatz dazu funktioniert die Dämmerungssimulation problemlos - man wird müde!

Technisch wäre es sinnvoller gewesen, das Radio direkt über einen Optokoppler zu schalten, statt den "Radio an"- und "Radio aus"-Knopf des TMS3450 zu verwenden. Effektiv hätte das ein Ausgabepin am PIC gespart, der anderweitig hätte belegt werden können. Trotz der minimalen Entstörung unseres Lichtweckers treten erstaunlicherweise absolut keine störenden Effekte ein (selbst im Radio des Weckers selbst nicht).

Download

Da das Projekt unter Zeitdruck entstand, blieb leider keine Zeit, den Quellcode zu optimieren. Informationstechnisch wurde das Projekt in der Programmiersprache C realisiert und mit dem SDCC übersetzt. Der Quellcode darf unter den Bestimmungen der GNU GPL 3 modifiziert und weiterverwendet werden.

Quellcode (HTML-Ansicht)