Pfad: Home => AVR-Übersicht => Anwendungen => Ledleiste
LED-Leiste

Ledleiste mit einem ATtiny13



Features und Funktionsweise

Das Gerät stellt mit zwei Reglern die Helligkeit von zwei handelsüblichen LED-Leisten in 256 Stufen ein. Dazu misst der Mikroprozessor ATtiny13 die Einstellung der zwei Potentiometer und steuert die Helligkeit der LEDs entsprechend über die Pulsweite an zwei Ausgängen. Die Ausgänge steuern zwei Schalttransistoren an, die LED-Ströme bis maximal 1,5äA verkraften. Die Programmierung des Prozessors erfolgt im System über die 6-polige ISP-Schnittstelle.

Die Schaltung

Schaltbild Die Schaltung wird aus einem 12V-Steckernetzteil betrieben. Mit einem Spannungsregler 78L05 und zwei Tantal-Elkos von 0,1 µF wird die Betriebsspannung des Mikroprozessors ATtiny13 von 5V erzeugt.

Der Mikroprozessor misst die an PB3 und PB4 anliegende Analogspannung der beiden linearen 100k-Potentiometer. An den Ausgängen PB0 (OCR0A) und PB1 (OCR0B) wird das Pulsweiten-modulierte Ausgangssignal ausgegeben.

Die Ausgangssignale treiben zwei Transistoren BD137, die die LED-Leiste im Takt an- und ausschalten und über die Pulsweite deren Helligkeit bestimmen.

Die ISP6-Steckerleiste programmiert den Prozessor im System selbst.

Aufbau der Schaltung

Die Schaltung ist auf einer Lochrasterplatine aufgebaut und in einen handelsüblichen Plastikkasten eingebaut.

Innenaufbau

Die beiden LED-Leisten sind über deren Steckersystem direkt in den Kasten geführt.

Kastenanschlüsse

Die beiden Regler steuern die Helligkeit der beiden Leisten.

Regler

Im vorliegenden Fall werden zwei LED-Leisten zu je 1 m Länge angesteuert.

Lampen

Die Leisten können in Abschnitten zu je drei Einzel-LEDs abgeteilt werden, da jeweils drei LEDs in Reihe und über einen Vorwiderstand an die Stromversorgung angeschlossen sind.

Software

Die ausführlich kommentierte Software ist natärlich in Assembler geschrieben. Die beiden PWM-Kanäle A und B sind mit dem 8-Bit-Timer realisiert und laufen im Fast-PWM-Modus frei und ohne Software-Overhead. Mit dem Vorteiler von 64 und 8-Bit-PWM-Auflösung ergibt sich eine Taktfrequenz von

f(PWM) = 1.200.000 / 64 / 256 = 73,2 Hz

Die beiden AD-Wandler-Kanäle werden mit einem Vorteiler von 128 nacheinander 64 mal gemessen. Das dauert pro Kanal

t(ADC) = 128 * 13 * 64 / 1.200.000 = 88,7 ms

Das 10-Bit-Ergebnis wird dabei aufsummiert und das MSB der Summe in den entsprechenden OCR-Kanal des Timers geschrieben. Die Übernahme des neuen OCR-Werts erfolgt am Ende des jeweiligen PWM-Zyklus.

Die AD-Wandlungen erfolgen rein interrupt-gesteuert, so dass kein Code außerhalb der Interrupt-Serviceroutine für den ADC-Complete-Interrupt ausgeführt werden muss.

Der Quellcode im Assembler-/Text-Format findet sich hier, im HTML-Format hier.

Der ATtiny13 läuft mit den werksseitigen Fuse-Einstellungen, also mit dem internen 9,6-MHz-RC-Generator und dem Vorteiler durch acht. Ein Umprogrammieren von Fuses ist daher nicht erforderlich.

An den Seitenanfang

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