Matthew Harrison - Apr 19 2017
Having your extruder properly calibrated is essential for perfecting your print quality, and this guide will walk you through the entire process from beginning to end.
There are two parts to calibrating your extruder - tuning your extruder steps/mm value, and tuning your extrusion multiplier. It is important to do it in this order. First, we want to sort out how much plastic is being fed in to the hotend (regardless of any values like extrusion width, extrusion multiplier, filament diameter etc), and then move on to how the printer is behaving in terms of the plastic actually being pushed out and laid down.
For users with a bondtech or similar extruder, I would recommend skipping the extruder steps/mm calibration as these extruders already come with very specific recommended values. In this case, you should follow the manufacturer’s specification. This includes the Prusa MK3 and MK3S which have bondtech gears built in inside. Leave the extruder steps/mm as stock, and go straight to the extrusion multiplier calibration step.
For any other extruder styles like the classic hobbed gear and bearing set up, you should follow the steps below calibrate your extruder steps/mm.
Calibrating extruder steps/mm
To calibrate the steps/mm value, we tell the printer to extrude 100mm of plastic. Then we'll measure how much plastic it extruded and see if it actually was 100mm - pretty simple!
- First measure out 120mm of filament from where it enters your extruder and mark it with a pen or marker. This will be the reference point.
- Connect your computer to your printer and open up a program that allows you to send individual gcode commands to it (like Pronterface, Simplify 3D, Repetier Host, or Octoprint web interface).
- Heat up your hotend to your regular printing temperature and ensure that the nozzle is in a position above the bed where it can freely extrude filament.
- Send the command
M83. This will ensure that your printer is interpreting the following extrusion commands in relative mode.
- Set the extrusion feedrate to 50mm/minute with the command
- Extrude 100mm of plastic with the command
This will take 120 seconds until it's finished extruding. The reason for extruding so slowly in this step is to ensure that the resistance of the plastic further down in the hotend does not affect how much is fed in by the stepper motor. It also helps to take the temperature out of the equation, again by reducing the effects of pressure in the nozzle.
- Once the machine has finished extruding the 100mm, switch off the hotend heater.
- Measure the distance between the point that you marked before we started, and where the plastic enters the extruder (the same point from which you measured the initial 120mm).
If this is exactly 20mm, congratulations! Your extruder steps/mm are perfectly calibrated. If it is more or less than 20mm, then it means that your printer is over or under extruding. Fortunately the way to solve this is fairly easy.
In order to calculate what our new steps/mm value will be, we need to know the existing steps/mm value, and the under/over extrusion rate.
To get the existing steps/mm value, send the command
M503. This will print out all the current values saved in your printers EEPROM (storage that persists when it is powered off), including all your axis steps/mm values.
We're only interested in the E value, highlighted in the picture below. Locate it and record it.
Now we get to do some maths! Yay.
We need to work out how much plastic your printer actually extruded, which can be calculated from: 120 mm - left over filament distance (measured in the previous step). For example, for me this was 120 - 26 = 94.
So my printer was actually only extruding 94 mm when I asked it to extrude 100 mm - that's a 6% under extrusion! So, to calculate the new, correct extruder steps/mm value, we perform the following calculations.
Desired extruded distance / actual extruded distance = correction multiplier:
100 / 94 = 1.0638
Correction multiplier × original extruder steps/mm = calibrated extruder steps/mm:
1.0638 × 161.3 = 171.6
This is our new calibrated extruder steps/mm value! To enter and save it to your printer use the commands
M92 E###.# (replace the hashes with your calibrated extruder steps/mm value) and then
M500 to save it.
To make sure that this has all worked out as intended, turn your printer off and on or reset it and then send the command
M503 again to check if your new extruder steps/mm value is shown.
To do a final test to make sure it's correctly calibrated, measure out another 120 mm of filament, mark it, and then extrude 100 mm. You should have exactly 20 mm left over. If not, recalibrate using the steps above.
Calibrating extrusion multiplier
Now that we know the right amount of filament is being fed into the hotend by the extruder mechanism, we can further calibrate based on how the plastic flows from the nozzle. We can do this by printing a single perimeter cube and adjusting the extrusion multiplier so that the width of the walls is the same as the extrusion width set in the slicer.
To begin, accurately measure your filament diameter at a few points throughout the spool and take the average. All measurements here should ideally be done with a micrometer, as calipers are not precise enough for such small measurements. If you must use calipers, a quality brand is preferable.
Enter the filament diameter value into your slicing software and make sure that your extrusion multiplier is set to 1. Check what your extrusion width is set to in the slicer and remember it - that's what we'll be comparing to later on.
Load this calibration model into your slicer and set it to print in vase mode. You'll also want to print it at a fine resolution - I chose 0.15 mm. Print it out and measure the thickness of each of the walls and calculate the average.
Your aim is to get this to be the same as your extrusion width set in your slicer.
Adjust your extrusion multiplier to: (current extrusion multiplier × extrusion width) / measured wall thickness.
For example, since my walls first came out as 0.5 mm even though my extrusion width is set to 0.45 mm, my extrusion multiplier would need to be changed to (1 × 0.45) / 0.5 = 0.9.
Enter this into your slicer and print the model again and re test. If your measurements and your calculations were correct it should only take one adjustment, but it may take a few tries to get it right.
This extrusion multiplier value should be calibrated and set on a per material basis due to the different flow characteristics of different materials when extruded (eg. viscosity, die swell). It may also vary between different brands of the same material type too, so keep this in mind.
After you have completed all these steps, it’s a good idea to tune or re-tune your first layer height, which may need adjustment. If you're finding that your prints look like they're over extruding or under extruding, double check your filament diameter and make sure it's the exact same as what you have in your slicer. Your extruder is now fully calibrated! Enjoy printing knowing that you have it dialed in perfectly.
If you're still experiencing issues with your extruder intermittently under or over extruding, the issue may be your filament. Try testing with another filament from a brand you can trust, preferably with a good diameter tolerance.
If you're located in Australia and you're after a filament you can rely on, give Matt's Hub a try! Our filament diameter is strictly regulated at 1.75mm ±0.02mm, and it's made using high quality virgin resin from NatureWorks USA for great consistency in flow and mechanical properties. You wont be disappointed!
Great guide! But I can’t find a calibration cube model that looks like yours to test. All the ones a quick search has found appear to be solid things that are no good for measuring the wall thickness.
Anyone have a link to an appropriate model? Thanks!
Hi Mat Thankyou so much for this information on the extruder calibration I have been struggling with this for some time and I have a handful of ways I was told to do it and nothing was correct but your page absolutely amazing it took 4 tests and I had the calibration spot on perfect so thank you for all the help your pages and information give and keep up the good work.
Congratulations for the patience you dedicate to us newbies: your contribution is precious! I performed the calibration and found the new E value in the GCode via my trusty Repieter Host … but when I turn everything back on sometimes something gets confused and now the printer no longer works with my program, nor with Canvas Hub. Help!
-in GCode I enter:
-M503 check to find E value in GCode
(I find in my case the value of E at 90! = under-extrude of 30 mm)
-M92 E179,2 calculation and insert new value
M500 save new value
- I turn off and on again
-…. but sometimes the printer does not reconnect either to Repieter Host, or to Canvas Web or Host !!!!
Why? You know it?
Adam, the extruder steps calibration can be done once for your printer, but it is a good idea to do the extrusion multiplier calibration for each different filament that you use.
Matt, to overcome this issue please use the gcode commands via a program like pronterface or octoprint rather than using the control panel on your printer. Hope this helps!
For setting the extruder steps, after switching to a dual gear extruder on an Ender 3v2 and doing this test and applying the formula, I get a value of 442. I have done this a few times and checked my math. When I try to adjust the extruder steps using the control panel, the maximum I can enter is 186. So I’m not sure where to go from here. Any help would be appreciated.