This is a new one for me (or maybe an old problem that I

This is a new one for me (or maybe an old problem that I never really solved). I have been trying to calibrate my extruder steps. Here’s how my process went this morning

M503 reports E1022 steps/mm
Extrude 100mm, get 111.5mm
M92 E916.6 (1022 * 100 / 111.5)
Extrude 100mm, get 93mm
M92 E985.6 (916.6 * 100 / 93)
Extrude 100mm, get 115mm!

So my last extrude was with fewer steps/mm, but got more total extrusion compared to the first. My next test will be to repeatedly extrude with the same steps/mm to see if the rate is self-inconsistent, or if the steps/mm settings are being quantized in unexpected ways and systemically don’t match reality.

Things I know:

  • Drive gears are not out of round, good meshing all the way around
  • I’m driving very slow, and filament is not slipping, grinding or pulling the spool
  • Control board is iDuino MEGA (Arduino MEGA clone)
  • Shield is RAMPS 1.4, I don’t remember the stepper drivers
  • Firmware is Marlin, probably 1.4 years behind master.

I always calibrate cold. i.e.: Nozzle off, no heat to hot end, M302 to allow cold extrudes. This removes the variables of melting rate for the filament, nozzle size/possible partial clogs changing back-pressure, etc. Calibrating cold means you are ONLY Calibrating the steps per mm for the extruder.

@Mark_Rehorst
While that is mathematically true, and should be used that way, in this situation it only amounts to about 1 step difference.
I’m pretty sure that the differences are coming from other factors.

Using my desktop calculator:
(1022 * 100) / 111.5 = 916.591928
(1022 / 111.5) * 100 = 916.591928

I round either of those to 916.6. Maybe that’s incorrect and I should keep it as 916.59 or further, but I’m not dealing with .01 accumulating step error over 100mm, which would be within 0.1%. What may be interesting is that steps/mm does not quantize at arbitrary steps.

Assuming 1/16 microstepping, the 0.6 in my 916.6 comes out to 9.6 microsteps (or 0.625, assuming the firmware does not dither between 9 and 10 microsteps to average to my desired 9.6 microsteps). I don’t know if that kind of error accumulates over a step or a mm. If over a mm, it’s not a big deal, but if I get that error every step and it accumulates, well then maybe that’s something that could be significant and not necessarily err in the same direction with every steps/mm setting.

I will see if I can experiment some more with the hot end off so I can go faster and not waste filament in this very coarse adjustment.

@Christopher_Hills , thank you for your response. I think you are misunderstanding my timeline. The first step in my testing earlier today was:

expected length = 100
actual length = 111.5
old steps value = 1022

new steps value = (100/111.5) * 1022 = 916.59

So while the new steps value did get closer to 100mm extruded (coming in at 93mm), repeating the same step:

expected length = 100
actual length = 93
old steps value = 916.59

new steps value = (100/93) * 916.59 = 985.58

Extruding with that steps value gave me 115mm of extrusion, which is more than the first step which had a higher steps/mm!

I figured out my trouble! After I got my hotend off as @Carlton_Dodd suggested, I was able to repeatedly extrude/retract. I found that the extrusion length was consistent with a given steps/mm. i.e., I could extrude, retract, extrude, retract and land in the same place over and over.

Then I continued with the steps we’ve been discussing in this thread, but was still getting inconsistent results, bouncing around but never landing on something good. Then, I noticed that the first extrude after issuing a M92 command would miss full mms of extrusion! I noticed this when the retract didn’t get back to the right place.

To solve, I would issue a 1mm extrude and retract after an M92. Manually move the filament back to my marks and continue from there. Finally landed on a number that worked consistently, and just delivered me a good looking print with smooth surfaces and no “flow rate” hacks.