Hey, you know what all the cool kids are into
these days?
LEDs.
You’ve got them in warm white, cool white,
RGB full color, whatever you want, and once
you have some on your 3D printer, not only
do they light up your work area and the print
itself, but you can also use them to show
some simple status information about what’s
going on.
This is going to work for pretty much any
3D printer, the wiring is super simple and
you don’t even need to mess with firmware
settings to have these LEDs automatically
controlled by the printer in a somewhat intelligent
fashion.
So follow along and learn what LEDs I like
to use, how to wire them into your 3D printer’s
control board and which options you have make
them useful.
Let’s go!
So let’s start out with what LEDs make sense
for us here.
You’re probably going to be powering these
LEDs from your printer’s built-in power
supply, they don’t add a ton of load, so
unless you’ve got a power supply that’s
already struggling or you’re trying to add
an obscene amount of LEDs, you’re probably
going to be fine.
The LEDs most of you will think of are probably
LED strips, they’re a centimeter wide, they’re
flexible, and have some double-sided tape
already applied on the back, so you can just
stick them anywhere you want, bend them around
corners or even wrap them around aluminum
profiles.
The LEDs themselves are these little guys
on here, you can get them with different brightnesses,
different shades of white or in any other
single color and, of course, in RGB, which
is basically a red, green and a blue LED combined
into one, and you can control each color individually.
So the common LED strips are a good choice,
they are incredibly cheap, you can get a five
meter long spool for just a few bucks and
you can cut that into smaller sections every
three LEDs.
Even though the sticky tape on the back does
adhere well when you stick them down, I like
to add a dab of hotglue or superglue to the
ends to keep them in place permanently.
Another type I also really like are these
LED rings, they are originally intended to
get that tacky BMW angel eye effect on your
car, but because you can get them in different
sizes, you’re going to find one that is
the perfect size to fit around your hot end.
These come on a rigid PCB, so you don’t
have to worry about mounting too much, if
you want, you can of course make a 3D printed
adapter to fit stuff perfectly, but you can
also just epoxy or zip-tie them to your carriage.
These have a nice, even light that highlights
details as they are being printed, but you
definitely should not pick a ring that is
much too large, since that will light up everything
around your toolhead, but leave the very center
in the dark.
Now, those two run off of 12V so they’re
somewhat specific to this use, another option
I kinda like are basic LED spots, they come
in the shape of a Halogen spot and these work
really well if you have your 3D printer in
any sort of an enclosure, you drill a few
holes, pop ‘em in and basically hook them
up like any other light fixture.
It’s a different approach, but just to throw
it out there, there are always different options.
Now, how do you wire the LED strips and rings
up?
The simplest way would be just to head over
to your printer’s power supply, add a pair
of wires and connect that straight up to your
LEDs.
If your printer is using a 24V power supply,
which is somewhat common is nicer machines,
you will need to add a small buck converter
in line that will drop the 24V to 12, basically
you hook up the input side to the power supply,
adjust the potentiometer on them until the
output has 12V, and then connect the rest.
So hooking stuff up directly might be perfectly
fine, as soon as you switch on the printer,
the LEDs also light up, but you can go quite
a bit further.
If you just want a simple switched LED that
is on when the hotend is hotend, so when the
machine is working, you can try and see if
your printer has a switched hotend cooling
fan that turns off when the hotend is cold,
don’t confuse that with the part cooling
fan though, that’s different.
Usually the output for the hotend fan has
bit of extra capacity and you could wire some
LEDs directly into that output, in parallel
with the fan.
It’s not really elegant, though.
So what you can do instead for full control
is to use a spare pin that’s routed out
somewhere on the board.
You should be able to find a graphic like
this that shows which physical, exposed pins
correspond to which Arduino pin numbers.
You can use both so called digital pins that
either only have a number or are called D12,
D13 etc, or the analog pins should there be
any spares, they are always called A1, A2
and so on.
On the RAMPS, you have all these pins, on
the RAMBo, there’s this extension header,
the MKS Base has few pins next to the endstop
connectors - and, on many boards you can even
use unused endstop ports or the pins on the
LCD connector to get an few extra control
signals.
But if you do that, keep in mind that the
firmware might already be configured to use
those signals for their original purpose,
which means we can’t easily use them for
other stuff.
Your best bet is always to use spare pins
that are otherwise unused.
Now, these pins are directly connected to
the microcontroller, so they can’t drive
any significant load by themselves.
Instead, you’ll need to add some sort of
driver module.
Of course, you can use the classic Arduino
relay module if you fancy that “clank”
every time it turns on or off, but since we’re
only switching DC current with the same ground
reference as the control board, a MOSFet does
the job much better.
While, of course, you can use a bare MOSFet
or even a bipolar transistor, using one of
these ready-made boards gives you the all
the circuitry and screw connectors and they’re
like 50ct each.
I’m going to be using this homemade board
from a few years ago, which does the exact
same thing.
You connect your spare pin from the control
board to “signal”, a spare ground to ground,
you can also grab ground from the power supply
if you don’t have an extra one on the board,
and then wire in your 12V supply on the input
and the LED on the output side.
The RGB strips only have a single positive
line, so you only have to hook that up once,
but you do have to connect each individual
color line to the negative output side of
a switch module.
And that’s the hardware done!
Now, actually, you can right away try out
if the hardware is working by sending a single
line of gcode to your printer - that is M42,
P, then the pin number you used, and S255.
If you used an analog pin, you’ll need to
get the according digital pin number according
to this table.
And as a bonus, try the same thing with S126
- if your pin can do pulse width modulation,
the LED should now be at just below half brightness
and you’ll be able to dim it using any value
between 0 and 255 for the S setting.
If the LED turned off completely, then that
pin can only do on and off, which, honestly,
is still fine.
If you’re not getting any reaction from
the LEDs at all, double-check your wiring
and if that doesn’t help, maybe try a different
pin.
So we’ve got full control over the LEDs
through the firmware, which is great, now
how do we make them smart?
Some firmwares like Smoothieware let you define
conditions when the printer should turn on
or off certain things, but we’re just going
to weave the controls into every print’s
gcode.
It’s simple, it’s automatic once it’s
set up, but there are a few things to watch
out for.
For the simplest implementation, we’re going
to use the start and end gcodes, but of course
you can customize this however you want it,
like if you have two extruders, have the printer
light up differently for each one.
But to start out, we’re going to head into
the start and end gcode settings of your slicer.
Depending on how many LEDs you hooked up,
you’ve got a ton of different options, I’m
just going to walk you through what I’d
set up for a ring light on the toolhead and
an RGB LED strip somewhere else, illuminating
the rest of the machine.
At the very start of a print, I want to indicate
that the printer is preparing and heating
up, so I’ll add M42 S, then the pin for
the red part of the RGB strip, S255, and the
same thing for the green, to mix yellow light.
Just to be sure, I’ll also add the gcode
to turn all other light off.
Then you’ll have the homing and autoleveling
parts of the startup, and once that’s done,
I want to switch it to a pure red.
Now, the important thing is to add an M400
line before our next lighting-related gcode,
because of some whacky logic, Marlin doesn’t
always run gcode one line after another, but
might run some stuff in advance as soon as
it’s stored in its buffers, and the M400
will just say, ok, before you run anything
after this, make sure that you are done with
everything else.
And that includes homing or heating up.
So, M400, then M42 P, pin for green, S0 to
turn it off.
Then we’ll have the M190 line, which pauses
until the heated bed is hot, if you have one,
and M109, same thing for the hotend.
So once those lines are done, the printer
will start the actual printjob, and for that
I just like to have a nice, white light on
the entire machine, so another M400 just to
be sure and then an M42 for the LED ring,
the green and the blue part of the strip and
you’re in bussiness!
Now, once the print is done, we can actually
use the LEDs to tell us when the printbed
is cold enough to remove a part.
So what usually works is this: You let your
printer run whatever moves it does to move
the bed forward and the printhead out of the
way, and then we first set the LEDs to, for
example, green, and then to blue once everthing
is cool.
So first off, turn everything off but the
green LEDs, then use M190 R25, or 30, and
by using the R instead of what would usually
be S and then the temperature, the printer
now waits for the bed to cool down as well.
Now another M400, so at this point the bed
is guaranteed to be at 25, 30, whatever degrees
Celcius, M140 S0 to turn it off all the way
without waiting, and your M42s to turn off
green and turn on blue.
If you want, you can add a timer until the
LED shuts off on its own, that is G4 S, and
then the time in seconds, M400, and then the
M42 to turn off whatever LED is still on.
So this is what the entire thing looks like
now: Even without an LCD we get a ton of information
on what the printer is up to and you’ll
never have to your phone as a flashlight again
to get a better look at how your prints are
looking.
Again, all the materials are linked in the
video description, it’s all pretty cheap
stuff, so if you’re looking for a quick
project that’ll make you 3D printers cooler
and more usable, give it a go!
If you’re running into trouble, check the
forums at discuss.toms3d.org, I think that’s
the exact type of help and advice the forums
should be ideal for.
If you found this video helpful, give it a
thumbs up, get subscribed to see more like
it and if you feel like directly supporting
the channel, head over to Patreon to get access
to monthly hangouts and more.
That’s it for today, thanks for watching
and I’ll see you in the next one!
