I'm Tom, and today i'm going to show you how
to use the PID autotune feature of the Marlin
firmware.
So, temperature control is one of the most
crucial features of our 3D printers - while
the earlier printers simply controlled the
temperatures of the hotend and later on, the
heated bed, by simply turning the heaters
on when the temperature was below the setpoint
and off when it was above, todays firmwares
use a much more elegant way of managing heating.
Simply speaking, they determine how much power
to send to the heaters by looking at how large
the difference between the actual temperature
and the setpoint is, how long the actual temperature
has been off from from the setpoint and how
quickly the temperature is changing at the
moment.
These three factors make up the proportional,
P, integral, I and differential, D part of
what is call the P-I-D loop.
Now, the PID loop is not an intelligent system
on its own and you need to tell it how much
it should care about each of the P, I and
D terms by giving the PID loop a set of Kp,
Ki and Kd values.
Figuring those out by hand is pretty tedious
and probably won't get you a PID loops that
works well.
So what the guys behind the Marlin firmware
implemented is what is known as PID autotune,
and it's an effective and easy way of figuring
out a set of Kp, Ki and Kd values.
Let's try that out.
To get started, you need a version of the
Marlin firmware on your printer, a working
hotend and/or a heated bed that reads correct
temperatures and a RepRap host that lets you
send commands to your printer via a command
line.
I'm using Octoprint for this, but for example
pronterface will work just as well.
So the basic command for autotune is M303
- if you just send that command without any
options, it will tune your hotend number one
for a temperature of 150°C. That will give
you a somewhat usable set of values, but to
get better ones, you can add two more options:
One is S to tell autotune the temperature
you want to tune for, for example S230 for
a hotend that's going to print ABS or S120
for a heated bed for ABS.
The other option is C as in Cesar, which tells
autotune to run the tuning process a couple
times in a row and improve the results with
each pass.
By default, it does three passes, but since
they don't really take long, i'm going to
use C10 for ten passes.
So let's try that out, i'll send M303 S230
C10.
The hotend will heat up and then cool and
heat again around the target temperature for
ten times.
It will report back to you each time it has
finished a pass and give you a set of PID
tunings.
When it's done, it will write back a final
set of Kp, Ki and Kd values back to you.
You can temporarily set them until the next
time you reset the printer by using M301 with
P, I and D and each of the calculated tuning
values as arguments.
So in my case, i'll send it M301 P12.6 I0.66
D60.6 for my E3D hotend.
If you're also using an E3D hotend, you can
use these values as a basis.
You can then go and try these shiny new PID
tuning on a print - Marlin will use them until
the next time you disconnect from your printer.
Now, that was for tuning a hotend.
If you want to use PID for your heated bed,
there is one more option you need to add to
the M303 command, and that is E for extruder.
The heated bed is extruder negative one, the
first hotend is zero, the second hotend is
one and so on.
To set the values, you'll need to have PID
enabled for the heated bed in Marlin's configuration
and you can then use M304 instead of M301
with the same arguments as for a hotend.
By the way, if you have more than one hotend,
Marlin will use the same PID tunings for all
hotends, no matter which one you used for
autotune.
To make the settings permanent, you can either
send a simple M500, which will make Marlin
automatically load up the values you just
set with M301 and M304 each time you power
up your printer.
You can also change the values in Marlin's
configuration files and re-upload the whole
firmware.
So that's all there's to it - autotuning is
a one-time process and can really improve
your prints, so if you haven't tuned your
printer yet, do it now.
That's it for today!
As always, thanks for watching and don't forget
to like, subscribe and comment you heart out!
