Motor crunch troubleshooting

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).

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:

  1. 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!

  2. Make sure you cut your observer gain (FOC-General) in half - you should end up with 0.7-0.9

  3. Make sure your sensorless erpm (FOC-Hall Sensors) is 2000
    there’s also hall sensor interpolation erpm - that should be 250, not 500!

  4. 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)

  1. 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.

  1. 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.

  2. 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 (7) 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.

10 Likes

I followed the first set of steps, but got some really strange noises when accelerating after raising the zero vector frequency anywhere above 23, so i brought that back down to 21. Still got the crunch but as soon as i adjusted the current (in second set of steps), the crunch is gone. Thanks dado.

2 Likes

Raised Motor Resistance from 90 to 105
110 felt somehow mushy
Lowered Motor Inductance from 206 down to 198
Crunsh is gone now and feels great.

(Zerfo Vector Frequency didn’t change anything on the crunsh)

1 Like

Setting Motor Resistance to 105 seemed to do the trick!!! Cheers!!

Have you tried messing with the time constant? It affects the motor PIDs and how fast the motor reacts overall. On an EUC I can tweak the balance PIDs slightly higher with a lower time constant, but the motor makes a whining noise lol

Also on the boards I tested, motor crunching happens at a certain current, so you can eliminate it by lowering your current to below that. Once you’ve followed the other advice and gotten your setup to work as well as you can, drop the current down to below where the crunching happens (if it still happens). This will give you a nice and rideable max torque rather than a crunchy power loss nose dive.

Side note but in general I wanna advocate for lower max currents, I think they feel better. By lower I mean 80 or 100.

1 Like

The first few steps also helped my lil foc 3.1 with a motor vibration at low speeds. Thanks!

T-dub adjustment was what finally fixed it for me after trying everything else. Had my Little Focer at 18khz zero vector frequency but it got loud and nasty if I strayed from that, so ended up leaving it there.

I actually pursued all this not to cure motor crunch, which wasn’t really bothering me but some weird cutouts at the sensorless transition I was having when riding trails. This happened under a number of circumstances but most prominently when I would be tractoring up a hill under the sensorless transition, would start to crest the hill and speed up, as soon as I would cross the sensorless transition speed I’d get a huge current spike and the board would nose dive, then usually spin wildly for a couple seconds.

Anyways just sharing in case this it will help anyone else.

2 Likes

@surfdado have you had a good test of the Superflux yet to post your motor detection results? i’m hoping to get mine installed and tested this weekend running a 20s2p 84V set up on the lil foc3.1
thanks

Some thoughts about motor crunch I experienced with my VXwheel 1 (funwheel + CFOC2) after updating to V6 firmware.

After changing many values, I found the motor resistance to be the one that mostly affects the crunch behavior.
Having the motor resistance above 150mΩ would actually create a motor crunch at hard acceleration!
Having the motor resistance under 120mΩ would create strange nosediving/crunching effect at acceleration!
Having the motor resistance somewhere between 120 and 150 would accelerate nicely, but still have some crunch at hard braking.
Since the motor wizard did not work well for this setup, I ended up with the below values by taking surfdado’s values for same setup as a start and changing them a bit to get better results for me.
142,0 mΩ
226,65 µH
159,30 µH
23,814 mWb
0,2267
124,63
0,88
With these values a normal ride works well, while I will still try to find the solution to get the hard braking crunch away for good.

3 Likes

One more thing for people to try:
image

2 Likes

This guide was a life saver. Had nasty noise happening under hard braking that developed into wierd knocking during hard acceleration. My motor res and ki were only at 85 amd my inductance was at 230. So first i changed my observer type to ortega original which solved the accelration problem and the gnar hum during hRd braking. But now theres was a crunch under hard braking. I raised my motor resistance to 105 amd matched the KI to it than lowered my inductance to 200 and lowered the observer gain to .75. Problem completely solved but the board could use a little more tuning. Its kind of soft now but thats an easy fix.

I get crunch when braking with Superflux motor + LittleFOCer when f_zv<=27

suggesting value setting for zero vector frequency 28

What type of values are suggested when using the phub-188? (old floatwheel)
I recently got my board back and upgraded it to latest fw + float package, but am having crunch deluxe in takeoff/low speed

1 Like

good question - if you had no crunch in 5.3 then whatever you had there are the exact values you need

For saturation compensation, from my limited experience of 1 day on the new setting, changing from lambda to factor makes the board a lot more responsive on sudden high torque scenarios, which means higher bonks for me. I feel like the board bonks like it’s 2-3psi higher than what it actually is, and feels a little like how a superflux bonks. Have not yet noticed any side effects. Running 18s on HC.

Setting saturation compensation to 10% and setting the mode to “Factor” instead of “Lambda” completely fixed my crunching, thank you! This was on a stock GT motor by the way.