Pressure Advance Tuning / M572
I was digging into how to do pressure advance tuning for different filaments and was about to just fix up the code to the Prusa tuner when I spotted this in the GCode for the Prusament filaments:
M572 S{if nozzle_diameter[0]==0.4}0.055{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.032{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode
So the bit that caught my eye is all the references to:
nozzle_diameter[0]
The [0] means look at the first tool. So that means the pressure advance value gets set to whatever the value is for the nozzle size in the first extruder/tool. So if I try to print with mixed nozzle sizes I'll get the wrong pressure advance values for all but the first toolhead.
Seems like this should be changed to:
nozzle_diameter[current_extruder]
RE: Pressure Advance Tuning / M572
Ugh, just adding in the M572 command isn't going to be enough. E.g. you cant load this into the GCode preview because its missing all the PRusa specific comments that contain metadata.
"The Right Thing" would be for Prusa Slicer to generate this gcode so it can be wrapped in the current filament settings and the printer's custom gcode for starting a print. Most of the inputs for the script are things that are in the slicer (machine limits, accelerations, filament temps, nozzle diameter etc.) I have no desire to spend my time writing all that in C, that's on Prusa Research to do.
For us customer, a simpler approach would be to prepare a print with Prusa Slicer and replace the inner GCode of that print with the GCode of the test pattern. Prusa Slicer emits all of the slicer settings to comments so it should be possible to parse those and use theme to configure the test pattern. A tool to do this shouldn't take too long to build.
RE: Pressure Advance Tuning / M572
How are you printing with mixed nozzle sizes?
XL-5T, MK3S MMU3 || GUIDE: How to print with multiple-nozzlesizes do read updated replies || PrusaSlicer Fork with multi-nozzlesize freedom || How Feasible is Printing PETG for PLA supports on XL very
RE: Pressure Advance Tuning / M572
How are you printing with mixed nozzle sizes?
I had not tried it. (I was mainly trying to get the pressure advance tuner working) Looks like the slicer gets mad if you set up different extruders with different nozzle diameters, specifically:
- The wipe tower isn't compatible with multiple nozzle sizes
- Supports have to be turned off or set to a single tool that isn't the first tool (this seems like a bug)
Then it will slice the file... but it wont change the extrusion width or the number of perimeters for the nozzle size 😔
To solve that you would have to set up some modifiers to change the extrusion width and number of perimeters:
So it can do it, but we probably want that wipe tower before we get serious about using this.
RE: Pressure Advance Tuning / M572
Some results! Here you can see the pressure advance pattern, but with the Prusa specific startup code as indicated by the purge string and wipe in the lower left corner:
Here is a close up:
This is PETG (Printed Solid's, very dry). I did a pass from 0.03 to 0.06 in 0.001 increments. Its looks flawless on camera, I had to use a 3.5x magnifier to see but I get 0.047 - 0.05 looked the best. The value for Prusament PETG in the slicer is 0.32.
I've done a lot of printing on a Voron 2.4 and if I don't get the PA value correct I get messy nozzles. Once its set right I get a very clean printing machine. I've been having the same problem with long single-color prints on my XL. So my suspicion is that I should be tuning this just like my klipper machines.
I would like to release this as a web tool. It understands printer profiles, max volumetric flow rates, filament overrides etc. I've tried it on a friends Prusa Mini and my XL. Preparing a test takes less than a minute.
Would people be interested in trying it out?
RE: Pressure Advance Tuning / M572
Here is the tool: https://garethky.github.io/PrusaSlicerPressureAdvanceCalibration/
The code is on github and there is a model to go with it on Printables . I'll wait a few days for feedback before announcing it exists anywhere else as I'm use I'm going to get some bug reports.
So far its been tested on a Prusa Mini, a Prusa XL and a klipper based Voron 2.4
RE: Pressure Advance Tuning / M572
I added support for .bgcode files via Prusa's library, so you no longer change to change export options to get the tool to work. One less thing to have to remember.
RE: Pressure Advance Tuning / M572
Have you looked at Ellis' PA tool that uses a 90 degree pattern instead of straight lines? I've found the straight line method to be too dependent on perfectly precise bed leveling, but Ellis' pattern eliminates this variable by using multiple layers. I also find the pattern a lot easier to read visually. https://ellis3dp.com/Pressure_Linear_Advance_Tool/
Orcaslicer has the line test, the pattern test, and the box test all available in their calibration section. I would LOVE to have something like that in PS.
RE:
I had not seen that one. I don't like the ones that require multiple layers as they take a lot longer to print. His print tuning guide is the best I've ever seen though: https://ellis3dp.com/Print-Tuning-Guide/
Visually this is pretty compelling. It looks like its just 2 layers: https://ellis3dp.com/Print-Tuning-Guide/articles/pressure_linear_advance/pattern_method.html
Ideally Prusa Slicer would integrate this. I need the latest PS stuff for the XL so OrcaSlicer/SuperSlicer are out. Waiting for features to make their way through 3 forks is really not great.
RE: Pressure Advance Tuning / M572
I opened an issue to investigate integrating that pattern: https://github.com/garethky/PrusaSlicerPressureAdvanceCalibration/issues/11
Looking through the open issues on that repo, I think I have the bulk of them already solved in my implementation.
RE: Pressure Advance Tuning / M572
I wrote a linear advance test script (Python) to generate this pattern (it can also generate a variant with corners). Download, unzip, and plug the path to it into PrusaSlicer's "Post-processing scripts" field.
RE: Pressure Advance Tuning / M572
Coming from RepRap with Pressure Advance, i was under the impression that the XL uses Linear Advance (M900), because it is Marlin. It can't be using both, can it?
RE: Pressure Advance Tuning / M572
Coming from RepRap with Pressure Advance, i was under the impression that the XL uses Linear Advance (M900), because it is Marlin. It can't be using both, can it?
They changed it after they launched the XL and MK4. With version 5 of the Buddy firmware they switched. The original XL, Mini and MK4 firmware all only understand M900. Current versions all understand M572. Had to fix a bug about this: https://github.com/garethky/PrusaSlicerPressureAdvanceCalibration/commit/bfcb9a5016866d96902bb1ee9347e3cd13c09ddd