-
-
Notifications
You must be signed in to change notification settings - Fork 19.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] Input Shaping + MULTISTEPPING_LIMIT cause motor noise? #25912
Comments
So your board is a Creality V4.2.2? I don't think there was a report of noisy steppers+INPUT_SHAPING on that board yet. There was a report about some underpowered (8-bit I think) boards having noisy steppers and losing steps when INPUT_SHAPING as enabled and I think it was traced to MULTISTEPPING getting too aggressive. Input Shaping is changing the stepper ISR time just enough that multistepping can cause issues on low power boards but V4.2.2 isn't considered that really. Have you tried reducing new MULTISTEPPING_LIMIT from 16 to 8? I have done that preemptively on my under powered BTT SKR Mini E3 to reduce chance of lost steps... but I also wasn't having noisy steppers. |
technically it's an Aquila board but uses the same creality v4 pinout. the Aquila is an ender 3v2 clone. I think there was also an issue having linear advance, so I would assume they are related |
what is the benefits of MULTISTEPPING_LIMIT or without OLD_ADAPTIVE_MULTISTEPPING (default setting) vs lowering MULTISTEPPING_LIMIT and enable OLD_ADAPTIVE_MULTISTEPPING? |
Multistepping feature attempts to combine multiple step requests into a single ISR to squeeze more performance out of CPU's (you get back overhead spent switching to ISR routine). Both old and new code computes how many steps to do in 1 ISR. Old is based on hard coded compile time knowledge of worst case timing and new code is based on runtime computed values. The new way should be more accurate since it's based on actual measurements. In both old and new, it's pretty easy to get a bit aggressive on combining steps into single ISR; especially on underpowered hardware. Turning on optional features such as INPUT_SHAPING+ADAPTIVE_STEP_SMOOTHING+S_SCURVE_ACCEL make it that much more aggressive at combining. Side effects of combining are losing steps and strange stepper noises. MULTISTEP_LIMIT is new config item and can put an upper limit to prevent being aggressive with 8 being a good choice on underpowered hardware regardless of new vs old. But then again, its very dependent on your config... If you disable INPUT_SHAPING then 16 might actually be best value... you want the highest but stablest value possible for your config. Is old or new logic better to use? New way is very new but I assume the best choice... but thats why old way was left around so people could try both. |
ah thank you for the very informative reply. this was very helpful! |
Would you mind testing with OLD_ADAPTIVE_MULTISTEPPING commented out and lowering the MULTISTEPPING_LIMIT and see if that also solves your issue? It would help to confirm that your steppers need the lower multi-steps vs. some unknown bug unique to the new adaptive multi stepping logic that still needs further debugging. |
A slight clarification on I could believe there might be audible noise with the new multistepping algorithm if it keeps switching the multistepping level up and then down again. If it is doing this, it's getting the maximum performance possible out of your MCU - albeit at the cost of extra noise. We are squeezing the most we can out of the old 8 bit and the slower 32 bit hardware. The existence of |
lowering MULTISTEPPING_LIMIT to 8, 4 2 or even 1 seems to not fix the issue. 1 is less noise but still the issue remaining. some investigation and setting I wouldnt say it's "fixed" by this arbitrary change, but what if the code were something like |
This is an excellent test in terms of the information it gives. It tends to confirm my suspicion that the noise is from the multi-stepping level flipping between two values. However setting I guess the question is how much of a problem is the extra noise? It would be possible to change
to something like
on around line 2200 so that multi-stepping is not decreased as readily, for example. But that leads to an extra config option and extra complexity generally. |
This issue has had no activity in the last 60 days. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed within 10 days. |
Idle because we talked about it at classicrocker883/MRiscoCProUI#27 |
Greetings from the Marlin AutoBot! Disclaimer: This is an open community project with lots of activity and limited |
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Did you test the latest
bugfix-2.1.x
code?Yes, and the problem still exists.
Bug Description
Apparently since March, when
MULTISTEPPING_LIMIT
was added and module/stepper.cpp | stepper.h amended, the stepper motors would sort of grind when moving at higher speeds, acceleration, jerk.having
#define OLD_ADAPTIVE_MULTISTEPPING 1
did fix the issue. but there is no option to enable it, it was arbitrarily added to Configuration_adv.hI am wondering if the stepper code can be improved? or is the old adaptive multistepping good enough ?
Bug Timeline
March
Expected behavior
Smooth motor movements
Actual behavior
Noisy at higher speeds
video of issue
Steps to Reproduce
Enable input_shaping
Start printing w/ high speeds,
go into a terminal and send commands to printer
Version of Marlin Firmware
bugfix-2.1.x
Printer model
Voxelab Aquila (Ender3V2)
Electronics
No response
Add-ons
No response
Bed Leveling
UBL Bilinear mesh
Your Slicer
None
Host Software
None
Don't forget to include
Configuration.h
andConfiguration_adv.h
.Additional information & file uploads
ref to issue classicrocker883/MRiscoCProUI#27
MarlinConfigs.zip
The text was updated successfully, but these errors were encountered: