Clarification of M566 Instantaneous Speed Change (aka Jerk) Behaviour



  • Hi,

    In the past I have always assumed the M566 behaviour acted in a certain way, but recently I've been led to believe it behaves differently.

    First, from the wiki:

    [M566] Sets the maximum allowable speed change (sometimes called 'jerk speed') of each motor when changing direction.
    […]
    If the motors were not allowed any instantaneous speed change, they would have to come to a stop at the junction between each pair of line segments. By allowing a certain amount of instantaneous speed change, printing speed can be maintained when the angle between the two line segments is small enough.
    […]

    The example from the wiki, describing the segmented perimeter of a polygon, seems to indicate that my previous belief was correct: any direction change (above a certain threshold – what is it?) has jerk applied.

    However, some users have indicated that the jerk is only applied to PURE X or Y moves (for a cartesian), indicating that only the motor movement itself is considered, and not the motion of the toolpath.

    Can we have some clarification?

    To me, it seems, that for best printing results, we would want the effector to slow down the same amount for any equivalent curve/change of direction regardless of the actual X and Y vector components. However, the way it was described to me recently, it sounds like the same change of direction would have different amounts of jerk applied depending on their orientation/rotation on the print area.

    I hope I've not added further confusion.


  • administrators

    The jerk limit is applied separately to the X and Y components. On a Cartesian printer with a moving bed, the maximum Y jerk you can get away with may be much less than the X jerk. But if the allowed jerk is large enough in both X and Y directions, it doesn't matter because the head won't slow down at all anyway.



  • Interesting, so it really is based on the motor movements, not the effector movements (on a cartesian).

    I see this as potentially problematic. While the original goal of jerk is to prevent stalling the motors, it has the side-effect of allowing consistent extrusion pressure for equivalent curves/creases on the print perimeter. If areas of the model that have the same degrees of curvature, but "rotated" to have different x/y component vectors, are printed at different speeds, they will (in theory) not be exactly consistent to each other. Some may exhibit over or under extrusion relative to the others. (assuming no pressure advance)

    Is there a way we can have an additional setting, for cartresian printers, to allow the jerk to be applied equally to any change of direction, regardless of actual X/Y components?


  • administrators

    I suggest you add that to the firmware wish list.



  • To be honest, I'll hold off until I experiment further with cartesian kinematics. It may well be that the current method allows for settings that produce perfectly acceptable results. Thanks for the feedback, though.



  • Revisiting this topic… for a delta, if you want to specify the jerk for horizontal movements only (x & y on the build plate) is it sufficient to use M566 X1200 Y1200 or do you have to have M566 X1200 Y1200 Z1200 as horizontal movement of the effector requires movement of all three carriages?

    If the latter, that's a pain for slicers that control the jerk because they would need to know whether to emit the 2 arg or 3 arg versions of M566 depending on whether the machine was a delta or not.


  • administrators

    Jerk, acceleration and speed settings are applied to the head, not the carriages. So you can use different values for Z.



  • OK, that's good to hear, thanks for the super speedy response.


Locked
 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.