Extrusion correct at various flowrates

As you can see from this image I stole from CNC kitchen, Most extruders/hotend combos, even the perfect ones extrude relatively different at various flowrates. As you can see the actual extruded amount varied by 20% from 1mm^3/s to just 11mm^3/s !

it’d be incredible to have a feature that takes 5-10 points on the graph, asks the user to measure the extruded amount and enter their values, and have the firmware mutiply the flowrate by a multiplier depending on the calculated flowrate, I bet this would massively increase surface quality and add precision to the parts.

I encountered a worst case scenario of this when I had a print where every other layer was printed at 15mm/s due to the min layer time, the rest were printed at 40mm/s and it looked absolutely terrible, I fixed this by setting my speed to the same limit everywhere but it was an interesting showcase of this effect, I lost the pictures sadly but I can take a new one if it’s very important.

I bet this will be an important feature.

I wonder how that would interact with pressure advance. Those tests were done with pretty static extrusion pressure, which during normal printing (except vase mode) is a pretty rare occurence.

Hmm, the reason I made this post is that I genuinely do see some layer inaccuracies match up with my prusaslicer’s view of my flowrate on different layers!

tbh I gotta admit, I’m not smart enough to judge things too much. Even this idea wasn’t mine, I was talking to someone on youtube about this and he said “I wish Klipper had a feature to compensate for it” and I was like “that’s a great idea! i’m gonna open a feature request”

Could make sense especially for slippery extruders (like the ender 3 has) but since the actual back pressure is dependent on a lot of factors and changes quite quickly this would likely be pretty complicated and hard to maintain.

This curve would change based on filament, extruder spring tension, hotend temperature, ambient temperature, wear level on the extruder gear, probably even x/y position if using bowden and a lot more that don’t come to mind tight now. Then there is pressure advance which aims to keep the pressure in the nozzle constant but would also cause the backpressure to fluctuate even more.

Given there are extruders that have pretty flat extrusion curves and that don’t slip nearly as much combined with the high complexity of compensating for it it might not be worh it.

With an accurate enough filament flow sensor it might be possible to compensate for some of this but probably only larger errors.

As someone that used a stock ender extruder and tried to print a bit faster I would have liked this feature too, having to tune flow every-time I changed speeds was pretty annoying.

There is a somewhat dormant PR that implements this here: extruder: Implement non-linear extrusion by Tobba · Pull Request #4231 · Klipper3d/klipper · GitHub

Earlier discussion of the feature here: Speed-dependent extrusion: can it be accounted for? · Issue #2610 · Klipper3d/klipper · GitHub

I can only put two links in per-post, so more info in the next one.

In this CNC Kitchen blog post (Nozzle Spacer - CHT for Volcano Hotends — CNC Kitchen) Stefan has a graph comparing commanded vs. actual flow through several high-flow nozzles

In the graphs you can see the gradual (and then catastrophic) dropoff of requested vs. actual flow as mm3/s increases.

This comment by StrikeEagleCC raises an interested (and related) point that the instantaneous requested/acheived extrusion rate is perhaps also a function of the short-term average extrusion rate.

Hello All.
If I want to try this “SET_NONLINEAR_EXTRUSION”, how do I implement it in my klipper?

Klipper does not recognize the command when put in console :frowning:

Hello @Frost_DK !

This was a feature request. And obviously it is not implemented.
The github request was closed in 2021