Zur Startseite

Schaltuhr für LED-Aquariumbeleuchtung
mit Ein- und Ausdimmen der Power LEDs
und Temperaturanzeige

Download ZIP (Software & 3D-Druck Dateien)

Dieses kleine Aquarium für Zwerggarnelen ziert seit einiger Zeit ein Regal neben meinem Schreibtisch. Es ist ein 10l Nano von der Firma Fluval, der Typ nennt sich "Spec 3". Zum Lieferumfang gehört eine ausreichend starke LED-Beleuchtung. Diese Leuchte ist recht formschön, mit 28 weißen und 4 blauen LEDs bestückt und eigentlich auch komfortabel zu bedienen.

Oben auf der Leuchte gibt es eine kleine quadratische Fläche, die berührungssensitiv ist. Einmal drauf tippen und die Leuchte geht mit allen 32 LEDs an. Beim zweiten antippen gehen alle weißen LEDs aus und nur die blauen leuchten. Beim dritten Antippen geht alles wieder aus. Das Schalten passiert abrupt ohne irgendwelche gleitenden Übergänge. Die Stromversorgung erfolgt durch ein 5V/1,5A Steckernetzteil. So gut die Leuchte auch gedacht ist, diese Steuerung gefällt mir nicht wirklich. Einiges muß anders werden.

- Das blaue Nachtlicht ist eher Spielerei und für mich nicht nötig.
- Das Ein- und Ausschalten soll gleitend und automatisch zu vorgewählten Zeiten passieren.
- Die Zeiten sollen leicht anzupassen sein.
- Die maximale Helligkeit soll ebenfalls einstellbar sein.
- Zusätzlich soll die Temperatur im Becken angezeigt werden.

Die Unterseite zeigt die Platine mit den LEDs und ihren Vorwiderständen, die mit weichem Silikongummi versiegelt ist. Die originale Elektronik musste umgangen werden damit die LEDs mittels PWM direkt angesprochen werden konnten. Das Anschlußkabel wurde also unmittelbar vor der vergossenen Klemme getrennt und neu direkt an der ersten Kombination (LED+240Ohm) wieder angelötet.

Die Silikonversiegelung ließ sich mit Skalpell problemlos entfernen. Nach dem Anlöten des Kabels ist die Stelle wieder mit Heißkleber versiegelt.

Die Schaltung zeigt die verwendeten Komponenten. Das Herz ist ein Arduino Nano. Angezeigt wird alles in einem Display, das früher z.B. im Nokia 5110 verwendet wurde. Diese Dinger kann man preiswert auf ebay bekommen. Die Uhren-Basis bildet ein DS3231. Zur Temperaturmessung verwende ich einen LM35. Die Leuchte wird über einen IRLZ34N MOSFET gesteuert. Der ist hier sicher weit unterfordert aber dadurch braucht er nicht gekühlt zu werden. Drei Drucktaster (grün, gelb, rot) werden zum Navigieren durch die Menüs und Übernehmen der Werte verwendet. Der Grund für eine fehlende Temperaturregelung ist das Fehlen der Heizung. Die Raumtemperatur reicht in meinem Zimmer für die kleinen Krabbler aus.

Das Fritzing-Diagram hier oben zeigt die Verdrahtung des Versuchsaufbaus. Zu beachten ist, das es verschiedene Versionen der LCD-Module gibt. Die Reihenfolge der Anschlüsse weicht teilweise voneinander ab. Der Schaltplan oben und diese Steckplatine stimmen überein. Zur Simulation der Leuchte ist oben nur eine einzelne LED angedeutet (Achtung: Widerstand fehlt).

Hier ist die Schaltung im Probelauf zu sehen. Weil es unten auf der Steckplatte schon etwas eng zuging, liegt oben noch ein kleines weißes Board, das nur den MOSFET mit seinen beiden Widerständen trägt.

    

Hier ein Vergleich der Anzeige mit weißem bzw. blauem Backlight. Da ich beide Varianten zur Verfügung hatte, hab ich auch beide ausprobiert. Im fertigen Gerät wird es wohl die blaue werden. Die Anzeige zeigt von oben nach unten die aktuelle Uhrzeit (hh:mm:ss), die eingestellte Beleuchtungsdauer, Die maximale Helligkeit nach Eindimmen und schließlich die Temperatur.

   

Die Schaltung wurde auf drei Lochrasterplatinen mit den Maßen 27x18 Löcher (2,54mm raster) verteilt. Hier oben die vordere Platine mit Display und den drei Tastern. Da die die obere und untere Pinleiste des Displays sowieso parallelgeschaltet sind, liegen die Streifenleiter hier genau richtig. Für die Taster muß allerdings an den richtigen Stellen getrennt werden, sonst wäre alles kurzgeschlossen.

   

Die mittlere Platine trägt den Arduino und das Uhrenmodul. Beide passten nicht auf die selbe Seite. Leider hatte ich auch keine doppelseitige Platte zur Hand. So musste das DS3231 auf die Unterseite erhöht (sozusagen schwebend) eingelötet werden. Sonst wäre ich an die Lötösen nicht rangekommen.

   

Die hintere Platine trägt die zwei DC-Anschlüsse für 5V Speisespannung vom originalen Leuchten-Netzteil (links) und den Ausgang für die Leuchte (rechts). In der Mitte sitzt eine 3,5 mm Klinkenbuchse für den Anschluß des Temperaturfühlers. Oberhalb der Buchsen wird der MOSFET mit den beiden Widerständen direkt eingelötet. Die beiden DC-Buchsen sind nach der Montage durch die Leiterzüge über ihre Gehäuse-Masseanschlüsse direkt verbunden. Das muß aufgetrennt werden, da der MOSFET die Masse schaltet! Er wäre sonst kurzgeschlossen.

   

   

Die vier Bilder hier oben zeigen einen unverdrahteten Probeaufbau. Hier hab ich die endgültigen Maße für das Gehäuse-Design abgenommen. Bei der Positionierung aller Elemente, die durch das Gehäuse reichen, habe ich mich an das Lochraster gehalten. Das erleichtert das Gehäusedesign deutlich, weil im CAD-Pogramm das Raster der Arbeitsebenen ebenfalls auf 2,54 mm eingestellt werden kann. Dann stimmen die Positionen schon mal problemlos.

Für die Abstandshalter habe ich auf ebay zwei kleine Sortimente (1x weiß, 1x schwarz) mit je 150 Teilen M3 aus Vinyl gekauft. Die verschiedenen Längen lassen sich auf die gewünschten Abstände kombinieren.

Die Verdrahtung ist fertig und nach kleinen Problemen läuft das Teil nun prima. Anfänglich hatte ich nämlich undefinierbare Anzeigeprobleme am Display. Es stellte sich heraus, daß das Display selbst fehlerhaft war. Ich hatte ein Neues, von mir noch nicht getestetes eingebaut. 5 Stück für 10,- € hatte ich direkt aus China bezogen und da kann man für den Preis schon mal Pech haben. Egal, ich hatte ja noch Ersatz verfügbar.

Nun wird es Zeit, über die Software zu sprechen. Als erstes muß das DS3231-Modul auf die richtige Zeit/Datum gestellt werden. Da das jeweils nur nach demWechsel der Stützbatterie nötig ist, habe ich das nicht in das eigentliche Programm eingebaut. Ich verwende zum Stellen ein separates Script, das in der Zip-Datei als "DS3231_stellen.ino" enthalten ist. Dieses Script ist NICHT mein geistiges Eigentum! Beachtet den Copyright-Hinweis im Header des Programms. Bevor also die eigentliche Schaltuhrensoftware benutzt werden kann, muß erst mal das Script zum Stellen der Uhr hochgeladen werden. Hier muß man beachten, das das Hochladen einige Sekunden dauert. Also muß man diese Verzögerung bei der einzustellenden Uhrzeit berücksichtigen.
Nun aber zur eigentlichen Software: Den Programmablaufplan seht ihr oben, die Software als *.ino Datei findet ihr in der Zip. Bevor "richtige" Programmierer jetzt vor Entsetzen aufschreien, gebe ich es selbst zu: Ihr spielt alle in der obersten Bundesligaklasse beim BFC und ich bin höchsens Amateur in der 4ten Regionalliga bei "Traktor Wobbelkow". Egal, das Programm erfüllt seinen Zweck und ich bin zufrieden.

Der übliche Programmstart vor der Hauptschleife bietet nichts Besonderes. Ich habe insgesamt acht Subroutinen programmiert, die bei Bedarf vom Hauptprogramm angesprungen werden (im Plan gelb hinterlegt). Dazu kommen vier Menü-Module (hellblau) zur Anwahl der Optionen. Nach dem Start, bei dem ein kurzer Begrüßungsscreen gezeigt wird, läuft erstmal nur die Hauptschleife mit den im Setup definierten Ein- und Ausschaltzeiten und der dort festgelegten Helligkeit. Die Uhr und der Temp-Fühler werden abgefragt und die Daten angezeigt. Danach wird der Status von Taster "grün" abgefragt. Ist der Pin auf GND gezogen (Taster gedrückt), geht es rüber zu den Menü-Modulen. Druck auf die jeweilige Farbe (grün, gelb, rot) löst die mit dem gleichfarbigen Pfeil angedeutete Aktion aus. Rot ist am einfachsten: es geht immer zurück zur Hauptschleife. Gelb wählt eine Option und Grün kann je nach Situation entweder auch eine Option anwählen oder den gewünschten Wert in den Speicher übernehmen. Das ist schon alles!

Ein- und Ausschaltzeiten sind nur als volle Stunden wählbar! Zur Auswahl der Werte läuft jeweils eine Schleife (Zeiten:0-23, Helligkeit: 0-100). Wenn der angezeigte Wert dem gewünschten entspricht, wird mit Druck auf "grün" bestätigt und in den Speicher übernommen. Danach läuft die Uhr mit diesen Werten. Nur bei einem Neustart werden wieder die originalen Werte aus dem Setup verwendet.

 

   

   

Die Bilder oben sind Screenshots des Gehäuse-Designs aus meinem CAD-Program. Ich verwende die kostenlose Variante "PTC Creo Elements". Das Design wird im STL-Format abgespeichert und mit "Cura" in die Druckdateien für meinen "Ultimaker Original+" umgewandelt. Die STL-Dateien für Cover, Front und Button finden sich ebenfalls in der Zip oben unter der Seitenüberschrift.

Hier nun abschließend noch einmal das Gesamtergebnis.

nach oben