Wir bekommen ein neues Bad. Das war auch langsam Zeit, denn das alte hat mittlerweile 30 Jahre auf dem Zettel und war schon damals nicht der Hit.

Dabei hätte ich es gern sehr gemütlich. Ich möchte nicht nur mich dort frischmachen können, sondern auch in der Badewanne entspannen. Am besten mit schön romantischer Musik und dezentem Farbwechsel.

Also lassen wir das Bad zwar machen, aber das Abhängen der Decke wird mal wieder ein Projekt für mich.

Zunächst schau ich, was es so für Beleuchtung auf dem Markt gibt. Da gibt es zwar fertige LED-Streifen mit Controller und Fernbedienung, die man hervorragend in einer abgehängten Decke verstecken kann, aber der Controller scheint bei allen Herstellern in einen Topf Partywasser gefallen zu sein. Überall gibt es nur schnelles oder noch schnelleres Blinken.

Nun sind die Spannungspegel von den handelsüblichen Controllern und LED-Streifen genau diesselben wie die des Arduino. Und auch die Fernbedienung verwendet einen IR-Standard. Also Controller gegen einen eigenen tauschen, und alles ist im Lack.

Schaltplan

Einen echten Schaltplan rund um den Arduino hab ich leider nicht angefertigt. Ich verwende gern die Erweiterungs-Shields, leere Platinen, die sich auf den Arduino stecken lassen. Für diese hab ich Bestückungs-Abbildungen gezeichnet.

Auf der Abbildung kann man folgende Bestandteile erkennen:

  • Ein Step-Down-Regulator, da ich den Arduino mit dem LED-Streifen-Adapter (12V) versorgen will. Der im Arduino eingebaute Regulator ist linear, verheizt also die überschüssigen 7V, was doof ist.
  • Ein Relais, welches die Deckenleuchten schaltet. Hierbei ist das Relais im eingeschalteten Leuchtenzustand inaktiv, damit die Deckenleuchten auch beim Einschaltvorgang des Arduinos bereits leuchten (und damit im Standard-Fall, also Deckenleuchten, das Relais nicht dauernd anzieht).
  • MOSFETs, die die LED-Streifen steuern (2x RGB, also 6 Stück).
  • Lineare Transistoren, damit der Arduino nicht an den kurzzeitig hohen Strömen der MOSFET-Gates kaputtgeht (ist ggf. nicht notwendig, aber laut Spezifikation sollen 40mA nicht überschritten werden).

Fernbedienung

Das Gute an dem eigenen Controller ist, dass man natürlich auch über die Belegung der Fernbedienung neu nachdenken kann. Zum einen brauche ich manche vordefinierten Abfolgen nicht (Strobe, Flash), zum anderen fehlt mir die Möglichkeit, die Geschwindigkeit zu regulieren. Außerdem wollen meine Kids die Beleuchtung selbst programmieren können (Polizei-Auto, Disco und andere wilde Dinge).

Also wird die Fernbedienung neu beschriftet:

Heller und dunkler, sowie die vordefinierten Farbtasten bleiben, wie sie sind. Was neu ist:

  • Programmieren von Farbfolgen
  • Auswählen einer vordefinierten Farbfolge (Regenbogen)
  • Umschalten zwischen weichen und harten Übergängen
  • Geschwindigkeit erhöhen/verringern

Außerdem haben die Tasten „on“, „off“ und „weiß“ eine etwas andere Bedeutung, denn die Lichtstreifen hängen an derselben Stromversorgung (und damit am selben Schalter) wie das Haupt-Deckenlicht.

  • On: Haupt-Deckenlicht einschalten (keine LED-Streifen)
  • Off: Haupt-Deckenlicht ausschalten (ebenfalls keine LED-Streifen, also Dunkelheit)
  • Weiß (oder eine andere Farb- oder Programmiertaste): Haupt-Deckenlicht ausschalten, LED-Streifen ein

Initial sind die LED-Streifen übrigens aus, und das Deckenlicht ist an. Dadurch bedient sich das Deckenlicht mit dem Türschalter ganz wie gewohnt, was grundsätzlich für eine intuitive Bedienung und den Ehe-Frieden eine gute Idee ist.

Erste Versuche und Probleme

Nachdem ich alles auf einer Conrad-Testplatine gesteckt und probiert hab, wird es dann auf die echte Platine gelötet und an die LED-Streifen angeschlossen.

Dabei hat sich dann leider gezeigt, dass die LEDs fackern.

Mir war klar, dass ich die Schaltung oder Programmierung noch anpassen muss, da die Pulsweitenmodulation (PWM) des Arduino (aber auch jedes anderen LED-Controllers) die Helligkeit durch schnelles Ein- und Ausschalten realisiert.

Was hier jedoch zu sehen ist, ist ein langsames Pulsieren (10x die Sekunde), nicht das typische PWM-Flackern.

Also alles ran an das großartige (und günstige) Conrad-Oszilloskop.

Und siehe da, einer der drei Arduino-PWM-Ausgänge scheint eine etwas andere Frequenz zu haben. Warum das?

Eine Web-Recherche ergibt, dass die Macher vom Arduino ein Problem hatten, welches sie mit einer Umprogrammierung eines der Timer gelöst haben, so dass dieser nun nicht mehr nur aufwärts, sondern abwechselnd auf- und abwärts zählt. Dabei verschluckt er jedoch eine Zahl von 255, so dass die Frequenz leicht daneben ist.

Nun ist das erst einmal kein Problem, denn die Frequenz sieht man ja nicht. Leider sind aber Kabel nicht perfekte Leiter, so dass die gemeinsame Plus-Leitung der LED-Streifen dafür sorgt, dass eine Farbe leicht dunkler wird, wenn eine andere schaltet.

Und schon pulsiert es.

Lösung: Timer-Programmierung korrigieren. Dies geht mit folgendem Code:

TCCR2A |= 3;

So simpel kann manchmal ein Fix sein.

Deckenkonstruktion

Das Ganze kommt wie gesagt in eine abgehängte Decke, die umlaufend offen ist, so dass ein indirektes Licht entsteht (Lichtvoute). In die Fläche kommen zusätzlich 6 Weiß-Spots als Deckenleuchten.

Musik

Als letztes fehlt noch die stimmungsvolle Musik. Hier habe ich mich für das WHD HLS 51 LI entschieden, ein Einbau-Radio für abgehängte Decken oder verschalte Wände. Es wird über eine Fernbedienung gesteuert und verschwindet komplett hinter der Verkleidung.

Die Variante „LI“ bietet außerdem einen Eingang für ein externes Gerät wie einen MP3-Player.

Code

Wer sich den Code oder Baupläne clonen möchte, kann dies über mein GitHub-Projekt tun.

Viel Spaß und gebt mir gern Feedback.