Die Idee dazu kam mir noch recht zu Anfang meiner 3D-Druck-Karriere, als ich in irgendeinem YouTube Video mal einen älteren Makerbot gesehen habe, der eine farbige Beleuchtung hatte. Einen entsprechenden LED-Strip, sogar mit warmweißen LEDs, zusätzlich zu den farbigen, also RGBW oder streng genommen RGBWW, hatte ich noch von einem früheren Projekt rumliegen. Nach kurzer Recherche war klar, dass außerdem Transistoren benötigt werden, da das Mainboard des Druckers an seinen geeigneten Ausgängen nicht genügend Strom für die LEDs liefern könnte.
Leider kam schnell die erste Ernüchterung, denn damals hatte ich mein Mainboard noch nicht getauscht. Leider ist das in den ersten Tornados verbaute Mainboard sehr rudimentär und hat nur wenige Anschlüsse, die für dieses Projekt nötig wären. Gebraucht werden hier nämlich Pins, die PWM-fähig sind (Pulse Width Modulation), also Pins die nicht nur den Status an oder aus kennen, sondern die quasi "dimmbar" oder eben analog sind. PWM funktioniert, vereinfacht gesagt, durch schnelles an- und ausschalten. Je höher die Frequenz, desto heller leuchtet eine angeschlossene LED, bei langsameren Frequenzen leuchtet sie entsprechend dunkler.
Das Board der frühen Tornados verfügt zwar mutmaßlich über PWM-fähige Pins, davon war bei mir aber einer schon vom BLTouch belegt. Mutmaßlich schreibe ich, weil das Board leider kaum dokumentiert ist. Es weicht vom MKS Base in einigen Aspekten ab, rein optisch kommt es wohl dem Biqu Base am nächsten, jedoch habe ich auch dafür keine ordentliche Dokumentation gefunden.
Der einzige Anschlussblock, in dem dort wohl nutzbare PWM Pins vorhanden sind, wäre der Servos Block. Dieser hat beim Tevo Base aber nur zwei Reihen (jeweils Signal, +5V, GND) und davon war, wie gesagt eine schon vom Bed Leveling Sensor belegt. Zum Glück habe ich das Board dann getauscht und auch die neueren Tornados kommen ab Werk mit einem MKS Gen L Mainboard, das über ausreichend PWM Pins verfügt.
Anschluss der LEDs
Ein wichtiger Hinweis vorweg: Die Pins auf dem Board, sei es nun ein MKS Gen oder ein Arduino mit RAMPS Shield oder was auch immer, sind nur dafür gedacht Steuersignale zu übertragen, können daher nur wenige mA an Strom liefern. Für eine einzelne LED beim klassischen Blink-Aufbau, den jeder wohl als erstes Arduino-Projekt umsetzt, reicht das aus. Für einen ganzen Streifen mit einigen mehrfarbigen LEDs ist das aber viel zu wenig. Wer hier seine LEDs direkt anschließt, wird wohl kein Licht bekommen oder schlimmstenfalls sein Board zerstören.
Der Korrekte Weg führt deshalb über Transistoren, die in diesem Fall als Schalter eingesetzt werden. Geschaltet wird bei den meisten LED-Streifen die Masse. Die Streifen besitzen einen gemeinsamen Eingang, meist für 12V, der alle LEDs mit Strom versorgt und je Farbe einen Anschluss für Masse, also GND.
Kleine Transistorkunde
Ein Transistor hat drei Anschlüsse: Collector, Emitter und Basis. Wir verwenden einen NPN Transistor, das bedeutet, dass unser Schalter normalerweise immer offen (NO oder normally open) ist, also keinen Strom vom Collector zum Emitter leitet. Um den Schalter zu aktivieren wird ein Signal an die Basis angelegt, nun wird die Collector-Emitter Strecke leitend.
Auf unsere Anforderungen abgeleitet heißt das, dass wir den Streifen zunächst einmal direkt mit Strom versorgen müssen, den können wir z.B. am Netzteil des Druckers abgreifen. Dann benötigen wir je Farbe einen NPN Transistor, für RGBW also vier Stück.
Am Collector des Transistors wird eine Farbe des LED Streifens angeschlossen, am Emitter GND, davon finden sich am Mainboard und Netzteil ausreichend geeignete Anschlüsse. Den PWM Pin unseres Mainboards müssen wir dann noch mit der Basis verbinden. Nun wird jedes Mal wenn der Pin ein Signal ausgibt auch der Weg für den Strom durch die LEDs frei, unser Streifen leuchtet.
In der Praxis braucht es in diesem vereinfachten Aufbau noch eine zusätzliche Komponente: Einen Basis (Vor-)Widerstand für den Transistor. Der sorgt dafür, dass der Transistor auch wirklich durchschaltet, wenn ein Signal anliegt und schützt unseren Transistor vor Überlastung. Ohne den Widerstand könnten nämlich, je nach Last die geschaltet wird, hohe Ströme von der Basis zum Emitter fließen. Die meisten Transistoren sind auf dieser Strecke aber nur für kleine Ströme ausgelegt und würden andernfalls zerstört.
Schaltplan
Im folgenden Schaltbild seht ihr den grundlegenden Aufbau unserer Steuerung. Links sind die Eingänge, also 12V vom Netzteil (Achtung, bei einem 24V Drucker nicht einfach einen 12V Streifen anschließen!) und die Steuersignale vom Mainboard (bezeichnet mit den Namen der Pins, die wir in diesem Tutorial verwenden). Rechts seht ihr die entsprechenden Ausgänge, die an den LED-Strip angeschlossen werden. In der Mitte die vier Transistoren mit jeweils einem Basiswiderstand. Die Seite mit dem Pfeil ist der Emitter, die alle über eine gemeinsame Leitung an GND angeschlossen sind.
Der Basiswiderstand kann übrigens nicht ganz beliebig gewählt werden. Zwar hat man eine gewisse Toleranz nach oben und unten, aber sowohl ein zu kleiner als auch ein zu großer Wert kann dazu führen dass die Schaltung nicht funktioniert oder die Transistoren überhitzen und zerstört werden.
Die Berechnung des geeigneten Vorwiderstands würde den Rahmen hier sprengen, da man einige Werte der Transistoren und den Strom, den die Verbraucher ziehen, kennen muss. Deshalb verlinke ich an dieser Stelle nur auf einen sehr guten Artikel bei mikrocontroller.net, nach dem auch ich mich gerichtet habe.
Ein Beispiel dazu möchte ich euch aber geben: Ich habe einen LED Streifen in der oberen Strebe des Druckers, also etwa 35-40cm lang. Alle Farben auf voller Helligkeit werden in der Regel nie gemeinsam an sein, daher habe ich mich nach den stromhungrigsten Farben (weiß und blau) orientiert. Sind die beiden gleichzeitig zu 100% an, zieht mein Streifen um die 200mA, bei nur einer Farbe um die 100-150mA. Nach einer Recherche im Datenblatt der Transistoren, die ich verwende, komme ich auf einen Widerstand von etwa 220Ω, der über diese Spanne im Mittel ganz gut passt.
Steuerung der LEDs über Marlin
Eher zufällig habe ich entdeckt, dass schlaue Entwickler doch tatsächlich schon eine Steuerung für verschiedene Arten von LEDs in die Firmware integriert haben. Wir müssen als gar nichts programmieren!
Das Feature findet sich in der configuration.h, ziemlich am Ende. Dort muss lediglich die Zeile für die verwendeten LEDs aktiviert werden und die verwendeten Pins sind anzugeben - das war es schon. So sieht das dann für unseren RGBW Streifen aus:
//#define RGB_LED #define RGBW_LED #if ENABLED(RGB_LED) || ENABLED(RGBW_LED) #define RGB_LED_R_PIN 5 #define RGB_LED_G_PIN 4 #define RGB_LED_B_PIN 6 #define RGB_LED_W_PIN 44 #endif
Wenn dein verwendeter Streifen keine extra weißen LEDs hat, dann wird anstatt der zweiten Zeile die erste aktiviert. Ein Pin für weiß muss dann nicht definiert werden.
Wie man sieht habe ich die Pins 4, 5, 6 und 44 verwendet. Alle sind auf dem MKS Gen L PWM Pins. Die drei mit den niedrigen Zahlen sitzen in den den Blöcken Servos-1 und Servos-2, Pin 44 im Aux-2. Die untere Reihe des Servos-1 Blocks wird vom BLTouch belegt, daher wird der hier nicht verwendet.
Die Plug&Play Lösung
Während der Vorbereitung dieses Tutorials kam mir der Gedanke, dass vielleicht nicht jeder das hier gezeigte einfach umsetzen kann. Vom Schaltplan ist der Weg zur Platine mit der richtigen Software nicht mehr weit. Daher habe ich auf Facebook gefragt, ob Bedarf für eine fertige Plug&Play Lösung besteht. Mit weit über 90% war das Ergebnis recht eindeutig.
So ist dann das RGBW Plug&Play entstanden, das ihr ab sofort als komplettes Kit bei mir im Shop kaufen könnt.
Update: Die Kits, entweder zum selbst löten oder als fertig bestückte Platinen, sind leider ausverkauft. Ich habe aber noch einige der unbestückten Platinen auf Lager. Es würde sich leider nicht lohnen dafür nochmals Spannungsregler, Transistoren & Co nachzubestellen, da bei sehr kleinen Stückzahlen die Einkaufspreise der Teile sehr unattraktiv sind. Das ist euer Vorteil, denn wenn ihr eh einen gut gefüllten Vorrat an Komponenten daheim habt oder günstig an die Teile kommt, dann könnt ihr jetzt ab sofort die letzten Platinen günstig erwerben.
Der Clou des Boards besteht darin, dass neben einem einfachen Zusammenbau auch an die Stromversorgung gedacht wurde. Die meisten LED-Strips arbeiten nämlich mit 12V, können also an einen Drucker, der mit 24V arbeitet, wie der Tevo Tornado, nicht direkt angeschlossen werden. Zwar gibt es auch Strips für 24V, die sind aber meist teurer.
Daher sind im Kit nicht nur die Transistoren und Widerstände enthalten, sondern auch noch ein 12V Spannungsregler, der bis zu 2A liefern kann. Das Board kann also direkt am Netzteil angeschlossen werden und liefert am Ausgang die benötigten 12V. Aber auch für Drucker mit 12V Netzteil oder 24V Streifen ist es geeignet, da man einfach per Jumper den Regler umgehen und die Spannung direkt vom Eingang zum Ausgang durchschleifen.