Modification of Pressure Advance for high speed Bowden printers

Yes, I have also had an experience that different pressure advance values are optimal at different velocities, though on direct drive extruders. I have a PA test in one of my branches that makes transitions between different velocities


so that a user can see which PA values are optimal. And more often than not, I get different optimal PA values at different velocity transitions.

So, I’ve also implemented a non-linear PA calculation by factoring out the PA velocity term calculation, so that then this velocity can be passed to a function that calculates a non-linear PA values. The non-linear PA models I’ve added are not particularly scientific, they just give a smooth transition between different alpha1 and alpha2 coefficients with PA(velocity==0) == alpha1 and PA(velocity → infinity) == alpha2 (the actual parameters to configure the PA models are slightly different though). You can give it a try if you want to. In fact, one can easily define their own non-linear PA model, which should be rather straightforward using the sample code in Python and C (of course, the number of parameters for PA model can be increased as one sees fit).

A couple of other thoughts:

  • I don’t have a strong evidence, but I suspect that the fact that you see PA change with acceleration may mean that you have too high smooth_time parameter for pressure advance. By default, it is 0.04 seconds, which is too generous, in my opinion, at least for typical direct drive extruders nowadays. More appropriate values are within 0.02 - 0.01, in my experience. Reducing that parameter increases the stress on extruder, but at the same time, in my experience, the PA value initially decreases with reducing the smooth_time. So, say, with smooth_time = 0.04 you may get PA = 0.05, and with smooth_time = 0.02 you’d get PA = 0.03. The moment PA stops decreasing may indicate a good optimal value for smooth_time. Separately, one could use smooth_time parameter to achieve better synchronization of PA with input shaping on vanilla Klipper - basically, by setting it equal to the input shaper largest duration, or something like an average of the durations of the two, but that value would still typically be within 0.01 - 0.03 seconds. That said, reducing smooth_time on a bowden extruder may be less than ideal, because the extruder is already under a lot of strain with PA enabled, and that will push it even further. Still, it is worth trying to reduce it just to either confirm this or that acceleration indeed has an effect on PA, even if that means reducing maximum accelerations (which is something that one would likely have to do with bowden extruders anyways if they wish to achieve high accuracy of the filament flow control).
  • I find that plateau on the PA distance vs speed chart surprising (if I read the chart correctly, of course). If it were true, it would mean that there is a range of velocities where PA control is not necessary. I think it contradicts the actual experiences. However, if that’s true, then you, arguably, could print in that velocity range without enabling PA, by just tuning retractions instead.
2 Likes