Hier mal eine kleine Bastelei rechtzeitig vor Halloween.
Ich wollte für eine kleine installation flackernde LED Streifen basteln, so wie man es in Horrorfilmen sieht. Wird es gruselig dann flackert das Licht oder eine alte Neonröhre, da habe ich mir gedacht, das kann ich auch.
Ich habe die Schaltung für unseren (im Video noch nicht befüllten) „Kühlschrank des Horrors“ verwendet.
Nachdem die Schaltung fertig war habe ich gemerkt das es bei Instructables schon ein ähnliches Projekt gibt. Das kam mir gerade recht weil ich mir so den Sourcecode borgen konnte. Den habe ich nur ein wenig angepasst.
Ich habe für dieses Problem zwei Lösung, eine mit einem Arduino Board und eine mit einem ATTINY85. Mit dem Arduino Board ist das ganze wesentlich schneller umgesetzt, aber ganz ehrlich das ist wie Perlen vor die Säue werfen. Der ATTINY85 reicht für den Job genauso aus.
Das Prinzip ist einfach. Wir benutzen den Microcontroller dazu um über dessen PWM Ausgang eine Mosfet zu regeln, welcher die Helligkeit der LED Streifen über deren Spannung bestimmt.
Noch ein paar Worte zum passenden Mosfet. Wählt auf jeden Fall einen der auch mit einem Microcontroller dessen PWM Ausgang nur max. 5V bereitstellt zusammenarbeitet. Schaut dabei in das Datenblatt des Mosfet und such den Wert „Gate Threshold Voltage (VGS(th)). Dieser Wert sollte im maximum nicht mehr als 2,5V betragen damit der Mosfet vom µC auch komplett durchgeschaltet werden kann
Die Pinbelegung beim Mosfet ist ein wenig komisch. Bei dem den ich verwendet und wohl auch bei den meisten anderen (aber besser das Datenblatt checken) ist Pin 1 (linker Pin wenn man von vorne drauf schaut) das Gate. Dort schließen wir unser PWM Signal an. Pin 2 ist Drain und wird mit dem Minus Pol unseres LED Streifens verbunden. Pin 3 ist Source und wird mit dem Minus Pol unserer Versorgungsspannung verbunden.
Lösung 1: Arduino
Wir brauchen:
- Arduino Board (Uno, Nano etc. ziemlich egal)
- 10kOhm Widerstand
- Mosfet z.B. STP36NF06L
- 12V LED Streifen
Der Aufbau dürfte nach dem Schaltplan hier relativ einfach sein. Ich habe den LED Streifen darin mal gegen eine LED ersetzt. Im echten Leben sollte man das lieber nicht machen da die LED 12V ohne Vorwiderstand wohl nicht überlebt.
Man sieht ganz easy, wir gehen mit +12V auf den Arduino und die Anode unserer LED. Den Minus Anschluss (Kathode) verbinden wir mit dem Drain des Mosfets. Gate des Mosfets verbinden wir mit D3 des Arduino und schalten dort auch noch einen 10kOhm Widerstand rein. Source des Mosfets verbinden wir mit dem Minus Pol unserer 12V Spannungsversorgung.
Nun spielen wir folgenden Code auf den Arduino und lassen es flackern:
int ledPin = 3; int ledState[6]; long randNumber; int i; void setup() { pinMode(ledPin, OUTPUT); randomSeed(analogRead(0)); ledState[0] = random(10, 254); ledState[1] = random(10, 254); ledState[2] = random(10, 254); ledState[3] = random(10, 254); ledState[4] = random(10, 254); ledState[5] = random(10, 254); } void loop(){ analogWrite(ledPin, ledState[i]); randNumber = random(-70, 71); ledState[i] += randNumber; if (ledState[i] > 200) { ledState[i] = 254; } if (ledState[i] < 40) { ledState[i] = 0; } delay(50); }
Lösung 2: ATTINY85
Jetzt ist ein komplettes Arduino Board hierfür natürlich ziemlicher Overkill. Das kann ein ATTINY genauso gut. Die Ansteuerung des Mosfets bleibt hier gleich. Wir müssen nur mehr Aufwand treiben weil der ATTINY keinen integrierten Spannungsregler besitzt. Wir würden Ihn mit 12V einfach braten. Zum Glück gibt es für solche Zwecke passende Festpannungsregler welche mit ein bisschen Peripherie aus den 12V für den ATTINY85 verdauliche 5V machen.
Wir brauchen:
- ATTINY85-20PU inkl. Sockel
- 2x 10kOhm Widerstand
- Mosfet z.B. STP36NF06L
- 12V LED Streifen
- Kondensator 47µF mind. 16V
- 2x Kondensator 100nF mind. 16V
- Festpannungsregler z.B. L7805CV
- Arduino Uno zum Programmieren des ATTINY85
Wie gesagt der hintere Teil der Schaltung Unterscheidet sich nicht groß. Vorne müssen wir noch den Spannungsregler aufbauen. Die Kondensatoren dienen dazu die Versorgungsspannung zu glätten.
Als Tipp Pin1 ist beim ATTINY85 mit einem Punkt markiert. Auf diesem Pin liegt der Reset den wir mittel eines 10kOhm Widerstandes auf 12V legen.
Wir können fast den gleichen Code verwenden wie für die Lösung mit dem Arduino, wir müssen nur den LED Pin ändern:
int ledPin = 0; int ledState[6]; long randNumber; int i; void setup() { pinMode(ledPin, OUTPUT); randomSeed(analogRead(0)); ledState[0] = random(10, 254); ledState[1] = random(10, 254); ledState[2] = random(10, 254); ledState[3] = random(10, 254); ledState[4] = random(10, 254); ledState[5] = random(10, 254); } void loop(){ analogWrite(ledPin, ledState[i]); randNumber = random(-70, 71); ledState[i] += randNumber; if (ledState[i] > 200) { ledState[i] = 254; } if (ledState[i] < 40) { ledState[i] = 0; } delay(50); }
Dieses Programm muss jetzt natürlich noch auf den µC gebrannt werden. Dazu gibt es an andere Stelle guteTutorials wie man den Arduino als ISP benutzt, z.B.
Hier
oder
Hier
Noch als Tipp, man kann auch den gleichen 47µF Kondensator zwischen Reset und GND nehmen wie man Ihn schon in der Schaltung verbaut. Kein Grund noch 10µF Kondensatoren auszugraben.
Hier mal zwei Bilder wie ich das Aufgebaut habe. Nicht schön aber funktioniert.
Viel Spass. Über Bilder und Feedback würde ich mich freuen.
Mein Dank geht hier auch an GreatScottLab für den informativen Instructables Artikel.
Ein Gedanke zu „DIY Halloween Effekt: Flackernde LED Streifen“