klipper icon indicating copy to clipboard operation
klipper copied to clipboard

Add motor resonance reduction to shapers.

Open andrewmcgr opened this issue 10 months ago • 6 comments

This adds an MZV shaper with configurable parameters to each axis.

andrewmcgr avatar Apr 08 '24 11:04 andrewmcgr

Could you elaborate a little on how one would calibrate those params? I was already pretty intrigued when frix posted the initial pr to increase the amount of shaper pulses so I would love to try that out

Zeanon avatar Apr 10 '24 15:04 Zeanon

You'd, for example, use a recent version of K-ShakeTune to find your motor resonance and damping factor for each axis (they'll be the same for, e.g., corexy).

andrewmcgr avatar Apr 11 '24 06:04 andrewmcgr

Thank you for your contribution to Klipper. Unfortunately, a reviewer has not assigned themselves to this GitHub Pull Request. All Pull Requests are reviewed before merging, and a reviewer will need to volunteer. Further information is available at: https://www.klipper3d.org/CONTRIBUTING.html

There are some steps that you can take now:

  1. Perform a self-review of your Pull Request by following the steps at: https://www.klipper3d.org/CONTRIBUTING.html#what-to-expect-in-a-review If you have completed a self-review, be sure to state the results of that self-review explicitly in the Pull Request comments. A reviewer is more likely to participate if the bulk of a review has already been completed.
  2. Consider opening a topic on the Klipper Discourse server to discuss this work. The Discourse server is a good place to discuss development ideas and to engage users interested in testing. Reviewers are more likely to prioritize Pull Requests with an active community of users.
  3. Consider helping out reviewers by reviewing other Klipper Pull Requests. Taking the time to perform a careful and detailed review of others work is appreciated. Regular contributors are more likely to prioritize the contributions of other regular contributors.

Unfortunately, if a reviewer does not assign themselves to this GitHub Pull Request then it will be automatically closed. If this happens, then it is a good idea to move further discussion to the Klipper Discourse server. Reviewers can reach out on that forum to let you know if they are interested and when they are available.

Best regards, ~ Your friendly GitIssueBot

PS: I'm just an automated script, not a human being.

github-actions[bot] avatar Apr 25 '24 12:04 github-actions[bot]

This can be an interesting feature indeed. And code-wise, it is rather straightforward. However, it would be great to see some quantitative effect of this feature. Which could be, for instance, measuring the resonance frequency of the steppers on a few printers, showing the value of those frequencies and if/how these resonances affect the printing (e.g. artifacts on the model, audible noise (at accelerations/decelerations?), etc.), and what does this feature do to it. Perhaps Klipper discourse could be a great starting point for these discussions.

dmbutyugin avatar Apr 29 '24 23:04 dmbutyugin

@dmbutyugin just for reference, https://github.com/Klipper3d/klipper/pull/6460 was done in order to implement this. Andrew and I are discussing a lot together and with other Voron contributors about this on Discord. There are already a few people experimenting with it.

It's pretty hard to quantify the effects directly, because we had different results depending on the machines:

  • Using accelerometer measurements, it's pretty easy to measure the resonance frequency of the motors using this Shake&Tune macro (bottom right graph). On some machines, applying the motor resonance reduction lowered this resonance peak very much (like by ~half). On some other machines, the effect was more anecdotal. But it also helped reduce the amount of global vibration (the other graphs).
  • Apparently it's more effective at 36 or 48V than 24V. But we don't have enough feedback and data on that, so it could be a coincidence for now.
  • On all machines, the motor noise is changed to something that sounds less aggressive to the ear, smoother and in the higher spectrum. But this is not quantified, it's just a feeling and not really scientific. A few weeks ago I bought some piezoelectric microphones to attach to the motors to record their internal noise: this should give us more information than accelerometers, which have a lower cut-off frequency.

Frix-x avatar May 05 '24 17:05 Frix-x

Well, the point is, if the benefits of the change are unclear, then it should probably be in some experimental branch until the change is refined. So that's why I was asking questions how does it affect the prints. And (but this is mostly my curiosity), what are the typical resonance frequencies of the motors?

At high-level, it seems counter-intuitive that you could get better microstepping (and avoid resonances of the motor) by applying an input shaper tuned for a stepper motor frequency. This is because:

  • I'd suspect the resolution of the microstepping is insufficient to get consistent improvements for the stepping (but this depends a lot on the typical frequencies of the steppers).
  • Input shaper has any effect only during accelerations and decelerations; but during acceleration and deceleration the step timings are continuously changing, therefore it is very difficult to hit a resonance frequency of a motor with individual steps; any improvements during cruising moves are likely not real.
  • Improved achievable accelerations and reduced echo could be simply from the fact that, perhaps, a regular shaper (before convolution with another MZV) was insufficient to compensate for all the resonances, but adding this convolution with another shaper may improve the compensation on lower frequencies (than the stepper resonance frequency) too. It might be interesting to check the input smoothers available in the DangerKlipper branch (and mine advanced-features as well) and see how they perform.

dmbutyugin avatar May 05 '24 18:05 dmbutyugin