Zuletzt geändert am 25. Juni 2018 um 11:14

Flaschenlampe

Flaschenlampe

WORK IN PROGRESS

Problem

Wenn man Abends mit Freunden draußen gemütlich sitzt wird es irgendwann so dunkel, dass die Leute anfangen bei der Suche nach Zigaretten, Handy usw. irgendwelche Flaschen umzustoßen.

Also muss Beleuchtung her, aber blenden soll sie möglichst nicht und leicht zu transportieren soll sie außerdem sein.

Wünschenswert wäre dann noch wenn man das Ganze am handelsüblichen USB-Netzteil aufladen könnte.

Anforderungen

  • Das Gerät soll gut zu transportieren sein.
  • Die Lampe soll an einem USB-Netzteil geladen werden können.
  • Möglichst lange Laufzeit bei konstanter Helligkeit.
  • Das Licht der Lampe soll möglichst wenig blenden, es soll eher schummrig als taghell sein, gerade ausreichend dass man Dinge auf dem Tisch finden und sein Gegenüber erkennen kann.
  • Einfache Bedienbarkeit.
  • Möglichst niedrige Ruhestromaufnahme da das Gerät eher selten benutzt werden wird.

Lösungsansatz

Eine HighPower LED wird mitsamt Akku, Steuer- und Ladeelektronik in einen Untersetzer/Sockel eingebaut und strahlt nach oben ab. Als Diffusor kommt eine mit Wasser (oder Bier...) gefüllte Flasche zum Einsatz die einfach auf den Sockel gestellt wird. Durch die große Oberfläche der Flasche blendet das Licht der LED nicht mehr so stark und durch die Wasserfüllung der Flasche verteilt es sich relatic gleichmäßig auf der Oberfläche. Der Vorteil dieser Lösung ist, dass der Diffusor nicht extra rumgetragen werden muss da Getränke normalerweise ohnehin vor Ort sind.

Für die Steuerung soll ein Microcontroller zum Einsatz kommen der den LED-Strom regelt, die Batteriespannung überwacht und die LED mit unterschiedlichen Helligkeiten leuchten lassen kann.

Die Lampe soll zunächst einmal zwei Helligkeitsstufen (schummrig und volle Helligkeit) haben, parametrisiert durch Vorgabe des mittleren Stroms durch die LED.

Hardware

Liste

  • ATTiny85
  • Empfohlen: Sockel für den Controller
  • 3W LED (z.B. Cree MX-6) auf Sternplatine
  • Kühlkörper für die LED
  • BC337 NPN Transistor zur Ansteuerung der LED
  • TP4056 Platine zum Akku laden via USB
  • Etwas "Vogelfutter" zum Beschalten
  • LiPo Akku 3.7V mit ausreichend Kapazität
  • Taster (Schließer)
  • Gehäuse (z.B. Verteilerdose aus dem Baumarkt)

Schaltplan

Flaschenlampe schematic.png

Die LED wird ohne Vorwiderstand direkt aus dem Akku gespeist und über den BC337 geschaltet. Dadurch wird die maximale Spannung über der LED auf ca. 3.5V bei vollem Akku begrenzt, das sollte bei den meisten 3W LEDs problemlos möglich sein. Tests mit verschiedenen LEDs zeigten einen Strom von ca. 500mA bei vollem Akku. Hinter dem Transistor sitzt noch ein kleiner Shunt-Widerstand um den Strom der LED zu messen (hier 0.22 Ohm). Der Wert darf nicht zu klein sein da ansonsten der ADC des Controllers an seine Auflösungsgrenzen gerät, aber auch nicht zu groß um keinen übermäßig hohen, zusätzlichen Spannungsabfall zu verursachen. 0.22 Ohm haben sich als praktikabler Wert herausgestellt.

Der Strom wird direkt gemessen, d.h. ohne RC-Tiefpass. Für genaue Messungen muss der ADC darum mit der PWM synchronisiert werden, siehe Software

Der Widerstandsteiler aus R3 und R4 wird aus Pin PB? mit VBat gespeist und nur bei Bedarf eingeschaltet damit der Teiler nicht permanent Strom aus der Batterie zieht.

Alle ADC Messungen werden gegen die interne 1.1V Referenz des ATTiny85 gemacht und sind somit weitgehen unabhängig von der Batteriespannung.

Der Taster schaltet gegen Masse, der Eingangspin verwendet den internen Pullup.

Software

Die Software wurde mit dem Arduino Framework geschrieben.

Da die Hardware keinen RC-Tiefpass vorsieht muss die Messung des LED-Stroms mit der PWM synchronisiert werden, d.h. der LED-Strom muss während des High-Teils des PWM Zyklus gemessen werden. Damit dies problemlos funktioniert wird der Timer1 so eingestellt, dass sich eine PWM-Frequenz von ~245Hz ergibt. Die Messung des Stroms erfolgt im Overflow-Interrupt des Timer1. Ab einem Duty-Cycle von ca. 20/255 ergeben sich stabile und korrekte Messwerte. Der gemessene Wert kann nun in den momentanen Maximalstrom der LED umgerechnet werden und über den vorgegebenen Soll-Strom in den neuen Duty-Cycle umgerechnet werden.

Der LED Strom wird etwa im Internvall von 4 Sekunden gemessen. Nach jeder Messung wird der PWM Duty cycle neu berechnet. Ebenso wird im gleichen Intervall auch die Batteriespannung gemessen. Bei unterschreiten eines Schwellwerts wird die Lampe abgeschaltet.

Beim Taster wird zwischen kurzen (50-500ms) und langen (>500ms) Tastendrücken unterschieden.

Kurze Tastendrücke schalten zwischen niedriger (~75mA) und hoher (~300mA) Helligkeit um.

Lange Tastendrücke schalten die Lampe ein bzw. aus. Beim Einschalten wird ebenfalls zunächst die Batteriespannung überprüft, die Lampe lässt sich unterhalb des Schwellwerts nicht einschalten.

TODO: Sketch hochladen

Zum Kompilieren dieses Sketches muss die Unterstützung für ATTiny85 CPUs in der Arduino IDE installiert werden. Eine Anleitung dazu findet sich hier.

Aufbau

Bilder vom Aufbau folgen...