In der Nachbarschaft blinkt und leuchtet es schon wieder recht kräftig. Wie immer, knapp bei Kasse und eher bastelwillig suchte ich mal, was ich denn basteln könnte um die Nachbarn auch weihnatlich mit Licht zu nerven einzustimmen. Da liegt ja noch so ein IKEA DIODER rum, den ich eigentlich kaum verwende. Ob man den eventuell per Arduino steuern könnte? Gesagt getan, Multimeter raus gekramt und erst mal ausgemessen: Betriebsspannung 12V, Strom für einen Strip zwischen 16,1 mA und 44,7 mA bei 12V.
Auf der Rückseite des Dioder-Strips steht passenderweise die Pinbelegung: RBGW, wobei W +12V sind. Widerstände sind im Strip selber schon enthalten, daher verzichtete ich auf Vorwiderstände. Der Arduino selber liefert 5V mit maximal 40 mA per digitalem Ausgang. Daher bedueten 12V Betriebsspannung und bis zu ca. 45 mA Strom, dass man den Strip am besten über einen Transistor oder MOSFET. BC337-40 NPN Transistoren hatte ich gerade da (Notiz an mich: MOSFTEs kaufen), es konnte also los gehen.
Nächster Schritt: Datenblatt des BC337-40 angeschaut, festgestellt, dass der die LEDs locker ansteuern kann und maximal 100 mA Baisstrom auf Dauer verträgt. Soweit so gut, 5V Maximalspannung am Ausgang des Arduino, da kann man dann ja einen Widerstand rein hängen um den Basistrom (IB) zu begrenzen. Aber wie hoch soll der werden? Meine letzten Reste an Elektrotechnikwissen rausgekramt und nachgeschaut wie hoch denn der „DC current gain“ des BC337-40 wäre. Der läge bei einem Collectorstrom (IC) von 40 mA und VCE von 1 V bei ca. 150. Wenn ich mich nicht total irre, bräuchte ich also mindestens 0,3 mA IB um den einen Strip richtig bedienen zu können. Da ich einen 1,3 kΩ Widerstand zwischen Arduino und Basis verwendete und IB daher auf ca. 3,8 mA beschränkte, sollte das auch kein Problem darstellen.
Flugs mal eben die Schaltung zusammen gesteckt.
Eine kleinen Testcode geschrieben:
//PINs festlegen #define R 3 #define B 5 #define G 6 //PINs als Ausgang festlegen und auf 0V setzen void setup() { pinMode(R, OUTPUT); pinMode(G, OUTPUT); pinMode(B, OUTPUT); digitalWrite(R, LOW); digitalWrite(G, LOW); digitalWrite(B, LOW); } //kleiner Regenbogen void loop() { setColor(155,0,0); delay(150); setColor(155,27,0); delay(150); setColor(155,155,0); delay(150); setColor(0,155,0); delay(150); setColor(0,0,55); delay(150); setColor(10,0,30); delay(150); setColor(43,0,55); delay(150); } //eine Funktion die RGB-Farben nimmt und auf den Strip ausgibt void setColor(uint8_t r, uint8_t g, uint8_t b) { if(r > 255) r = 255; if(g > 255) g = 255; if(b > 255) b = 255; analogWrite(R, r); analogWrite(G, g); analogWrite(B, b); }
Kompiliert und hochgeladen. Läuft und blinkt.
Na klar, war ich nicht der erste, der sich damit beschäftigt hat. Und wie immer, fällt einem bei so einfachen Sachen erst hinterher ein zu schauen, was es denn schon alles gibt. Ich bin dann auf FastLED und auf einen Artikel bei tronixstuff gestoßen. Im Artikel wird die Ansteuerung mit MOSFETs und auch das Steuergerät von IKEA beschrieben. Scheinbar gab es sogar mal DIODER mit reprogrammierbaren Steuereinheiten – ich muss meinen wohl doch mal aufmachen.