M900 Vs M572
Hi,
Im looking for some info surround the use of M900 Vs M572.
I am a bit confused about the both of these since my assumption was linear advance was more or less the same as klippers pressure advance feature. I am no expert in understanding the code so I have hit a wall with trying to find out why there is now 2 implementations of this.
In prusa slicer generic PLA filament settings along with many others for PrusaXLIS it appears that M900 is being called to set linear advance then below is an if statement for input shaper FW M572 setting what prusa are now calling pressure advance.
M900 K{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode {if printer_notes=~/.*(MK4IS|XLIS).*/} M572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode {endif}
I suppose i have x questions to try and gain some insight into whats actually happening here
1. is M572's "S" value the same thing as M900's "K" value? if not then what is M572 doing differently to M900? (I understand that M572 will eventually support setting PA values specific to each tool but that is labeled as TODO in the FW)
2. my assumption is M900 is there to support people running older FW and going forward we should be using M572? is this correct? if so and if the values are different then how are we to tune for this change
3. in the firmware there is a toggle EXTRA_LIN_ADVANCE_K M900.cpp What exactly is this doing? it seems there is a relationship between M900 and M572 but i cant find anything on what that relationship is. A change of this calibre seems like it should come with some sort of explanation.
I greatly appreciate any help on this.
RE: M900 Vs M572
They're not the same. See https://3dprinting.stackexchange.com/questions/18681/what-is-the-difference-between-linear-advance-and-pressure-advance for an explanation. How the XL or Mk4 handles it, I don't know, had neither time nor desire to go through the source code.
Formerly known on this forum as @fuchsr -- until all hell broke loose with the forum software...
RE: M900 Vs M572
Thanks for the reply,
I did come across this and it would explain the differences but thats from the point of view that marlin uses LA and klipper uses PA but it seems odd that buddy firmware has an implementation of both now. if you tune for example LA then any PA value is redundant and if you tune PA any LA is redundant. my guess is that the intention is to use PA going forward but theres nothing to say this is the case and it still doesnt answer how they are implementing both together.
I guess what im trying to get to the bottom of is; Do I set M900 K0 and then work from there on a PA value or will a change in LA be ignored since a PA value has been defined. does the PA value overwrite the LA value.
RE: M900 Vs M572
Hello @Cian-w,
I was looking at the same topic. I realized that now on MK4S, PRUSA uses only M572 and any M900 reference has been removed. M900 was used on the old MK3S Fw but not any more on the Buddy.
The source code on the M900 command on the buddy board, does just few diagnostic value check, sends commands to the diagnostic serial, but at the end, it just calls directly the M572 (internal entry) command parsing the received parameters. So, on Buddy M900 = M572
- If M900 was LINEAR Advance, and M572 is PRESSURE advance, it seems a nonsense that M900 call internally M572 with the same numbers. 🤔
- Linear Advance and Pressure advance are different techniques (the first play around with the acceleration and speed, the second plays around only changing the pressure of the filament in the nozzle through the E motor, not altering speed or acceleration), so are the parameters really interchangeable ?
- Is the PRUSA Pressure advance a real pressure advance as in Klipper ?
The Klipper manual advices the following:
Once pressure advance is tuned in Klipper, it may still be useful to configure a small retract value in the slicer (e.g., 0.75mm) and to utilize the slicer's "wipe on retract option" if available. These slicer settings may help counteract ooze caused by filament cohesion (filament pulled out of the nozzle due to the stickiness of the plastic). It is recommended to disable the slicer's "z-lift on retract" option.
but in PrusaSlicer, on the MK4S profile, you can see that "z-lift" is enabled (it raises Z of 1.5mm), and the "wipe on retract" is disabled.
This is against the Klipper logic, so I would be not surprised if M572 is another PRUSA way to do things to compensate artifacts that has nothing to do with Klipper.
May be they are now just in a compatibility transition phase where they are just changing the M900 gcode to the new M572 gcode, and it has nothing to do with Klipper Pressure Advance, but it is just like a PRUSA Linear Advance 2.0. 😉
So, I am currently trying to find the correct values for M572, since the quality of the MK4S is not satisfying me 😑 especially on the corners.
Regards