Es werde Licht! Heute bauen wir die Elektronik für unsere LED-Kerze.
Fertigstellung der LED-Kerze
Im letzten Teil dieses Projekts haben wir einen Kerzenständer und einen passenden Kerzenschirm gebaut. In diesem zweiten Teil werden wir uns um die Elektronik kümmern. Es ist an der Zeit, dass wir unsere LED-Kerze zum Leuchten bringen. Dafür werden wir einen kleinen Mikrocontroller verwenden: den ATtiny85.
Die Elektronik wird in zwei Baugruppen aufgeteilt. Die LED-Schaltung mit dem Mikrocontroller und eine separate Platine für den Batteriehalter.
Später werden beide Komponenten zur LED-Kerze zusammengefügt. Die LED-Schaltung auf einer separaten Platine zu haben, macht den Aufbau kompakter und ermöglicht es uns, die Platine über einen Arduino Uno mit Strom zu versorgen, während wir den Mikrocontroller programmieren.
Für den Bau der Elektronik benötigst du:
2x Lochrasterplatinen (einseitig, 11x8 Löcher, 2,54 mm Rastermaß)
2x Buchsenleisten (4-polig)
2x Stiftleisten (4-polig)
1x ATtiny85
1x Schalter
1x 68 Ω oder 100 Ω Widerstand
1x 10 kΩ Widerstand
1x 100 nF Keramikkondensator
1x CR2032-Knopfzelle + Clip
Zusätzlich werden folgende Werkzeuge benötigt:
Arduino Uno und sechs Verbindungsleitungen (Buchse auf Stecker) für die Programmierung
Lötkolben, Lötzinn, Seitenschneider
Heißklebepistole und Heißkleber
Bohrer mit passender Größe für die Kontakte des Batterieclips
Los geht's!
Aufbau der LED-Schaltung
Beginnen wir mit der LED-Schaltung. Die Schaltung selbst ist ziemlich einfach. Eine LED wird über einen 68 Ω-Widerstand an den ATtiny85 angeschlossen. Ein Schalter dient zum Ein- und Ausschalten der Versorgungsspannung. Zusätzlich wird ein 100 nF Kondensator zu den Versorgungsleitungen hinzugefügt und ein 10 kΩ Pull-Up-Widerstand wird an den Reset-Pin angeschlossen, um unbeabsichtigte Resets zu verhindern. Diese letzten beiden Komponenten sind zwar sinnvoll, aber nicht zwingend für die Funktion der Schaltung erforderlich.
Gehen wir den Bauprozess Schritt für Schritt durch:
Löte zunächst die einzelnen Bauteile gemäß der Breadboard-Ansicht ein. Beginne mit dem flachsten Bauteil und arbeite dich dann nach oben vor.
Achte dabei auf die richtige Ausrichtung der Bauteile. Pin 1 des ATtiny85, der durch einen kleinen Punkt gekennzeichnet ist, muss sich oben links befinden. Die Kathode (-) der LED, die mit einem abgeflachten Kannte am Gehäuse markiert ist, muss sich auf der rechten Seite befinden.
Nachdem du alle Bauteile verlötet hast, ist es an der Zeit, die Verbindungen zwischen den einzelnen Bauteilen herzustellen. Dazu kannst du dünne Drähte verwenden, massive Lötbahnen erstellen oder die abgeschnittenen Drahtenden der Bauteile nutzen. Die Verbindungen sind in der Breadboard-Ansicht, dem Schaltplan und im Bild oben dargestellt. Die Leiterplatte wurde in horizontaler Richtung umgedreht.
Je nach genutztem Schalter kann es erforderlich sein, diesen zu fixieren, damit er beim wiederholten Drücken nicht abreißt. Hierfür kannst du Heißkleber verwenden und den Bereich hinter dem Schalter ausfüllen. Dies verleiht dem Schalter zusätzliche mechanische Stabilität. Der Schalter sollte jedoch nicht zu sehr erhitzt werden, da sich sonst das Kunststoffgehäuse verformen könnte. Achte auch darauf, dass der Kleber nicht in den Schalter gelangt.
Bau des Batteriehalters
Weiter geht's mit dem Bau des Batteriehalters. Das Bild unten zeigt die Breadboard-Ansicht und den Schaltplan dafür:
Als Erstes muss die Lochrasterplatine für die Batterieklemme vorbereitet werden. In der Regel sind die Kontakte des Batterieclips zu groß für die normalen 0,8 mm Löcher in der Lochrasterplatine. In diesem Fall musst du zwei Löcher für die Kontakte deines Batterieclips bohren.
Anschließend löte zwei blanke Metalldrähte ein, die den Kontakt zur Unterseite der CR2032-Knopfzelle herstellen. Du kannst dafür z.B. die abgeschnittenen Drahtenden der Bauteilen der LED-Schaltung verwenden.
Nachdem du die Platine vorbereitet hast, ist es an der Zeit, den Batterieclip und die Buchsenleisten einzulöten. Achte auf eine feste Lötverbindung zum Batterieclip. Die Verbindung wird mechanisch verhältnismäßig stark beansprucht werden. Beim Verbinden des Batterieclips mit den Buchsenleisten ist es wichtig, auf die richtige Ausrichtung zu achten. Die Platine ist horizontal umgedreht worden, der Schaltplan zeigt die Anschlüsse von oben.
Zusammenbau der Module
Nachdem wir nun beide Module gebaut haben, können wir sie nun miteinander verbinden. Das Bild unten zeigt den finalen Aufbau.
Beachte, dass die LED nicht leuchten wird, bevor wir nicht den ATtiny85 programmiert haben.
Wichtig ist es, die Module nicht verkehrt herum zusammenzusetzen. Die Öffnung des Batterieclips sollte nach unten zeigen, die LED nach oben.
Um sicherzugehen, kann man einen nicht benötigten Pin, z.B. den dritten pin auf der Linken Seite, abschneiden und den entsprechenden Pin am Batteriemodul blockieren, wie es im Bild unten gezeigt wird. Dies macht es unmöglich, beide Module verkehrt herum ineinander zu stecken
Programmieren des ATtiny85
Um die LED zum Leuchten zu bringen, müssen wir den ATTiny85 programmieren. Dazu habe ich ein kleines Programm vorbereitet, das die LED über PWM ansteuert.
Das Programm ändert die Helligkeit zufällig. Dazu errechnet es einen Zufallswert, der zur aktuellen Helligkeit addiert wird, um den neuen Zielwert zu definieren. Danach wird in einer Schleife die Helligkeit langsam an den Zielwert angepasst. Dies erzeugt einen angenehmen und ruhigen Flackereffekt, der durch Ändern der Konstanten für Geschwindigkeit, Varianz und Helligkeit angepasst werden kann.
Hier ist der Code für dieses Programm:
const int outputPin = 4;
void setup() {
randomSeed(0);
pinMode(outputPin, OUTPUT);
}
const int maxValue = 200;
const int minValue = 0;
const int variance = 20;
const int fadeSpeed = 100;
int targetValue = 50;
int value = 50;
void loop() {
targetValue += random(variance*2)-variance;
targetValue = max(targetValue, minValue);
targetValue = min(targetValue, maxValue);
while(value < targetValue) {
value++;
analogWrite(outputPin, value);
delay(fadeSpeed);
}
while(value > targetValue) {
value--;
analogWrite(outputPin, value);
delay(fadeSpeed);
}
}
Es gibt nur ein kleines Problem: Wie können wir dieses Programm auf den ATtiny85-Mikrocontroller laden?
Nun, da der ATtiny85 keine USB-Unterstützung besitzt, ist es nicht möglich, ihn direkt an einen Computer anzuschließen. Wir müssen ihn mit einem speziellen Programmiergerät programmieren. Glücklicherweise können wir den Arduino Uno als ein solches Programmiergerät verwenden. Dieser Vorgang wird im Folgenden erklärt.
Zuerst müssen wir die Unterstützung für die ATtiny85 Hardware zur Arduino IDE hinzufügen. Dies ermöglicht es uns, ein Programm für diesen zu kompilieren. Zu diesem Zweck verwenden wir die ATTinyCore-Bibliothek, die von SpenceKonde bereitgestellt wird. Um sie zu installieren, folge der unten verlinkten Installationsanleitung.
Der nächste Schritt besteht darin, den Arduino Uno für die Verwendung als Programmiergerät vorzubereiten. Dazu müssen wir ihn mit dem Arduino ISP-Sketch programmieren. Du findest diesen Sketch unter Datei > Beispiele > 11. ArduinoISP > ArduinoISP. Öffne ihn und lade ihn auf den Arduino Uno. Achte darauf, dass du dabei Arduino Uno als Board ausgewählt hast.
Wir haben nun den Arduino Uno für den Einsatz als Programmiergerät vorbereitet. Um den ATtiny85 zu programmieren, müssen wir ihn mit dem Arduino Uno verbinden. Dies ist in der folgenden Abbildung dargestellt.
Wenn alles verkabelt ist, ist es an der Zeit, unser LED-Kerzen-Programm auf den ATtiny85 zu laden. Dazu musst du als Board ATtiny25/25/85 (No bootloader) auswählen. Reduziere außerdem die Taktfrequenz auf 1 MHz, damit der ATtiny85 auch dann noch zuverlässig läuft, wenn die Batteriespannung mit der Zeit abnimmt. Danach wählst du Arduino as ISP als Programmer und lädst den LED-Kerzen-Code auf den ATtiny85.
Das Ergebnis
Geschafft! Du hast jetzt deine ganz eigene LED-Kerze. Die LED sollte jetzt aufleuchten und du solltest ein ähnliches Ergebnis wie in dem Video unten sehen. Der Effekt ist aufgrund seiner langsamen Geschwindigkeit kaum sichtbar. Wenn du jedoch durch das Video scrollst, wird er deutlich.
Übrigens habe ich auch einen kleinen Hut aus weißem Transparentpapier auf die LED gesetzt. Dadurch wird das Licht besser gestreut und leuchtet den Kerzenschirm gleichmäßiger aus.
Zum Schluss, möchte ich dir ein frohes Weihnachtsfest und ein gutes neues Jahr wünschen. Gott segne dich!