Back to the Gcode Dictionary
M593: Configure Input Shaping
Parameters (RRF 3.2 and earlier)
- Fnnn Frequency of ringing to cancel by DAA, in Hz. Zero or negative values disable DAA.
- Lnnn Minimum acceleration allowed, default 10mm/sec^2. DAA will not be applied if it requires the average acceleration to be reduced below this value.
Parameters (RRF 3.3 and later)
- P"type" Type of input shaping to use, not case sensitive. In RRF 3.3, "type" must be "none" or "daa", and if no P parameter is given but the F parameter is given then "daa" is assumed, for compatibility with previous releases. RRF 3.4 instead supports "none", "zvd", "zvdd", "ei2", "ei3" and "custom".
- Fnnn Frequency of ringing to cancel in Hz
- Snnn (optional) Damping factor of ringing to be cancelled, default 0.1.
- Lnnn (optional) Minimum acceleration allowed, default 10mm/sec^2. Input shaping will not be applied if it requires the average acceleration to be reduced below this value.
- Hnn:nn... Amplitudes of each impulse except the last, normally below 1.0. Only used with P"custom" parameter.
- Tnn:nn Durations of each impulse except the last. Only used with P"custom" parameter.
Example (RRF 3.2 and earlier)
M593 F40.5 ; use DAA to cancel ringing at 40.5Hz
Example (RRF 3.3)
M593 P"daa" F40.5 ; use DAA to cancel ringing at 40.5Hz M593 P"none" ; disable DAA
Examples (RRF 3.4 and later)
M593 P"zvd" F40.5 ; use ZVD input shaping to cancel ringing at 40.5Hz M593 P"none" ; disable input shaping M593 P"custom" H0.4:0.7 T0.0135:0.0135 ; use custom input shaping
The purpose of input shaping is to reduce ringing (also called ghosting).
In firmware 2.02 up to 3.3 the only form of input shaping supported is Dynamic Acceleration Adjustment (DAA). By default, DAA is disabled. If it is enabled, then acceleration and deceleration rates will be adjusted per-move to reduce ringing at the specified frequency. Acceleration limits set by M201 and M204 will still be honoured when DAA is enabled, so DAA will only ever reduce acceleration. Therefore your M201 and M204 limits must be high enough so that DAA can reduce the acceleration to the optimum value. Where possible DAA reduces the acceleration or deceleration so that the time for that phase is the period of the ringing. If that is not possible because of the acceleration limits, it tries for 2 times the period of the ringing.
Input shaping is most useful to avoid exciting low-frequency ringing, for which S-curve acceleration is ineffective and may make the ringing worse. High-frequency ringing would be better countered by using S-curve acceleration; however, low-frequency ringing is more of a problem in most 3D printers.
The ringing frequencies are best measured using an accelerometer, for which support is provided in RRF 3.3 and later. Alternatively, take a print that exhibits ringing on the perimeters (for example a cube), preferably printed single-wall or external-perimeters-first. Divide the speed at which the outer perimeter was printed (in mm/sec) by the distance between adjacent ringing peaks (in mm). When measuring the distance between peaks, ignore peaks close to the corner where the ringing started (these peaks will be spaced more closely because the print head will have been accelerating in that area).
Cartesian and CoreXY printers will typically have different frequencies of ringing for the X and Y axes. In this case it is is usually best to aim to cancel the lower ringing frequency. If the frequencies are not much different, in a moving-bed Cartesian printer you can reduce the higher ringing frequency by adding mass to that axis or reducing belt tension on that axis. Note that X axis ringing causes artefacts predominantly on the Y face of the test cube, and vice versa.
High X and Y jerk values reduce the effectiveness of DAA; therefore you should set the X and Y jerk limits only as high as necessary to allow curves to be printed smoothly.