I posted this on a Google group recently and thought I’d repost it on my own blog:

I have been converted to an evil and lazy extrusion calibration anarchist. I no longer believe in measuring filament diameter or how much filament is pulled in, or adjusting the filament settings when slicing. All that painstaking effort is in the hope that if it’s done carefully enough that the calculations will result in the correct extrusion rate without needing any additional tweaking. I was abducted by aliens (or at least an Australian) and brainwashed to avoid all the extra work and skip all the measurement and mathematical masturbation by just watching the extrusion rate during a print and adjusting it until it’s correct.

There are various ways to judge extrusion rate by eye depending on experience and preference. One practical one is to watch while printing solid layers. If the layer is solid with no gaps at all between the lines, flow is either perfect or too high. To make sure it’s not too high, reduce flow until slight gaps between the line appear so you know it’s too low. Then sneak up again until the gaps disappear and the layer is solid and you know you have it correct. This is a pretty effective method, since solid layers can be some of the least forgiving of incorrect flow rate and doing it this way is empirically calibrating for them.
With Marlin firmware we can adjust flow on the fly while printing. After I change filament, I watch the next object I print carefully and adjust the flow as needed while printing the interior solid layers. I can usually tune out any over/under extrusion by eye before it gets to infill layers and then it’s good until the next filament change. I don’t reflash the firmware, I just leave the setting in memory or save to eeprom. This magic is done with menu items on my Marlin panel, but can be easily done from a host like pronterface using M-codes. M92 can directly set E steps/mm, but I prefer M221 to adjust by a percentage from default. To decrease flow by 1%, send M221 S99. To return to default flow, use M221 S100. Marlin uses a command buffer, so it may take a few lines before it gets executed.
I slice all my files with the same filament settings, and I can print the same file with any filament without reslicing. I adjust the flow, temperatures and speed from my printer, not my gcode. My austrAlien abduction showed me the way to better, faster, lazier printing with great results! And all without any unfortunate sensor probing! If you get abducted too, I look forward to seeing you at the annual reunion! Bring beef snacks and a name tag!