Pressure Advance idea for arcs

  • So first post… I've seen great things with pressure advance but many turn it off because of the strangeness with small circles. Well since they get turned into a ton of small lines can we look into putting another parameter to M572 that ignores extrusion moves below a value in mm? I think that will take care of the issues with arcs. Just thinking out loud here. Love the Duet and can't wait to see what's in the future.

  • administrators

    With printing any circles, you want the X and Y velocity change to be less than the allowed jerk so that constant speed is maintained. To achieve this you can do any of the following:

    • If you have control over the number of segments in the circle, increase it (e.g. $fn parameter in OpenScad)
    • Print slower. The speed for "small perimeters" setting in slic3r is useful here.
    • Increase X and Y jerk in the M556 command

  • Hi,
    I'm interested in this post as I too am having some problems with pressure advance when doing small segments and I have turned it off until I can work out what is happening. It is great for large prints but have problems with small, fussy prints.
    I have been through all the tabs in S3D but cannot find a setting for, 'speed of small perimeters'. Can you tell me where it is?

  • administrators

    I don't think S3D has that setting. Slic3r has had it for years.

  • This is why I brought this up. I use S3D and just started using pressure advance with my Duet. I've been using Linear Advance with Marlin for some time now and it really does a great job of being able to reduce retracts and still have very good prints. With so many people with Duet's not using it due to small circles just being able to basically ignore very small movements ie. below .1-.2mm would do wonders I believe. It might not be as easy to implement as I think but I don't know.

    Edit: Also, I'll make a test tube to see if increasing the number of segments helps but I would think it would make the problem worse… I use F360 and always just use the high detail setting for making STL's which also makes very small segments for circles.

    I know people are seeing this behavior when printing the 3DBenchy's stack and where I was able to watch the phenomenon...

  • @Maglin:

    ….............................With so many people with Duet's not using it due to small circles ..........................

    I haven't seen these posts. Do you have links to all these people and posts? AFAIK, I'm the only one on these forums that has pressure advance issues with arcs and that's because I'm the only one using 5 extruders.

  • Having said what I did above, I'm personally in agreement that pressure advance should not be necessary on very small moves. I have issues with my 5 extruders which David knows about but even when using a single extruder and printing at highish speed with highish pressure advance, when doing arcs I can feel a vibration of the filament as it is being drawn through the extruder. It's not visibly noticeable but as the print head is moving smoothly during these arcs, I can't help but think that the extruder should also move smoothly.

  • administrators

    I'll look at implementing that in a future release. It's not particularly straightforward because doing it properly means applying pressure advance during the acceleration phase of the first small move, but not applying it during the deceleration phase of that move or the acceleration phase of the next move. So the step time computations will need to be aware of which phases of the move pressure advance is being applied to, and the total step count will be changed too.

  • David,
    I bow to your superior knowledge of these things but wonder why pressure advance would need to be applied to the acceleration phase of the first small move. I would have thought that because the move is small, the acceleration phase would be equally short in which case, the pressure compensation required would be insignificant? Come to that with (segmented) arcs, instantaneous speed change ("jerk") will come into play, further shortening the acceleration and deceleration phases.

    I don't know how these things work but I've just been printing a circular object of 90mm diameter which I rendered in OpenScad with $fn at 300 (unintentionally btw). Dividing the circumference by 300 gives me a segment length of less than 1mm and I honestly can't see why it would be necessary to apply pressure compensation to such small moves. But of course, without pressure compensation for individual segments there would be a cumulative effect at the end of the arc so maybe what is required is to sum all the small segments and treat them as one continuous move then apply pressure compensation at the beginning and end of the arc only. Is that what you meant?

  • administrators

    Yes, that's what I meant. But 1mm is still quite a long segment length, and if your jerk setting is not a sufficiently high proportion of the print speed to avoid acceleration and deceleration at the segment boundaries, you could use more segments.

  • administrators

    PS - to get smooth movement between segments, you need:

    $fn >= 2 * pi *print_speed/jerk_speed

    assuming $fn >> 1, and then there should be no pressure advance applied to individual segments.

  • Hi David,

    On that basis print speed of 80mm /sec, jerk speed of 600mm/min = 10mm/sec means that $fn needs to be >= 50.272 so 300 should be more than adequate. Indeed the print head movement is smooth even with pressure advance coefficient set to 0.6. However, I can definitely feel that the filament is being extruded in a jerky manner. It's hard to describe but just gently squeezing the filament between finger and thumb or resting a finger on the extruder gear, it's akin to a vibration and feels like the filament is being fed in a series of short jerky moves rather than a continuous stream. If I set the pressure advance to zero, it feels normal. It's undetectable by eye.

    This is all with a single extruder tool btw - mixing ratio of 1.0:0.00:0.00:0.00:0.00.

Log in to reply