Your motor makes crunchy/cogging sounds when braking hard or accelerating?
What is it?
VESC FOC motor control uses hall sensors at low speeds (usually we set hall sensor erpm to 2000, aka 4mph) and then switches to sensorless above that speed. Sensorless relies on back EMF from the motor to estimate the motor position. This is usually very accurate/reliable but only at higher speeds, hence the hall sensors at low speeds…
The transition from hall sensors to sensorless (accelerating) or back to sensored (braking) is when we experience this crunch (at around exactly those 4mph).
In most cases crunch can only be felt when torque is very high. So it’ll feel fine most of the time, but really hard braking or accelerating will trigger it.
Why does FM not have it?
FM boards do their sensorless transition below 500erpm (below 1mph) - which is why FM boards make that creaking noise when rocking back and forth under load. This often coincides with very low torque on startup.
Possible Solutions
None of us are motor experts so this is not an exact science, but here’s the best practices for getting the best possible motor performance:
-
Make sure you got good motor detection values from the wizard!
Correct Motor/FOC settings for LFOCv3 + Hypercore - Q&A - Troubleshooting - pev.dev
If you don’t get those values, rerun the motor wizard a few more times. Worst case you can enter them by hand.
Note: The above is only for the Hypercore, Superflux values are different, so just apply the changes in terms of percentages, not absolute values - it still will give you the same benefits on Superflux and Cannoncore! -
Make sure you cut your observer gain (FOC-General) in half - you should end up with 0.7-0.9
-
Make sure your sensorless erpm (FOC-Hall Sensors) is 2000
there’s also hall sensor interpolation erpm - that should be 250, not 500! -
FOC-Advanced: Zero Vector Frequency
This defaults to 20kHz but many of us get better behavior with higher values, 24kHz works great for me, or even 30kHz seems very good too. I would advise against going too much higher because I’m worried we will starve the balance algorithm of resources because motor logic is updated too often.
40kHz is confirmed to cause problems, but some are running 35kHz without issues (but I still wouldn’t dare doing that)
Most of you will now get good motor behavior, however some will still experience motor cogging / crunch noise when braking hard.
So here’s another thing you can try - so far it has fixed motor crunching for at least several riders (and no negative side effects reported yet)
- Manually Tweak Motor Resistance:
DISCLAIMER: Back up configs before trying this! For Hypercores, we’ve found that in FOC-General, increasing “Motor Resistance” from the 85-90mOhms you got from the wizard to something between 100-110 can typically greatly improve motor crunch under load, especially hard braking crunch. 115 and up may cause negative side effects, so don’t go too high. For Superflux, raising Motor Resistance to 35mOhms or so seems to have similar benefits. Not much testing has been done with the CannonCore (Floatwheel ADV), so we can’t give any good recommendations there until some brave volunteers dive into experimenting with that a bit more.
5b) Matching KI:
Some people have reported further improvements by also adjusting the KI factor to match their now higher R value. Note that the wizard always sets KI to be the same value as R. Most people achieve great results by just upping the R value, but there’s a chance that increasing the KI value accordingly is also a good idea.
-
Still got problems with v6.0 firmware? The default observer has been changed in that version and it has been reported that for some people the results are better when switching to the original (ORTEGA) observer. Select that in FOC-Advanced and start over. Ortega Lambda-Comp is also a great option to try out.
-
Hall Sensor Extra Samples:
Default is 1 but higher values, up to 5, 6 or even 7 can be tried out. Apparently the side effects mentioned in the Help text don’t apply to our use case, but test for yourself -
Attention Hypercore Users:
Thanks to Ashton Picas’ tenacity in figuring out his persistent motor crunch issue, we now have yet another parameter that seems to play a big role in eliminating motor crunch. In the FOC “Sensorless” tab, there’s a saturation compensation setting. It defaults to 0% but apparently 10-15% can lead to a big improvement for high-torque sensorless transitions. The most effective mode to select is “Factor”, not the default “Lambda”. But please try it out and report back, this is still considered experimental.
Why does (8) only apply to Hypercore? The Hypercore motor is more likely to be pushed into saturation once your motor currents exceed 70-80 amps. Feel free to try with Superflux and CannonCore but don’t be surprised if you don’t feel much improvement.
NOTE: this last feature does reduce the power during transition, so it does reduce performance…
- Identifying hall sensor hardware issues:
See Diagnosing hall sensors -