Pfad: Home => AVR-Übersicht => Anwendungen => Ledlicht
LED-Licht

Ledlicht mit einem ATtiny13

Alles begann damit auf dem Parkplatz meines Supermarkts: beim Aussteigen aus dem Auto fiel sie mir gleich auf. Eine Kette mit Leuchtdioden an einem durchsichtigen Batterieschächtelchen mit einem kleinen Schiebeschalter. Natürlich war das Plastikschächtelchen kaputt und es waren auch keine Batterien mehr drin. Würden die Leuchtidioten noch das tun wovon sie ihren Namen haben, nämlich leuchten?

Nun, sie taten es allesamt, obwohl auf dem Parkplatz wahrscheinlich schon sehr viele Autos über sie drüber gefahren waren. Also stoffliches, hochwertigstes Recycling. Aus Abfall mach mal was anderes. Mit drei Volt die volle gelbe, rote, grüne und blaue Dröhnung. Aber etwas dröge: kein Blinken, kein An- und Abschwellen, nur einfach so an und sonst nix.

Für einen Mikroprofessor-Programmierer kein Thema: da muss Leben rein. Und zwar je nach Stimmung langsam oder schnell, je nach Tageszeit hell oder dunkel und je nach Jahreszeit ein anderes Ablaufprogramm. Und nicht nur langweiliges Blinken, sondern mit jede Menge Zwischentöne.

Was die Schaltung tut

Sie kann

Die Schaltung

Und das hier ist auch schon alles, um der Kette Leben einzuhauchen.

Schaltbild

In der Mitte ein Mikroprofessor, Mr. ATtiny13, weil ich den immer in meiner Bastelkiste vorrätig habe. Natürlich einer der kleinsten, weil wir nicht mehr brauchen und weil Assembler so kurze schnuckelige Hex-Programme produziert (C-Programmierer, die nix anderes können als das, können jetzt beruhigt auf andere Seiten wechseln und ihr popeliges LED-Licht mit 96-poligen X-Mega-Professor-Elefanten programmieren).

Das vierpolige Mäuseklavier für die Stimmungs- und Programmeinstellung ist an die Ports PB0, PB2, PB3 und PB4 angeschlossen. Für die nötige Klarheit sorgen die eingebauten Pull-Up-Widerstände im Tiny13. Das Mäuseklavier ist an den Schaltern S1 und S2 mit zwei 1k-Widerständen von den Ports entkoppelt, damit MOSI und SCK beim In-System-Programmieren keinen Kurzschluss gegen Masse haben, wenn die Schalter geschlossen sind.

Der Port PB1 (OC0B) ist als Ausgang geschaltet und treibt über einen 1k-Widerstand den Schalttransistor BD137. Er gibt das pulsweitenmodulierte Ausgangssignal aus und schaltet die LED-Kette mit hoher Frequenz an und aus. Am Kollektor des Transistors ist ein 39Ω-Widerstand eingeschleift. Er sorgt dafür, dass die auf 3 V Betriebsspannung ausgelegte Kette mit der nötigen Bremse angesteuert wird.

Wer keine fertige Kette auf dem Parkplatz findet, kann sich mit den Angaben zu den LEDs gerne eine selber basteln. Voll Öko ist es, wenn man dafür superhelle Niedrigstrom-LEDs verwendet. Wer statt dem Wohnzimmer gleich die ganze Straße beleuchten möchte: die Schaltung kann auch Hochstrom, der BD137 kann bis zu 1,5 A schalten. Aber die Widerstände müssen dann etwas anders dimensioniert werden.

Zu erwähnen ist noch die ISP6-Schnittstelle zum Programmieren. Sie dient dazu, den Tiny13 auch nach einigen Jahren Betriebszeit noch ein wenig anders programmieren zu können, wenn einem das Leuchtprogramm langsam aber sicher auf den Zeiger geht, weil man den Takt schon auswendig kann.

Für die Stromversorgung hatte ich in der Bastelkiste noch ein 5 V-Steckernetzteil herumfliegen, das für diesen Zweck wie gemacht war. Da es die Gerätschaften, die es mal versorgt hat (einen Palm PDA) schon lange nicht mehr in meinem Haushalt gibt, ist auch dieses Teil voll Recycling von E-Schrott. Ohne den sonst üblichen Umweg über Nigeria. Dafür ist auch der 220µF-Elko da, damit alles trotz PWM schön glatter Gleichstrom bleibt.

Aufbau der Schaltung

Begonnen habe ich auf einem Experimentier-Steckbrett.

Aufbau

Als das alles funktionierte und das Programm fehlerfrei war, kam alles auf eine Lochrasterplatine und in ein schickes graues Plastikschächtelchen.

Komplett

Software

Die ausführlich kommentierte Software ist natärlich in Assembler geschrieben. Der Quellcode im Assembler-/Text-Format findet sich hier, im HTML-Format hier.



An den Seitenanfang

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