Nonlinear extrusion proper use and documentation
-
Since my second thread trying to discuss proper use and documentation once again degraded into people trying to troubleshoot my setups I am going to try this again.
I would like to have a thread devoted specifically to proper use. Something that could be a reference for any users and hopefully something that could be turned into useful documentation.
I'll try to outline what I mean and my thoughts with what I know but recognizing the optimal workflow and documentation might look much different if there are things I am missing.
Step 1?
We want esteps to be calibrated and this will likely be a lower value than running without Nonlinear Extrusion (NLE)
Without NLE you would generally want to tune esteps somewhere in the middle of your typical extrusion rate.It seems the current best practice way to tune this for NLE is to tune your esteps at the lowest practical extrusion rate.
Then NLE will add the multiplier for all rates above that.
This does have the unfortunate result of needing to run NLE since without it you will always be under extruding anywhere above that min rate. I would imagine a more ideal solution would use your standard Esteps as a mid point, then subtract below that and add above that. But maybe that is too complicated?Step 2?
I assume next we want to test extrusion at a range of rates.
Presumably at the rate Esteps were tuned at we should see 100% extrusion. If you ask it to extrude 100mm of filament it should extrude 100mm of filament.Most people seem to recommend what I have been calling static extrusion where the Z axis is raised and then you tell the printer to extrude a given length of filament at a given rate.
Has this been demonstrated to be accurate enough to compensate during actual printing?
Actual pressures will likely be notably higher especially for example if you are printing low layer heights and especially layer widths notably wider than your nozzle diameter.Test at a range of flow rates.
How many?
How high?
What is a good rule of thumb for max flow, max deviation, max correction?
Is that different for diffrent matierials like say hard filaments vs 95A TPU, vs 50A TPU?So now we have our extrusion tests done. I'll make up some results to use as an example. Let's say TPU because this is where NLE has the most benefit. And let's say tested up to 10mm/s just to give some nice round numbers.
Test is extruding 100mm and measuring to compare requested to extruded
So say
1mm/s 100mm
2mm/s 99.8
3mm/s 99.5
4mm/s 99
5mm/s 98.2
6mm/s 97.2
7mm/s 96
8mm/s 94.2
9mm/s 92
10mm/s 89Step 3?
Calculate M592 A and B values
Now how do we do the math? Or preferably what calculator should we use to enter these values into? Preferably an official Duet calculator known to work.Step 4?
test extrusion
My understanding is that the only way to test this is during a print move. So the test needs to include XY moves.
Is there any way we could put DWC into a testing mode where we can just use the extrude function and have it apply our M592 multiplier?
Otherwise can we come up with an official Gcode file that people can use that should give reliable results?
If we used the static test above then it seems logical to test again with the same test.
Today I have been testing with this. IDK if it's ideal but it seems to be working at least at lower speeds.
I know the faster the speeds the more we need to worry about things like acceleration.
G28
G0 X100Y0 F20000
G1 F60 x100 y100 e100 F60If we use the 10mm/s example above I imagine it should be plenty to test at 1mm/s, 5mm/s, and 10mm/s.
If it appears to be extruding 100mm at all three points it should be a pretty good curve everywhere else. I would think.
Step 5
I think it would still be ideal to have some sort of dynamic test. This does bring in a lot more variables, especially for your first few layers where you are impacted by first layer height. So you would probably want a test that prints a few mm high.
One thought might be a few rows probably at least three layer widths wide so you can look for under/over extrusion between them. You could have three or more different lines so it prints the first series of lines at your min test, the next series at midpoint, and the last series at max flow rate.
It would be nice to make it easy to change a couple variables like layer height and width to see if those impact your extrusion.Does this look like about the proper workflow?
If so can we get answers on things like the best way to do the calculations?
Or even better can Duet give us a known to work calculator that we can just enter our variables into? A plugin for DWC would be awesome.