Extruder acceleration/jerk and tuning
-
This post is going to touch on a lot of topics previously discussed. I'm slowly sorting through the extrusion tuning posts and keep running into mentions of setting the extruder acceleration/jerk high so that among other things, the extruder doesn't limit the XY motion speeds.
What are good numbers to start with/use for extruder acceleration and jerk assuming one is going to turn on and tweak nonlinear extrusion and pressure advance? How would you actually test it to determine the limits? The firmware controls the extruder based on XY motion so there's no direct manipulation of the extrusion, other than to insert M201 statements into the gcode file (would that work?). Maybe print a line at some moderate speed/acceleration (well below the mechanism's limits) at some specific acceleration for E, then do it again and again stepping up the E acceleration until the extruder motor starts skipping? Does the Duet report extruder motor skipping, or am I listening to the extruder to determine when it skips?
Has anyone put together a compendium that goes through a step by step process for tuning the extruder/printer that includes nonlinear extrusion and pressure advance? There seems to be an awful lot of interacting variables.
Right now I'm thinking the sequence would be something like this:
- PID tune hot-end and bed
- set extruder acceleration/jerk to very high values so they can't limit speed in other axes. Values?
- set extruder motor current based on motor specs/heat generated.
- Set steps/mm for extruder- what print speed, test conditions- nozzle close to bed, in air, no nozzle?
- retraction tuning
- test maximum extrusion rate that will determine maximum possible print speed (limited by extruder torque or hot-end heater), assuming the extruder will be the limiting factor in print speed...
- set printer max speed and acceleration for XY motion (so they can't exceed maximum extrusion rate)
- M593 to cancel ringing- does it affect retraction tuning?
- M592 Non-linear extrusion test/tuning
- pressure advance tuning - does it affect retraction tuning?
- retraction tuning (again?)
If you change nozzle size or heater block/heater, go back to step 4 and do it all again.
-
It's definitely a complex system and it's not immediately clear how everything interacts. I gave a fairly detailed answer here that only really starts to scratch the surface. https://forum.duet3d.com/topic/8145/where-to-start-with-a-comprehensive-extrusion-calibration/3
For me, I set the extruder speed, accel, and jerk values to be high enough so that they don't even enter the equation. Or at least, I think they don't. That way they will be limited elsewhere as needed, either by retraction speed, print speed, slicer settings, etc. I haven't noticed any skipping or missed steps, so maybe my values aren't even high enough.
M201 X6000 Y6000 Z30 E8000 ; Set maximum accelerations (mm/s^2) M203 X15000 Y15000 Z300 E15000 ; Set maximum speeds (mm/min) M204 P1000 T3000 ; Set printing and travel accelerations M566 X900 Y900 Z30 E3000 ; Set maximum instantaneous speed changes (mm/min) (Jerk)
Your XY max speed should be set to your max travel speed, that way when you use the speed factor adjustment it won't try to push your travel speeds to unattainable levels. Print speeds will be dictated by the slicer.
I also use the slicer to set accel and jerk as needed. Slic3r has basic accel control, and Cura has fine grained control over accel and jerk per move type.
I think your order of operations for tuning looks good to me. For a direct drive setup the retraction tuning likely would only need to be done after pressure advance. And pressure advance is likely to be fairly low so you wouldn't need to reduce retraction much. Much different in a long bowden tube system.
I don't think M593 DAA would have any effect on retraction since it's only varying acceleration.
I've never been able to get good results from non-linear extrusion. I think if you're staying within the melt limit of the hot end and your print speeds are fairly consistent I don't think it really helps much, but others have had other results.
-
As @Phaedrux says, the max speed should be set for the maximum travel speed (e.g. I use 350mm/sec for non-print moves but usually print at around 90mm/sec). Personally, I calculated the maximum attainable speed based on the maximum acceleration that the motors will give me for the mass and bed size and set that in config.g. So it's nice and high and won't limit what I do with my slicer.
You could add a step between 7 and 8 - set maximum accelerations for moves rather than axes - see M204 https://duet3d.dozuki.com/Wiki/GCode#Section_M204_Set_printing_and_travel_accelerations. This can actually be useful on a per-print basis rather than being in config.g though.
-
@deckingman said in Extruder acceleration/jerk and tuning:
As @Phaedrux says, the max speed should be set for the maximum travel speed (e.g. I use 350mm/sec for non-print moves but usually print at around 90mm/sec). Personally, I calculated the maximum attainable speed based on the maximum acceleration that the motors will give me for the mass and bed size and set that in config.g. So it's nice and high and won't limit what I do with my slicer.
You could add a step between 7 and 8 - set maximum accelerations for moves rather than axes - see M204 https://duet3d.dozuki.com/Wiki/GCode#Section_M204_Set_printing_and_travel_accelerations. This can actually be useful on a per-print basis rather than being in config.g though.
Sorry to dig up an old thread @deckingman but I'm hoping to keep this all in one thread so if someone finds it searching for the same reason I did, this info will be here too!
@deckingman, how did you calculate the "maximum acceleration that the motors will give me for the mass and bed size"?
I'm just now diving into the black arts of tuning and I have no idea how to tune acceleration, feedrate (speed?) and jerk.
The EMF calculator says that I'll start losing torque on my X/Y axis around 254.8mm/s so I was going to set M203 X and Y to 250mm/s (max speed) and then M204 T to 250mm/s (max travel speed) as you suggested (if I understood you correctly on this.) I just have no idea how to figure out max acceleration.
-
@ringo1508 said in Extruder acceleration/jerk and tuning:
@deckingman, how did you calculate the "maximum acceleration that the motors will give me for the mass and bed size"?
It's a long, long time since I did the calculations but I used a spread sheet to do the calcs. This was later updated and improved upon by user @wilriker and he posted it online somewhere. Sorry but I can't off hand find a link. Maybe he'll see this post and jump in or if not, try sending him a PM.
Basically it comes down to Force = Mass X acceleration so if you knowe the mass and the force, you can calculate the acceleration..............................
....................As I'm in a generous mood, I've just dug out my old spreads sheet which went something like this:
Quoted holding torque = 59N.cm at max current.
Assuming 85% max current is used then torque becomes 50.15 N.cm
Take 70% fudge factor for loss due to micro stepping gives 35.61 N.cm
Use 50% fudge factor for loss at speed gives 17.8N.cm
Pulley diameter = 12mm, so radius =6mm (0.6cm)
So available force = 29.7 N
X carriage mass at that time was 1.67Kgs
So acceleration becomes 29.7 / 1.67 = 1.77m/sec^2 or 17,767 mm/s^2.
But assume only 10% of this for a single micro step then becomes 1,777 mm/s^2As I said, there were lots of fudge factors in the calculation and some things missing but IIRC the result was a conservative estimate. @wilriker did a better job of the calculations than I managed.
Once you know the maximum accelerations, then the maximum attainable speed (assuming an initial velocity of 0) can be calculated from sqrt(2 x acceleration x length\2). The length would be the diagonal across a rectangular bed or the diameter of a circular bed.
HTH
-
@deckingman awesome!! Thank you so much.
-
For completeness here's the link to my online Maximum Acceleration Calculator.
-
@Ringo1508 I told you @wilriker would likely step in.
@wilriker Thanks man (uel).
Edit. Manuel - you should put a link yo that in the Wiki (if you haven't already).
-
@deckingman said in Extruder acceleration/jerk and tuning:
@wilriker Thanks man (uel).
If you summon me I come.
-
@wilriker said in Extruder acceleration/jerk and tuning:
@deckingman said in Extruder acceleration/jerk and tuning:
@wilriker Thanks man (uel).
If you summon me I come.
I must stop polishing that old lamp..........
-
@deckingman said in Extruder acceleration/jerk and tuning:
I must stop polishing that old lamp..........
I put a link to the calculator at the wiki entry for M201 - though I must admit that it feels a bit strange to "promote" my own tools in the official GCode documentation.
-
@wilriker The Wiki is there for the benefit of the entire community. You have made your tool avaible, also for the benefit of the entire community. Therefore it is right and proper that there should be a link to your tool in the Wiki.
-
@mrehorstdmd said in Extruder acceleration/jerk and tuning:
- M593 to cancel ringing- does it affect retraction tuning?
No, it doesn't.
The M566 jerk setting affects how well M593 works. High jerk settings make M593 less effective, or totally ineffective.
-
Not mentioned fine tuning of extrusion temp in that original list. It would seem logical to go for linear/non linear extrusion correction checks as soon as your happy with extrusion temp and e-steps/mm.