Calibrating your printer is a necessary adventure that every printer owner needs to learn how to do. There are many resources online for printer calibration from written guides (like this one) to youtube channels and more. Since everyone learns a little differently, finding the guide that works for you is important. My goal here is not only to give you the “how” but also the “why.” As with everything you find on the internet, you should be skeptical and vet all the information you find. I am just here to pass on some of my knowledge and experience.
What are E-steps?
E-steps is short for extruder axis steps-per-mm. This is a value that defines a mechanical property of the machine. It converts rotational motion of the extruder gear into linear motion of filament. E-steps can actually be calculated mathematically if you know the following values and measurements of your particular 3D printer:
- Diameter of the extruder gear
- Step angle of your extruder stepper motor
- Number of microsteps enabled in your firmware
- Gear ratio of your extruder
Let’s start by looking at the diameter of the extruder gear. This one is easy. You can easily take a pair of digital calipers and measure yours. Here is the original extruder gear from my Ender-3; as you can see, it is 10.9mm in diameter (which is what it is spec’ed as.
We do also need to know the circumference of the extruder gear. This can be calculated with the simple formula: c=π*d. In the equation, c=circumference and d=diameter. Pi, is that awesome irrational number: 3.14159…..
For the stock Ender-3 gear, the circumference is: π*10.9=34.2433
Next we take into account the step angle of your extruder stepper motor. There are two main flavors of stepper motors: 1.8° per step or 0.9° per step. On a 1.8° motor, that is 200 steps per rotation, and on a 0.9° motor it is double at 400 steps per rotation. Most consumer printers are using 1.8° motors.
The third factor is the microstepping resolution set in your firmware. Different drivers support levels of microstepping. The default for a stock Ender-3 is 16 microsteps. That means between each full step are 16 microsteps. To microstep, the driver works to hold position between full steps. On a 1.8° motor with 16 microsteps, each microstep is 0.1125° and there are 3200 microsteps per revolution. It is possible to have other levels of microstepping (if you do, you probably know because you probably compiled your own firmware). It will always be a power of two (8, 16, 32, 64, etc).
The last factor in the equation is the gear ratio of your extruder. The stock extruder on an Ender-3, and many entry level printers is a 1:1 ratio. It means that for every rotation of the motor, the drive gear moves one rotation. Some extruders, like the BMG and its clones, have a 3:1 gear ratio. This means that the motor must spin three rotations for the drive gear to spin one.
What do we do with all this information? We can use it to calculate the E-Steps value for your printer. For our equation we will use the following values:
- c = circumference of drive gear
- s = steps per revolution
- m = microsteps
- g = gear ratio
s * m E-steps = --------- * g c
Which means, for our stock Ender-3:
200 * 16 E-steps = ------------ * 1 = 93.44 34.2433
This explains why the default E-Steps value on a new Ender-3 is set at 93. Of course we all know that manufacturing tolerances on $200 3D printers are not super high, so it is possible that your extruder gear is a slightly different size, which is why you may need to calibrate your E-Steps.
Now that we understand what E-steps are and the math that defines them, let’s take a look at how to actually calibrate your machine.
Of course you can just take your calipers and measure your extruder gear and use the formula above. It works on paper, and should be pretty darn close to accurate. It just can’t account for any variances in the manufacturing tolerances. Maybe your extruder gear is slightly oval in shape. Or maybe you just want a real-world, practical, tactile way to calibrate your machine.
- Start by measuring and marking your filament 100mm from where it enters the extruder. Then measure and mark 120mm from the extruder.
- Disconnect the bowden tube from the hotend. In the case of direct drive, you may not be able to do this, so just continue pushing filament through the nozzle.
- Command the printer to extrude 100mm of filament. This can be done using the motion commands on the LCD screen or by issuing a G1 command in a terminal program.
(Note: despite the fact that we don’t want to extrude through the hotend, you still have to heat it over 180°C or the extruder motor will not move. Additionally, if you are extruding through a nozzle, you may want to heat above the normal printing temp for the material to ensure smooth flow)
- Once the extruder stops moving you will take a measurement. If the 100mm mark is still visible, measure from the entrance of the extruder to the mark. Subtract this from 100, giving you the length of filament you extruded. If the 100mm mark has gone into the extruder, measure to the 120mm mark. Subtract the number you get from 20, add that to 100 and you have your distance traveled.
- Now we just have to solve a simple algebra problem to get our E-step value:
[current Esteps]/[actual extrusion] = [new esteps]/100 (solve for [new esteps])
In other words:
([current Esteps]*100)/[actual extrusion]=[new esteps]
- Enter the new E-Step value into the printer. You can either do this using the LCD screen, or using the M92 command from a terminal program. The command would be: M92 E### where # = the new value you calculated.
- Once you have entered the new value, mark and extrude another 100mm of filament. Measure it. If you aren’t moving exactly 100mm, just run the calculation again using the new numbers. Once you are happy with the E-step value, save your settings either via the LCD or using M500 in a terminal.
Now we should have a better understanding of what E-steps are, how they are calculated, and how you can calibrate your machine. If you ever change your extruder setup, mainboard, or your firmware, or if your EEPROM gets wiped out you should re-calibrate your machine. Otherwise, your E-step value should not need to be changed.