I have an old Prusa i2 that, like an old car, has been getting some major part replacements lately after many many hours of service. Recently both the extruder and the extruder motor died. The extruder died of brass fill filament sintering to the inside of the nozzle (always flush your extruder of exotic filaments). The motor died at the wires of constant flexing. Regardless, I replaced the motors and found myself with an issue; the new motor and hotend (junk motor from the junk bin, and an E3D v6, which is fantastic) worked way better and was pushing out too much filament.
The hotend, driver gear, extruder mechanics, back pressure, motor, and plastic type all work together to set how much plastic you can push through the nozzle at once. Even the speed at which the plastic is going through the nozzle can change how much friction that plastic experiences. Most of these effects are somewhat negligible. The printer does, however, have a sort of baseline steps per mm of plastic you can set.
The goal is to have a steps per mm that is exactly matched to how much plastic the printer pushes out. If you say 10mm, 10mm of filament should be eaten by the extruder. This setting is the “steps per mm” in the firmware configuration. This number should be close to perfect. Once it is, you can tune it by setting the “extrusion multiplier” setting in most slicers when you switch materials, or have environmental differences to compensate for.
The problem comes in measuring the filament that is extruded. Filament comes off a spool and is pulled through an imprecisely held nozzle in an imprecisely made extruder assembly. On top of all that, the filament twists and curves. This makes it difficult to hold against a ruler or caliper and get a trustworthy measurement.
I have come up with a little measuring device you can make with some brass tubing, sandpaper, a saw (or pipe cutter), a pencil torch, solder, and some calipers. To start with, find two pieces of tubing. The first’s ID must fit closely with the filament size you use. The second tube must allow the inside tubing to slide inside of it closely. A close fit is essential.
Building a Filament Calibration Tool
Cut a 75mm and 25mm section from the small tube. Cut a 75mm section from the large tube. I recommend cutting a larger section than needed and filing/sanding down to get the exact measurements. A lot of precision isn’t necessary for this tool to work, but it’s satisfying to practice your 19th century fitting skills to get precision out of low tech tools.
Next braze the 25mm section of the small tube and the 75mm section of the large tube. (If you don’t have a pencil torch or aggressive soldering iron, super glue will work just fine for this part.) I used the other small tube and some kapton tape to hold the little tube in place for brazing. This won’t take a lot of solder to do, if you over do it you may accidentally braze the whole assembly together.
After the brazing is complete, hit the assembly with some sandpaper and Scotch-Brite to polish it up and bring it into final tolerance. For me I wanted it to be 100mm long.
Now slide the 75mm small tube in the combined 75mm and 25mm tube. The device is complete. I have a model of the measuring tool on Fusion 360.
Measuring the Steps of the Filament
Our tool is going to make it simple to use a digital caliper to measure the exact length of filament our extruder is using. That’s because measuring the metal tubing from the end of the large tube to the end of the small one is perfect for calipers while measuring a flexible plastic strand is not.
To measure the steps per mm of the filament break off a half meter and heat the printer’s extruder up. Make sure this is the filament you will be using most. For me it is the blue PLA from UltiMachine. Next, slide the tool on the filament until the small end touches the part where the filament enters the extruder assembly.
Extend the tool an arbitrary distance that’s more than 10mm. Mark the filament carefully with a marker. Then make sure the tool is firmly against the extruder and just touching the marked line. Hold the tool at the sliding joint and take it off the filament. Do not let the length of the tool change. Measure the tool’s length with a caliper and press zero on your caliper.
Next, slide the tool back onto the filament and extrude 10-20mm of filament. Once again, slide the large tube up to the line you marked previously and then (holding the joint secure) pull it off the filament, and measure the tool again. The negative length displayed on your calipers is the length extruded through the nozzle.
Once you have this value we can move to the next step, which is adjusting the steps per mm in your printer firmware.
Adjust the Steps per Millimeter Based on This Measurement
Open up your firmware, find the section where you set your steps per mm and write it down. Take the length of filament you expected to be dispensed and divide it by the actual filament extruded (the number on your caliper). Multiply this by the steps per mm setting you wrote down. This gives you your new steps per mm. Replace the old steps per mm with the newly calculated one and upload the firmware.
In my case I asked the printer to extrude 10mm of filament but using my new tool I measured 13.53mm actually extruded. My printer firmware has a steps per mm setting of 285. Here is the equation I used:
From this I know that I have indeed been over-extruding (by about 26%!). My new extruder step setting needs to be 211 steps.
Just to be sure, repeat the measurement covered in the previous steps and see if you get 10mm when you ask for 10mm. I had to repeat the process one more time to make up for, presumably, not keeping the tool from sliding before measuring it, but in the end I got a nearly perfect 1:1 ratio.
So we know that despite careful measurement, filament extrusion varies based on many factors, and you can ‘sorta’ tune this by eye. Why go through all the trouble of making this tool and getting it super exact? When it comes to tuning any machine, you want to eliminate as many unknowns as possible and then tune the remaining. The best unknowns are the ones you can measure. For a printer the first place to start is the mechanics. I make sure everything is oiled and tight. Then I use a dial indicator to make sure my steps per mm are exact, my bed is level, and that I’m not losing steps (by doing the same move back and forth 10 or 20 times and then seeing if the position on the indicator is the same). Next I check that the reported temperature of my hotend is the one that is actually there. I use cheap NIST traceable thermocouple thermometer for this.
Now, I can add the steps per mm of the extruder. Previously one would vaguely calculate the expected steps per mm based on the gear and stepper, then tune from there. Or one would hold a ruler up to the filament and try that way. Now that I have it set exactly, I KNOW that this value is correct and I don’t have to change it. I am now free to tune the other values in my slicer and get a better print.
In this case, knowing that my steps per mm was exact led me to discover that the extrusion width I had set in my slicer, simplify3d, was off by .08 and that my new E3D nozzle produced a more exact extrusion width than I expected. Also, embarrassingly, that my x-axis pulley was broken. Once I adjusted for that and fixed the pulley; my prints look great!
What do you think? Was there an easier way to get this measurement without making a tool? I’d love to hear about it in the comment section!