Änderungen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche

Flaschenlampe

5.112 Byte hinzugefügt, 22:17, 1. Jul. 2018
/* Aufbau */
= [[File:Flaschenlampe ='''WORK IN PROGRESS'''.jpeg|350px]]
== Problem ==
== 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 relativ 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 Mikrocontroller zum Einsatz kommen der den LED-Strom regelt, die Batteriespannung überwacht und die LED mit unterschiedlichen Helligkeiten leuchten lassen kannlässt.
Die Lampe soll zunächst einmal zwei Helligkeitsstufen (schummrig und volle Helligkeit) haben, parametrisiert durch Vorgabe des mittleren Stroms durch die LED.
=== Liste ===
* ATTiny45ATTiny25/45/85 (ATTiny25 ist derzeit nicht unterstützt, siehe [[Flaschenlampe#Software|Software]]25/45 sind ungetestet!)
* Empfohlen: Sockel für den Controller
* 3W LED (z.B. Cree MX-6) auf Sternplatine
''('''Hinweis''': Der Schaltplan zeigt weder den Akku selbst noch die USB-Ladeschaltung. Die Ladeschaltung gibt es ab etwa 1€-1.50€ in verschiedenen Ausführungen mit und ohne Schutzelektronik im Internet unter dem Stichwort "TP4056" zu kaufen. Der Zusammenschluss von Akku, Ladeschaltung und Lampenschaltung sollte für den geneigten Bastler aber kein Problem sein. In der Sektion [[Flaschenlampe#Aufbau|Aufbau]] ist zu sehen wie ich meine Lampe verdrahtet habe.)''
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. Tests mit verschiedenen LEDs zeigten einen Strom von ca. 500mA bei vollem Akku und 100% Duty Cycle, diesen Strom können sowohl die LEDs als auch der Transistor dauerhaft ab. 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 für mich 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 [[Flaschenlampe#Software|Software]]
Der Widerstandsteiler aus R3 und R4 wird aus Pin PB? PB1 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 weitgehend unabhängig von der Batteriespannung.
Der Taster schaltet gegen Masse, der Eingangspin verwendet den internen Pullup.
Zum Aufspielen des Sketches auf den Tiny85 wird ein ISP-Programmer benötigt. Im einfachsten Fall reicht dazu ein bestehender Arduino (z.B. Arduino UNO) und ein Steckbrett. Weiterhin muss in der Arduino IDE der passende Core installiert werden damit die IDE den ATTiny85 unterstützt. Eine Anleitung für diese Dinge findet sich [http://highlowtech.org/?p=1695 hier].
Da die Hardware keinen RC-Tiefpass vorsieht muss die Messung des LED-Stroms mit der PWM synchronisiert werden''('''Hinweis:''' Der Sketch sollte auch auf einem ATTiny25 bzw. ATTiny45 lauffähig sein, d.h. die Messung des LED-Stroms muss während des High-Teils des PWM Zyklus durchgeführt werden. Damit dies problemlos funktioniert wird der Timer1 so eingestellt, dass sich eine PWM-Frequenz wurde von ~245Hz ergibt und somit bereits bei vergleichsweise niedrigen Duty Cycles ausreichend Zeit für die Strommessung übrig bleibtmir aber bisher nicht getestet. Die Messung des Stroms erfolgt im Overflow-Interrupt des Timer1. Ab Falls jemand das mal auf 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 werdendieser Controller testen möchte bitte ich um einen entsprechenden Eintrag hier.)''
Der Da die Hardware keinen RC-Tiefpass vorsieht muss die Messung des LED Strom wird in etwa alle 4 Sekunden gemessen-Stroms mit der PWM synchronisiert werden, d. Nach jeder h. die Messung des LED-Stroms muss während des High-Teils des PWM Zyklus durchgeführt werden. Damit dies problemlos funktioniert wird der Timer1 so eingestellt, dass sich eine PWM -Frequenz von ~245Hz ergibt und somit bereits bei vergleichsweise niedrigen Duty cycle neu berechnet. Anschließend erfolgt Cycles ausreichend Zeit für die Strommessung übrig bleibt. Die Messung der Batteriespannungdes Stroms erfolgt im Overflow-Interrupt des Timer1. Bei unterschreiten eines Schwellwerts wird die Lampe abgeschaltetAb 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 und über den vorgegebenen Soll-Strom in den neuen Duty-Cycle umgerechnet werden.
''('''Hinweis''': Der Teil des Codes LED Strom wird etwa alle 4 Sekunden gemessen. Nach jeder Messung wird der sich mit der Berechnung des PWM Duty Cycles sowie der Spannungsüberwachung beschäftigt verwendet derzeit noch Fließkommazahlen (double)cycle neu berechnet. Dies ist ineffizient und führt zu größeren Binaries. Ich werde diesen Teil des Codes in Anschließend erfolgt die Messung der Zukunft noch auf Integer umschreiben, danach sollte auch ein Tiny25 funktionieren.Batteriespannung.Bei unterschreiten eines Schwellwerts wird die Lampe abgeschaltet.)''
Beim Taster wird zwischen kurzen (50-500ms) und langen (>500ms) Tastendrücken unterschieden.
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'Download source: Sketch hochladen[[Medium:Flaschenlampe_Tiny85.tar.gz|.tar.gz]]/[[Medium:Flaschenlampe_Tiny85.zip|.zip]]'''
== Aufbau ==
''Bilder vom Aufbau folgen('''Hinweis''': Auf den Bildern ist der erste Prototyp zu sehen.Es gibt also einige falsch gebohrte Löcher und ähnliche Unschönheiten zu bewundern...)''  [[File:Flaschenlampe_Platine_oben.jpeg|700px]] Die Oberseite der Platine. Es wurde möglichst wenig Platz verschwendet da zuerst ein kleineres Gehäuse angedacht war.Das Loch in der Mitte der Platine war für eine dritte Schraube gedacht, wurde aber am Ende nicht genutzt da sich zwei Schrauben als ausreichend herausgestellt haben. Die hier verwendete Ladeplatine ist zusätzlich noch mit einer Schutzschaltung gegen Kurzschluss und Tiefentladung versehen, darum ist die Schaltung hier an den "OUT+" und "OUT-" Pads der Ladeplatine angeschlossen. Andere Versionen der TP4056 Platinen haben diese Schutzschaltungen nicht, bei diesen Versionen würde die Schaltung dann direkt an die Batterie angeschlossen. [[File:Flaschenlampe Platine seitlich.jpeg|700px]] Hier ist die "schwebende" Montage der Ladeplatine gut zu erkennen. Die Platine wird lediglich von sechs Drähten gehalten, das reicht aber problemlos um den Micro-USB Stecker zum Laden einzustecken. Die Klebepads in der Mitte der Ladeplatine haben lediglich beim Löten zur Positionierung der Platine gedient, sie nehmen aber keine großen Kräfte auf. [[File:Flaschenlampe_Platine_unten.jpeg|700px]] Unterseite der Platine. Ich arbeite gern mit SMD-Widerständen da sie sich auf Lochraster ziemlich gut zwischen die Pins von ICs "kleben" lassen. Spannungsteiler und Vorwiderstände lassen sich so sehr platzsparend auf der Unterseite der Platine anbringen. Auch der Kondensator für den ATTiny findet hier sein Plätzchen. Lediglich der Shuntwiderstand wurde bedrahtet verbaut - diesen Wert hatte ich nicht in SMD vorrätig... ;-) [[File:Flaschenlampe_Platine_montiert.jpeg|700px]] Sitzprobe. Nach einigem Probieren saß die Platine endlich so wie sie sollte, jedenfalls halbwegs. Ein 3D-gedrucktes Gehäuse würde dieses Projekt sicherlich noch aufwerten, ich hatte aber keinen Zugang zu einem 3D-Drucker. Der USB-Port der Ladeplatine schließt genau mit der Gehäusewand ab, an der Stelle wurde dann ein (halbwegs) passendes Loch angebracht damit der Stecker eingesteckt werden kann. Demnächst sollen noch die Indikator-LEDs der Ladeplatine von außen sichtbar montiert werden. Oben im Bild ist der Taster zu sehen über den die Lampe gesteuert wird. Der findet seinen Platz in dem Loch an der oberen Gehäusewand und passt gerade so zwischen Platine und die Akkus. [[File:Flaschenlampe_Platine_montiert_mit_Akku.jpeg|700px]] Die Wahl des Gahäuses hat sich als Glücksfall herausgestellt, denn die verwendeten LiPo Packs passen perfekt in die Zwischenräume. Das Gehäuse bietet in meinem Fall Platz für bis zu vier LiPo Packs mit jeweils 4560mAh Kapazität. Dadurch sollte die Lampe eine theoretische Betriebsdauer von bis zu 240 Stunden am Stück im "Low" Modus mit 75mA LED-Strom erreichen können. Sind die Akkus aber erstmal leer wird auch die Ladedauer entsprechend lang ausfallen, geschätzt bei ca. 20 Stunden. [[File:Flaschenlampe_LED_montiert_außen.jpeg|700px]] Die LED ist bereits auf einer Sternplatine montiert gewesen. Diese wird lediglich mit Wärmeleitpaste bestrichen und zwischen Deckel und Kühlkörper eingeklemmt. Die Klemmkraft der Schrauben reicht aus um die Sternplatine unverrückbar zu fixieren. Das vereinfacht die Montage ungemein, trotzdem bleibt die LED einfach austauschbar. [[File:Flaschenlampe_LED_montiert_innen.jpeg|700px]] Die Unterseite. Die Löcher im Alukühlkörper wurden mit 2.5mm gebohrt, dadurch konnten die M3 Schrauben mit etwas Kraft direkt eingedreht werden und haben sich ihr Gewinde von selbst im weicheren Aluminium "geschnitten". Nicht die sauberste Methode, aber vollkommen ausreichend. Solange man die Schrauben vorsichtig anzieht hält das auch. Vorsichtige Naturen nehmen längere Schrauben, Unterlegscheiben und selbstsichernde Muttern.  '''NACHTRAG:''' Ich habe nun die Akkupacks zusammengelötet und verbaut.Verwendet wurden die folgenden LiPo Packs: [[File:Flaschenlampe_Akku.jpeg|700px|Die neuen Akkus]] Davon habe ich vier Stück parallel geschaltet zu einem großen Pack mit insgesamt 18240mAh.Vor dem Verlöten habe ich sichergestellt, dass die Spannungsunterschiede zwischen den einzelnen Packs nur wenige Millivolt betrugen, dadurch konnten die Packs gefahrlos zusammengelötet werden.Hätten die Spannungen sich um ein paar hunder Millivolt unterschieden hätten die Zellen zuerst über einen Widerstand ausgeglichen werden müssen, in meinem Falls waren die Ladestände allerdings quasi identisch.[[File:Flaschenlampe_Akkupack.jpeg|700px|Das fertige Akkupack]]  [[File:Flaschenlampe_Akku_eingebaut.jpeg|700px|Passt perfekt!]] Wie erwartet passt das Pack perfekt. Für die Befestigung im Gehäuse wurde einfach doppelseitiges Klebeband verwendet.  [[File:Flaschenlampe_Das_lange_Laden.jpeg|700px|Volladen dauert nun eine Weile...]] Nun muss die Lampe nur noch geladen werden, in Anbetracht der großen Kapazität dürfte das jedoch einige Zeit dauern.Den Stromzähler in dem USB-Multimeter habe ich nachdem das Foto entstanden ist nocheinmal genullt, so kann ich in etwa abschätzen wie weit der Ladevorgang bereits fortgeschritten ist.
55
Bearbeitungen