How to Calibrate Your Hot End and Heat Bed with PID Tuning
Knowing how to calibrate your hot end and heat bed with PID Tuning is essential for making high-quality and consistent prints. This is something that every 3D printer user should know about, so I’ve decided to put together a detailed guide for this topic.
To calibrate your hot end and heat bed with PID tuning, you need to run specific commands in the terminal window of your printer’s firmware using a software such as Pronterface. This will give you new PID values which you will enter and save for calibrating the hot end and heat bed easily.
This is just a basic answer to get you started with PID Tuning. I will discuss the process in easy-to-understand details further ahead in the article, so definitely keep on reading for an in-depth guide.
It’s important for you to run the PID Autotune process before starting your 3D printing journey, but before we get into that, let’s understand what is this process and why it’s so crucial for your prints.
What is PID Tuning?
Proportional-Integral-Derivate or PID Tuning is a process that minimizes temperature fluctuations in the hot end and the heat bed of your 3D printer, both of which help with achieving the best quality. It’s usually done by using any software that can send G-Code commands to your 3D printer.
A few popular choices include Pronterface and OctoPrint.
PID Tuning is often compared to the Bang-Bang heating method which is more commonly used in ovens and home heaters.
However, the Bang-Bang method can be inaccurate for 3D printers and uses an inconsistent heating technique that doesn’t usually maintain a constant temperature. It basically sets an instruction to the heater to turn on and turn off between a range of temperatures.
PID Tuning is far more accurate and is capable of holding temperature steadily. It also plays a key role in determining how precisely the 3D printer handles temperature adjustments. People tend to get better printing results with this method.
It’s a great idea to run the PID Tuning method whenever you purchase a new 3D printer, change the hot end, or make changes to it. Doing so would allow you to easily fix any temperature variations causing your prints to fail.
With the initial explanation out of the way, let’s now get into the actual calibration part.
How Do You Calibrate Your Hotend Temperature?
To calibrate your hot end temperature, you will need to run an M303 command in the G-code terminal of a software like Pronterface so it goes into your printer’s firmware. After you get the calibrated values, you will enter and save them in your firmware so you don’t have to run PID Tuning again.
PID Tuning is a fairly straightforward process that can be easily done with the help of your printer’s firmware, which is Marlin in most cases. Make sure that your firmware version is up-to-date before you proceed with PID tuning.
Most slicer software have a dedicated terminal window that can be used to enter commands for your 3D printer. From Simplify3D to Pronterface and Repetier-Host, you can use whatever gets the job done.
I am going to break the PID Tuning process down into steps, so you can better understand the calibration method.
Step 1: To begin the manual PID Tuning calibration for your hot end temperature, we first need to make sure that our cooling fans are turned on to 100% to achieve the best results. An easy way to do that is by entering the following command:
M106 S255
I’ll be using Pronterface as my choice of software.
Step 2: After that, we will simply insert the PID Autotune command in the Pronterface terminal window, which is:
M303 E0 S200 C10
As soon as you run the command, the terminal will say “PID Autotune start” and your hot end’s temperature will start to rise for optimum calibration.
- M303 is the main command that triggers the PID Autotune calibration.
- E0 refers to the extruder and the extruder number. If you only have a single extruder in your 3D printer, E0 is the correct value for you.
- S200 specifies the tuning temperature at which the PID Tuning will occur. You can choose the temperature that you think is the average of what you normally go with.
- C10 is the number of cycles or iterations that the PID Tuning process will run. For the Marlin firmware, 8 is the recommended value, but anywhere from 6-10 works well.
Step 3: The calibration will take a couple of minutes to finish. When it does, you will see the values of 3 different constants pop up in the terminal: kP, kI, and kD. We will use these calibrated values and replace them with our existing ones using the following command:
M301 P(insert value) I(insert value) D(insert value)
The terminal will show you two lines of text and enter the values automatically.
- I found out that you can automatically insert the calibrated values if you write U1 in the M303 command. You would then only have to save your values to the firmware, avoiding the previous step altogether.
Step 4: After that, we will simply save our values by simply using the command:
M500
This step is very important because if you don’t save the calibrated values, you will have to run the PID Tuning process each time after turning your 3D printer on.
That’s about it for calibrating the hot end with PID Tuning! You’ve successfully completed the whole process. If you ever wish to view your saved PID values, you can use the following command:
M503
People often ask how do you do PID Tuning for a hot end, and the answer is fairly simple, as you’ve understood by now. You can also watch the video below to get an illustrative idea of this calibration technique.
It’s also worth knowing that some 3D printers, including the original Prusa machines have a fully automated PID calibration process within the LCD interface.
You just have to set the temperature you want, and the autotune process will calibrate your 3D printer’s temperature automatically and save it too.
It’s usually done by going to the “Calibration” section, selecting “PID calibration,” and then setting the correct temperature to begin the process.
While that may or may not be available on your machine, the process of manual PID Tuning is equally effective and easy as shown above.
How Do You Calibrate a Heat Bed with PID Tuning?
To calibrate a heat bed with PID Tuning, you will need to run an M303 command in the G-code terminal of a software like Pronterface or OctoPrint so it goes into your printer’s firmware. After you get the calibrated values, you will enter and save them in your firmware so you don’t have to run PID Tuning again.
Calibrating your heat bed with PID Tuning should be even easier, now that you know how to calibrate the hot end. The following steps are going to take it from here.
Step 1: In the G-code Terminal of your software, you will run the PID Tuning by entering the full command, which is:
M303 E-1 S60 C10 U1
As soon as you run the command, the terminal will say “PID Autotune start” similar to the hot end calibration and the process will start. It will take a couple of minutes for the tuning to conclude.
- M303 is the main command that triggers the PID Autotune calibration.
- E-1 is the number of the heat bed that will be calibrated.
- S60 is the temperature of the heat bed that needs to be tuned at which is 60° in this case.
- C10 is the number of cycles. It’s a good idea to let the test run 5-15 times for the best results.
- U1 automatically replaces your existing heat bed PID values with the calibrated ones so you don’t have to do another step.
Step 2: After you’ve added the values and the PID Tuning process has finished, you will have to save the calibrated values. To do that, you will run the following command:
M500
That’s about it for calibrating a heat bed with PID Tuning! You’ve successfully saved your values now and can start making picture-perfect prints with a consistent temperature.
You can also run the PID Tuning process in OctoPrint. This open-source platform also has a dedicated Terminal window where you can enter G-Code commands for PID Tuning.
After having your calibrated values, you can enter them in the G-Code Command window of the Cura slicer software for PID Tuning.
The command window in Cura can be found in the “Machine Settings” section which can be accessed by clicking on “Manage Printers.” You would then simply paste the values you’ve got after PID Tuning using the firmware.
The following video explains how to calibrate your heat bed and hot end temperature through PID tuning in Cura.
In Repetier-Host, PID Tuning is carried out in a similar manner. You simply have to click on “Print Panel” so the G-Code terminal can appear. Once done, all you have to do is enter a specific command to begin PID tuning.
Make sure your 3D printer and the software are connected to each other.
The 3D Print General made a more up-to-date video PID tuning your build plate, so check that out below.
https://www.youtube.com/watch?v=7mj47VjlavQ
How Do You Fix PID Autotune Errors?
Many people have reported experiencing some errors when calibrating their hot end and heat bed with the PID Tuning process. There are two errors that appear to be the most common of all. Let’s take a look at what they are and how to fix them.
- PID autotune failed! Bad extruder number
- PID autotune failed! Temperature too high
PID Autotune Failed! Bad Extruder Number
The “PID Autotune Failed! Bad extruder number” error typically occurs when you’re trying to calibrate your heat bed but the terminal window stops the process, showing you this text.
The error usually takes place when you’ve entered the command incorrectly in your G-Code terminal window. “Bad extruder number” refers to the “E-1” part of the PID Tuning command, and there’s a good chance that there’s a mistake in it.
There are two ways to fix the “Bad extruder number” error:
- Input the Command Correctly
- Enable PIDTEMP in the Marlin Firmware
Input the Command Correctly
To clarify again, the command for heat bed PID Tuning is:
M303 E-1 S60 C10
Notice that there is no spacing between E, the dash, and 1.
Enable PIDTEMP in the Marline Firmware
Another quick fix is to enable the PIDTEMP in the Marlin firmware. To do that, you simply have to launch the firmware, go to the Configuration.h area, and press “CTRL +F.”
This would allow you to search for “#define PIDTEMPBED”, where you would simply uncomment it so there is no “//” in front of it. Doing this has worked for many people who have been in the same boat.
One person even said that preheating the bed to 10°C did the trick for them. You can also try this step to see if it resolves your issue.
PID Autotune Failed! Temperature Too High
The “PID Autotune Failed! Temperature too high” error can occur when you’re trying to calibrate your hot end with the PID Tuning calibration process.
This error means that whenever the PID Tuning process tries to run, the temperature of the hot end overshoots and goes beyond the set temperature value.
For instance, if you’ve set the target temperature to 200°C for the hot end to calibrate at, the actual temperature will go drastically beyond the set temperature, about 30-40°C above thereby causing the “Temperature too high” error.
The good news is that several people who experienced this issue all reported one common fix.
Most 3D printers have a power supply of either 24V or 12V. All users reporting the “Temperature too high” error were using a 12V cartridge in a 24V powered system.
Therefore, a heater cartridge with the incorrect voltage supply causes the temperature to overshoot and result in this error.
In this case, you can easily replace your heater cartridge with the correct voltage for your 3D printer setup to quickly fix the “Temperature too high” error.
I ran both the hotend and bed autotune several times. First with 3 cycles, and then again with 10 cycles. I did not use the PID values from each autotune, I just wrote them down. All of the autotune results are different each time. How do you know which one to use? Why is there such a difference in values between subsequent runs? The heated bed was way far off. PID starting at 198.96, 38.8, 680.25. Then jumping up to (10 cycles) 278.35, 42.89, 1204.32! Those aren’t typos. So how do you decide which to use? Should we get it to the point that all the autotunes comes out with roughly the same values each time? Thanks for the guide! Great job!
Hey Nathan, thanks for the words about the guide, glad it helped. In terms of your issue, it could be down to a few things. It could be a hardware issue with your thermistor and bed wiring for any issues. You want to make sure the environment is consistent while running these. It’s normal to see variation but these are very significant differences. You can also try 3D printing with a few values and see what performs best. Check that your firmware is updated as well.