Pfad:AVR-DE => Anwendungen => Filmleuchte tn13
Filmleuchte klein AVR-Anwendungen

Helligkeitssteuerung und Akku-Üerwachung mit ATtiny13
Hardware, Aufbau, Anwendung und Software für die Filmleuchte
Logo

Filmleuchte ATtiny13

Filmleuchte mit ATtiny13
  1. Eigenschaften
  2. Hardware
  3. Aufbau
  4. Software
Diese Seiten als PDF (28 Seiten, 1,3 MB).

1 Eigenschaften der Filmleuchte mit ATtiny13

Die Hardware-Eigenschaften der beschriebenen Filmleuchte:

Seitenanfang Eigenschaften Hardware Aufbau Software

2 Hardware

2.1 Hardware der Variante mit PWM-geschalteten LEDs

2.1.1 Schaltbild

Schaltbild der Filmleuchte Die Filmleuchten-Schaltung besteht aus drei wesentlichen Funktionsteilen:
  1. dem Prozessorteil mit dem ATtiny13 und seinem In-System-Programmierstecker,
  2. den 22 Konstantstromquellen mit BC547-Transistoren und dem 26-poligen Verbindungsstecker zu der LED-Frontscheibe,
  3. der Erzeugung der 5 V-Versorgung für den Controller aus der Akkuspannung.

2.1.2 Geschaltete Konstantstromerzeugung

Die Erzeugung der Konstantströme erfolgt mit dem PWM-Signalausgang OC0A des Controllers. Jeder PWM-Zyklus dauert 853 µs, was zu einer Schaltfrequenz der LEDs von 1.172 Hz führt. Der Ausgang OC0A ist entweder nur für eine der 256 Perioden (213 µs, Mindesthelligkeit) oder für bis zu 256 Perioden lang eingeschaltet (Helligkeitssteuerung).

Der PWM-Signalausgang erzeugt mit dem Widerstand von 220Ω und den beiden 1N4148-Dioden eine geschaltete Konstantspannung von 0,0 bzw. 1,4 V. Diese Konstantspannung steuert über Widerstände von 220 Ω die Basis aller BC547-Transistoren an. Ist die Konstantspannung bei 1,4 V, dann steuert diese, abzüglich der 0,6 bis 0,7 V Basis-Emitterspannung, die Transistoren soweit auf, bis deren Emitter durch den Kollektor-Emitterstrom auf 0,7 bis 0,8 V angestiegen ist. Der Kollektor-Emitterstrom ist dadurch auf (0,7 bis 0,8 V) / 33 Ω * 1000 = (21,2 bis 24,2 mA) begrenzt.

Der Konstantstrom bleibt gleich, solange die Akkuspannung größer ist als die Summe aller LED-Spannungen (9 * 3,23 V pro LED = 29,07 V) plus die 0,7 bis 0,8 V Emitterspannung plus 0,12 V Kollektor-Emitter-Sättigungsspannung, also zusammen etwa 30 V. Ist die Akkuspannung höher, steigt der Strom nicht an, weil die restliche Überspannung durch erhöhte Kollektor-Emitter-Spannungen abgefangen wird. Die maximal mögliche Betriebsspannung der Konstantstromquellen liegt bei 43 V, da darüber die maximale thermische Last der BC547-Transistoren überschritten würde.

2.1.3 Controller-Betriebsspannung

Aus der nominellen Akkuspannung von 33,3 V kann die Betriebsspannung des Controllers nicht mehr mit einem Standardspannungsregler (z. B. 7805) erzeugt werden, da dessen maximale Eingangsspannung (35 V) bei frisch geladenen Akkus überschritten wäre.

Dem Spannungsregler 78L05 ist daher ein Längsspannungsregler mit dem Transistor BD439 vorgeschaltet. Er senkt die Eingangsspannung für den 78L05 auf (8,2 - 0,7) = 7,5 V ab, übernimmt den Großteil der thermischen Last (ca. 800 mW) und senkt die thermische Last des 78L05 auf ca. 230 mW ab. Die Auswahl der Zenerspannung von 8,2 V erfolgte auch mit Blick auf die Drop-Out-Spannung des 78L05 von 1,7 V. Der Zenerstrom von 2,8 mA liefert eine genügend stabile Spannung für den Längstransistor, der Elko von 10 µF reduziert das Rauschen der Zenerdiode.

2.1.4 Der Controller

Der Controller ATtiny13 erfüllt folgende Aufgaben:
  1. Er erzeugt das 8-Bit-PWM-Signal an OC0A für die geschaltete Konstantspannung.
  2. Er misst die eingestellte Potentiometerspannung zur Helligkeitseinstellung mit dem AD-Wandler und rechnet sie in den zugehörigen PWM-Wert um (Upoti = 0 V: OCR0A = 0, Upoti = 5 V: OCR0A = 255).
  3. Er misst die mit den Widerständen 82k und 10k vorgeteilte und mit 10nK geglättete Akkuspannung mit dem AD-Wandler und wertet sie aus:
  4. Er ist mit der ISP6-Schnittstelle in der fertigen Schaltung programmierbar, ohne dass dazu die bestehende Peripherie modifiziert werden muss.

2.1.5 Schaltungsvarianten

Es kommen zahlreiche Varianten in Betracht:

2.2 Hardware der Variante mit linear gesteuerten LEDs

Diese Variante funktioniert nahezu gleich zur PWM-gesteuerten Variante, nur werden die Konstantstromquellen aus einer konstanten Spannung und nicht aus einer geschalteten Konstantspannung gespeist. Das bedingt kleinere Änderungen bei der Hardware und Software.

2.2.1 Schaltung der linearen LED-Steuerung

Schaltbild Linearsteuerung Gegenüber der PWM-geschalteten Variante sind zwei Änderungen relevant:
  1. Der PWM-Ausgang OC0A erzeugt mit einem Widerstand von 220 Ω und einem Elko von 1000 µF eine nahezu konstante Spannung am Elko, die nur in sehr geringem Umfang durch die Lade- und Entlade-Vorgänge mit einer PWM-Frequenz von 4,688 kHz schwankt (bei 50% Pulsweite z. B. schwankt die Spannung von 2,08 V nur um +/- 1,8 mV).
  2. Die erzeugte Konstantspannung steuert direkt die Basen der Konstantstrom-Regeltransistoren BC547B an und erzeugt über deren Emitterwiderstände von 180 Ω damit einen konstanten LED-Strom (im 50%-Beispiel 7,96 mA).


LED-Strom bei verschiedenen PWM-Werten Der LED-Strom in mA ergibt sich in dieser Schaltung nach der angenäherten Gleichung zu
Iled = 0,088 * PWM-Wert - 3,26

Der unterste Teil, bei dem der LED-Strom Null ist, ergibt sich daraus, dass die Spannung am Elko noch unterhalb von 0,65 V liegt und damit die Transistoren noch nicht aufsteuern. Es ist Sache der Software, diese Verschiebung der Kurve zu linearisieren.

Bei der Berechnung hat sich übrigens herausgestellt, dass
  1. die Summe der 22 Basiströme eine wichtige Rolle spielt, da sie insbesondere im oberen Spannungsbereich (mit max. 2,8 mA Basisstrom bei -15,2 mA Entladestrom im LOW-Zustand) die Spannung am Elko schon deutlich beeinflusst, deshalb wurden in dieser Schaltung BC547B mit einem typischen hFE von 150 verwendet, und dass
  2. der stromabhängige Einfluss der Spannungen am OC0A-Ausgang ebenfalls relevant in das Ergebnis eingeht. So beträgt die Spannung am OC0A-Ausgang im HIGH-Zustand keineswegs 5 V, sondern nur etwa 4,45 V (minimal 4,2 V), bedingt durch den zu liefernden Strom. Im LOW-Zustand sind es statt 0 V immerhin 0,32 V (maximal 0,62 V). Ohne Berücksichtigung dieser Effekte ergäben sich völlig andere Spannungswerte.



Seitenanfang Eigenschaften Hardware Aufbau Software

3 Aufbau

3.1 Aufbau der PWM-geschalteten Variante auf Lochrasterplatine

Layout auf Lochrasterplatine Das ist das Layout für den Aufbau der PWM-geschalteten Variante auf einer Lochrasterplatine mit den Abmessungen 80 x 50 mm, wie ich sie realisiert habe.

Bestueckte Lochrasterplatine Das ist die Platine mit allen bestückten Bauteilen für dieses Layout.

3.2 Aufbau der linearen Platine auf gedruckter Schaltung

Layout fuer die gedruckte Platine der Linearvariante Diese Variante ist das Layout für die gedruckte Platine der Linearvariante. Es sind drei Brücken zu bestücken. Auf die Basiswiderstände der Konstanstromquellen wurde in diesem Fall gemäß Schaltbild verzichtet.

Komponentenseite der gedruckten Platine Das ist die Platzierung der Komponenten und der Bohrplan.

Der Spannungsregler-Transistor BD439 wird im Betrieb ohne Kühlkörper etwas arg warm. Ich habe daher einfach eine kleine Alu-Scheibe angeschraubt, das reicht. Ein größerer Kühlkörper ist unnötig.

3.3 Frontplatte mit den Leuchtdioden

LED-Frontplatte Hier das Layout der Frontplatte aus 2 mm Acrylglas mit den Maßen 295 x 250 mm. Der horizontale Abstand der LEDs beträgt 30 mm, im Wechsel mit versetzten Reihen im Abstand von 10 mm. Das lässt genügend Abstand zwischen den LEDs.

Beim Bohren der LED-Löcher in die Acrylglasscheibe ist vorsichtig vorzugehen, damit es nicht zu Ausrissen kommt. Beginnend mit einem 1 mm Loch wird der Bohrerduchmesser jeweils millimeterweise erhöht. Die Bohrgeschwindigkeit ist so niedrig wie möglich zu wählen, damit das Acrylglas beim Bohren nicht schmilzt und den Bohrer verkeilt. Eine Bohrmaschine mit Vor- und Rückwärtsbetrieb ist von Vorteil, wenn sich der Bohrer verkantet hat.

Die neun LEDs jeder Reihe werden durch Umbiegen der Anschlussdrähte verlötet, jeweils die Anode mit der nächsten Kathode der Reihe.

Die Verbindung zwischen der Frontplatte mit den Leuchtdioden und der Platine erfolgt über das 26-adrige Flachkabel. Die vier Enden, die zu den jeweils beiden äußersten Pins 1, 2, 25 und 26 führen, werden aus dem Flachbandkabel abgetrennt und an die miteinander verbundenen Anoden am Ende der LED-Reihe angelötet. Die Verbindungen zu den Konstantstromreglern werden aufgetrennt und mit der Kathode am Anfang der Reihe verbunden. Da der Stecker und die Buchse symmetrisch aufgebaut sind, kann sie in beliebiger Richtung eingesteckt werden (verpolungssicher).

3.4 Kompakte Testplatine

Steckplatine zum Testen Teststand Um die Schaltung und die Software auch ohne die fertige Fronplatte zu testen und komfortabel Spannungsmessungen durchführen zu können, habe ich eine kleine Testplatine mit 22 roten Leuchtdioden und jeweils einem 470Ω-Widerstand gebaut, die auf den Stecker auf der Platine aufgesteckt werden kann. Die Schaltung arbeitet ab 15 V Betriebsspannung aufwärts einwandfrei. Kurzzeitig ist ein Betrieb mit 33,3 V möglich, die Transistoren werden dabei unter Volllast (ohne PWM) mit ca. 430 mW belastet. Die Leistung der Widerstände beläuft sich bei allen Betriebsspannungen auf 210 mW, sie erwärmen sich merklich.


Seitenanfang Eigenschaften Hardware Aufbau Software

4 Software

4.1 Download

Der Assemblerquellcode für die PWM-geschaltete Version kann hier, für die lineare Version hier heruntergeladen werden. Der Quellcode für die geschaltete Version kann im Browser hier, die lineare Version kann hier im Browser angeschaut werden.

Die Funktionsweise des Programmes ist im Folgenden näher erläutert.

4.2 Debug-Schalter in der Software

Zwei Debug-Schalter zu Beginn des Quellcodes dienen zum Simulieren:
  1. debug_vtg: Hier kann ein simulierter Spannungswert eingegeben und seine Umrechnung in den Compare-B-Wert im TC0 verfolgt werden.
  2. debug_15V: Diese Variante dient zum Testen mit dem Teststand bei einer Betriebsspannung zwischen 11 und 18 V Betriebsspannung und stellt die Spannungsüberwachungs-LED entsprechend ein.
Beide Schalter müssen auf Null stehen, damit das Programm ordnungsgemäß läuft.

4.2.1 Debug-Schalter debug_vtg

Wer die Spannungsumwandlung in Leuchtdiodenhelligkeit und -farbe mit dem Simulator (z. B. mit avr_sim) beobachten will, um zu schauen, wie es funktioniert, kann diesen Schalter auf 1 setzen, eine umzurechnende Spannung in den Konstanten debug_voltage in mV eingeben und drauflos simulieren. Die Spannung kann beliebig klein oder groß sein, sollte aber für sinnvolle Resultate im gewählten Spannungsbereich liegen (26 bis 37 V, ist der Schalter debug_15V ebenfalls gesetzt, sollten es 11 bis 18 V sein).

Die Simulation des Normalbetriebs ist hingegen etwas schwierig, weil es ewig lange dauert, bis der Timer TC0 einen ganzen PWM-Durchlauf absolviert hat und eine weitere AD-Wandlung anstößt. Wer mag, kann den TC0 beschleunigen (z. B. den Vorteiler auf 1 setzen), dann geht es schneller.

4.2.2 Debug-Schalter debug_15V

Hat man nur ein Netzteil mit 18 V, kann man die LED-Versuchsplatine anschließen und mit dem Schalter debug_15V die Spannungsüberwachung auf 15 V umstellen. Dann kann man die grün/rote LED durch Regeln der Betriebsspannung auch in diesem Spannungsbereich bei der Arbeit sehen.

4.2.3 Debug-Schalter debug_pwm

Dieser Schalter ist nur in der linearen Version vorhanden. Er ermöglicht es, eine Potistellung in Grad zu definieren und verzweigt zur Umrechnung des Potiwertes in einen PWM-Wert.

4.3 Die Pulsweiten-Steuerung

Für die Helligkeitssteuerung der weissen Frontplatten-LEDs und für die rot/grüne Betriebsspannungs-LED ist der Timer TC0 verantwortlich. Bei der geschalteten Version wird der interne 9,6-MHz-RC-Takt-Oszillator-Takt mit einem Clock-Vorteiler von 4 getaktet (2,4 MHz), der TC0-Vorteiler ist auf 8 eingestellt (300 kHz) und er setzt beim Erreichen von 255 mit dem nächsten Takt wieder auf Null zurück (1171 Hz). Bei der Linearversion läuft der Prozessor mit seinem Default-Takt von 1,2 MHz, der TC0-Vorteiler ist auf 1 eingestellt. Mit 256 Takten pro PWM-Zyklus ergibt das eine PWM-Frequenz von 4,688 kHz.

Beim Rücksetzen beginnt der PWM-Zyklus mit dem Setzen der COM0A- und COM0B-Pins auf Eins. Erreichen der Timer die Vergleicherwerte in OCR0A bzw. OCR0B werden die entsprechenden Pins ausgeschaltet.

Je größer der Vergleichswert OCR0A ist, desto länger bleiben bei der geschalteten PWM-Version die weißen Frontplatten-LEDs eingeschaltet und desto heller leuchten die LEDs. Die Helligkeit steigt mit dem OCR0A-Wert linear an. Da die LEDs während eines PWM-Zyklusses nur entweder mit dem eingestellten Konstantstrom an oder ganz aus sind, entsteht kein Farbänderungseffekt wie dies mit einer Vorwiderstandsregelung des LED-Stroms der Fall sein würde.

Bei der linearen Version steigt die Spannung am Elko mit höherem PWM-Wert an. Die Spannung treibt oberhalb von 0,65 V die Transistoren, die mit steigender Spannung einen höheren LED-Konstantstrom erzeugen.

Bei der rot-grünen LED zur Betriebsspannungsüberwachung wird etwas anders vorgegangen. Liegt die Kathode der grünen LED (=Anode der roten LED) auf Low-Potenzial, dann steigt deren Helligkeit mit zunehmendem Vergleicherwert OC0B an. Der Vergleicherwert muss daher mit zunehmender Akkuspannung zunehmen.

Ist hingegen die Anode der roten LED auf High-Potenzial, kehrt sich das Verhalten um: zu Beginn des PWM-Zyklus ist die LED aus, weil der OC0B-Ausgang ebenfalls High-Potenzial hat. Erst mit dem Erreichen des Vergleicherwerts in OCR0B schaltet sich die LED an. Ihre Helligkeit nimmt daher mit höherem OCR0B-Wert ab. Dieses umgekehrte Verhalten muss im Software-Teil mit der Auswertung der gemessenen Spannungswerte berücksichtigt werden.

Bei der Entwicklung der PWM-Steuerung wurden verschiedene PWM-Frequenzen erprobt. Niedrigere PWM-Frequenzen führen zu Interferenzen mit der Kameraaufzeichnung (Moiré-Effekte). In drei Videos hier sind die Effekte bei niedrigeren Frequenzen zu sehen.

4.4 AD-Wandler-Messungen

Die AD-Wandler-Messungen werden vom Compare Match A des Timers TC0 angestoßen. Dazu werden die beiden Bits ADTS0 und ADTS1 im ADC-Kontrollport ADCSRB sowie ADATE im Kontrollport ADCSRA gesetzt. Ist eine Messung beendet, erfolgt der ADC-Ready-Interrupt. In der Interrupt-Service-Routine wird das T-Bit im Statusregister gesetzt. Das Abholen und Weiterverarbeiten der AD-Wandler-Ergebnisse erfolgt nach dem Aufwachen aus dem Schlafmodus außerhalb des Interrupt-Services.

Die Messungen beginnen beim Kanal mit dem Potentiometer. Es werden jeweils 64 Messungen abgewartet und die Ergebnisse aufsummiert. Liegen alle Ergebnisse vor, erfolgt die Umschaltung auf den Kanal der Akkuspannungsmessung.

4.5 Die AD-Wandler-Messungen der Akkuspannung

Das Folgende trifft nur bei der geschalteten Version zu, bei der linearen Version nicht.

Erreicht der Timer TC0 den Vergleicherwert in OCR0A (wenn die Lampen ausgeschaltet werden), dann wird der Beginn einer Analog-zu-Digital-Wandlung angestoßen und der AD-Wandler beginnt mit dem Fixieren der am AD-Eingang anliegenden Spannung (Sample-and-Hold). Es wird also diejenige Spannung gemessen, die zum Ende des eingeschalteten Zustands anlag, wenn der Akku seine Leistung erbringen musste.

Filterung am ADC-Eingang Die Akku-Spannung wird mit den beiden Widerständen 10k und 82k um das 9,2-fache unterteilt, damit der AD-Wandler im Eingangsspannungsbereich zwischen 0 und 5 V bleibt. Damit die Spannung am ADC-Eingang für die Zeit anhält, die der Sample-and-Hold-Vorgang des ADC andauert (1,5 ADC-Takte), muss diese mit einem Kondensator etwas verzögert werden. Dafür wurden 100 nF gewählt. Die Kombination aus 82k, 10k und 100nF bietet etwas, aber nicht zu viel Verzögerung.

Das Diagramm zeigt, dass die Spannungsänderung am ADC-Eingang nach dem Schaltvorgang bei einem PWM-Zyklus etwas Zeit benötigt, aber zu Beginn des nächsten Zyklus dem Spannungszustand des Akkus beim eingeschalteten Zustand voll entspricht. Nur wenn der An-Impuls sehr kurz ist, wird der Kondensator nicht ganz folgen.

Sample-and-Hold-Verzoegerung Umgekehrt zeigt die vom ADC abgelesene Spannung an seinem Eingang, die Kondensatorspannung nach 1,5 Takten des ADC, sich vom Umschaltvorgang noch im Wesentlichen unbeeindruckt, da sie nach dem Ausschalten erst langsam wieder ansteigt. Die Zeitachse ist hier in µs, nicht in ms! Die Differenz durch das verzögerte Sample-and-Hold beläuft sich auf 57 mV und ist bei 33 V Akkuspannung verschmerzbar.

Bei allen Berechnungen wurden unterstellt:

Seitenanfang Eigenschaften Hardware Aufbau Software


Lob, Tadel, Fehlermeldungen, Genöle und Geschimpfe oder Spam bitte über das Kommentarformular an mich.

©2018 by http://www.avr-asm-tutorial.net