--- tag: m0593 title: Input Shaping brief: Get or set Input Shaping parameters author: thinkyhead since: 2.1.2 requires: INPUT_SHAPING_[XY] group: motion codes: [ M593 ] related: [ M493 ] parameters: - tag: D optional: true description: Set the zeta/damping factor for the specified axes. If `X` and `Y` are omitted, both will be set. values: - type: float tag: zeta - tag: F optional: true description: Set the damping frequency for the specified axes. If `X` and `Y` are omitted, both will be set. values: - type: float tag: hertz - tag: X optional: true description: Flag to set the X axis value. If `X` and `Y` are omitted, both will be set. values: - type: flag - tag: Y optional: true description: Flag to set the Y axis value. If `X` and `Y` are omitted, both will be set. values: - type: flag videos: - 7VLuz3hReYw - 6zMNwiJX2CQ - 2A27N8qfgZU examples: - pre: Set the frequency for X to 18.4Hz code: M593 X F18.4 - pre: Set the frequency for X and Y to 36.2Hz code: M593 F36.2 - pre: Disable Input Shaping code: M593 F0 --- {% alert info %}This G-code pertains to Marlin's integrated ZV Input Shaper. For the Fixed-Time Motion Planner Input Shaper see [`M493`](/docs/gcode/M493.html).{% endalert %} Set the Input Shaping damping factor and/or frequency (in Hertz) for axes that support it. Use `M593` with no parameters to report the current settings. #### Input Shaper Tuning It's not always easy to attach an accelerometer to most printer boards, so Marlin doesn't provide accelerator-based tuning. If you have that information you can use it. But the easiest way to tune Input Shaping is to print a ringing tower that goes through a range of frequencies, then examine the appearance of the ringing tower to choose the best frequencies for each axis. ##### Get the Test Model Download the [Ringing Tower STL](/assets/stl/ringing_tower.stl) which you will slice and use for the print test. For a CoreXY printer you should rotate the model 45 degrees, which isolates the A and B components of the motion system. ##### Prepare the Slicer Use a slicer that provides custom G-code macros for layer change. For example you can open [Kiri:Moto](//grid.space/kiri/) or download [Prusa Slicer](//www.prusa3d.com/page/prusaslicer_424). If you use [Cura](//ultimaker.com/software/ultimaker-cura) you may need to install the Post Processing Plugin from the Cura Marketplace if it is not already installed. - In *Kiri:Moto* enable **Infill > Fill Type > Vase**. Then add the following under **Setup > Machine > Gcode Macros > Layer** to run a test range of 15Hz to 60Hz: ``` M593 F{(layer < 2 ? 0 : 15 + 45.0 * (layer - 2) / 297)} ; Hz Input Shaping Test ``` - In *Prusa Slicer* you'll enable **Spiral vase**. Then add the following to your **Printer Settings > After layer change G-code** to run a test range of 15Hz to 60Hz: ``` M593 F{(layer_num < 2 ? 0 : 15 + 45.0 * (layer_num - 2) / 297)} ; Hz Input Shaping Test ``` - In *Cura*, you'll first need to add the .py file in [this repository](//www.github.com/dsdanielko/cura-ringing-tower-script/) to your Cura "scripts" folder. Reopen Cura, enable **Spiralize Outer Contour** and set **Minimum Layer Time** to 0. Then go to **Extensions > Post Processing > Modify G-Code**. Click **Add a script** in the window that opens and use the dropdown menu to find **Input Shaping**. Make sure the **Motion planning type** dropdown is set to **M593**. The default frequency settings will let you test a range of 15Hz to 60Hz. ##### Slice and Print Slice and print the tower using 0.2mm layer height using the highest reasonable speed. When you examine the results it should be obvious where ringing is reduced the most on each axis. To get the Hz value for a given Z height, use the formula `15 + 45 * (z / 0.2 - 2) / 297`. ##### Analyze the Result Measure the height of the best looking layer, divide by the layer height, subtracting two layers. For example: - The least X ringing appears at height 20mm. So we calculate `15 + 45 * (20 / 0.2 - 2) / 297` and get a result of 29.84Hz. - Set this value with `M593 X F29.84` then save with `M500` and it will apply to all motion from now on. #### More Resources TH3D Studio has created an [Input Shaper Calculator](//www.th3dstudio.com/marlin-input-shaping-calculator/) that you can use to get the Slicer G-code you need and calculate the Hz value based on the best-looking layers.