Änderungen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche

Flaschenlampe

1.472 Byte hinzugefügt, 11:59, 25. Jun. 2018
/* Schaltplan */
=== Liste ===
* ATTiny85ATTiny45/85 (ATTiny25 ist derzeit nicht unterstützt, siehe [[Flaschenlampe#Software|Software]])
* Empfohlen: Sockel für den Controller
* 3W LED (z.B. Cree MX-6) auf Sternplatine
=== Schaltplan ===
''Grafik kommt bald[[File:Flaschenlampe_schematic...''png]]
''('''Hinweis''': Der Schaltplan zeigt weder den Akku selbst noch die USB-Ladeschaltung. Die LED wird Ladeschaltung gibt es ab etwa 1€-1.50€ in verschiedenen Ausführungen mit und ohne Vorwiderstand direkt aus Schutzelektronik im Internet unter dem Akku gespeist und über den BC337 geschaltetStichwort "TP4056" zu kaufen. Dadurch wird die maximale Spannung über der LED auf ca. 3.5V bei vollem Der Zusammenschluss von Akku begrenzt, das Ladeschaltung und Lampenschaltung sollte bei für den meisten 3W LEDs problemlos möglich geneigten Bastler aber kein Problem sein. Tests mit verschiedenen LEDs zeigten einen Strom von ca. 500-700mA bei vollem Akku. Hinter dem Transistor sitzt noch ein kleiner Shunt-Widerstand um den Strom In der LED Sektion [[Flaschenlampe#Aufbau|Aufbau]] ist zu messen (hier 0sehen wie ich meine Lampe verdrahtet habe.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, man sollte aber deutlich unter 0.5 Ohm bleiben.''
Der Strom Die LED wird ohne Vorwiderstand direkt gemessenaus 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, ddiesen Strom können sowohl die LEDs als auch der Transistor dauerhaft ab.hHinter dem Transistor sitzt noch ein kleiner Shunt um den Strom der LED zu messen (hier: 0. ohne RC-Tiefpass22 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 R? R3 und R? 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 weitgehend unabhängig von der Batteriespannung.
Der Taster schaltet gegen Masse, der Eingangspin verwendet den internen Pullup.
Die Software wurde mit dem Arduino Framework geschrieben.
Da die Hardware keinen RC-Tiefpass vorsieht muss die Messung Zum Aufspielen 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 Sketches auf den Tiny85 wird der Timer1 so eingestellt, dass sich eine PWMein ISP-Frequenz von ~245Hz ergibtProgrammer benötigt. Die Messung des Stroms erfolgt im Overflow-Interrupt des Timer1Im einfachsten Fall reicht dazu ein bestehender Arduino (z. Ab einem Duty-Cycle von caB. 20/255 ergeben sich stabile Arduino UNO) und korrekte Messwerteein Steckbrett. Der gemessene Wert kann nun Weiterhin muss in den momentanen Maximalstrom der LED umgerechnet Arduino IDE der passende Core installiert werden und über damit die IDE den vorgegebenen Soll-Strom in den neuen Duty-Cycle umgerechnet werdenATTiny85 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, 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 von ~245Hz ergibt und somit bereits bei vergleichsweise niedrigen Duty Cycles ausreichend Zeit für die Strommessung übrig bleibt. 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 in etwa im Internvall von alle 4 Sekunden gemessen. Nach jeder Messung wird der PWM Duty cycle neu berechnet. Ebenso wird im gleichen Intervall auch Anschließend erfolgt die Messung der Batteriespannung gemessen. Bei unterschreiten eines Schwellwerts wird die Lampe abgeschaltet. ''('''Hinweis''': Der Teil des Codes der sich mit der Berechnung des PWM Duty Cycles sowie der Spannungsüberwachung beschäftigt verwendet derzeit noch Fließkommazahlen (double). Dies ist ineffizient und führt zu größeren Binaries. Ich werde diesen Teil des Codes in der Zukunft noch auf Integer umschreiben, danach sollte auch ein Tiny25 funktionieren...)''
Beim Taster wird zwischen kurzen (50-500ms) und langen (>500ms) Tastendrücken unterschieden.
''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 [http://highlowtech.org/?p=1695 hier].
== Aufbau ==
''Bilder vom Aufbau folgen...''
55
Bearbeitungen