buzzing whenever motor is enabled (ODrive S1 + M8325s motor kit)

Hi,

I’m using the ODrive S1 and M8325s Motor Kit and I get a constant audible buzzing whenever the motor is enabled, even with zero command.

The buzzing appears every time the axis is enabled, regardless of whether the motor is spinning or set to torque control with 0 torque. It disappears immediately when the axis is set to true IDLE.

I’m using the onboard magnetic encoder.
Measured field strength is ~0.102.
I ran harmonic calibration, but it had no effect.

I already tried:

lowering current_control_bandwidth

lowering encoder bandwidth → no audible change

I also tried anticogging calibration, but it fails with a MISSING_ESTIMATE error.

When inspecting the raw encoder signal (motor at rest and disabled), I see some noise (attached plot). I’m not sure if this level of noise is considered normal.

I don’t think this is a low-speed instability issue, since the buzzing persists even at higher rotational speeds.

Is there any supported way to reduce or eliminate this buzzing?

Thanks

1 Like

Hi! This is primarily noise from the current sensing, causing audible noise via magnetostriction in the motor itself. This is particularly audible in larger outrunners like those – the rotor geometry causes it to almost act as a speaker. We’re working on a software update to reduce the current controller noise, which should greatly quiet motors like those. No specific timeline yet, but should be ready as an experimental feature in the next few months. That being said, outrunners (especially open construction ones like those) will always be intrinsically a bit loud under speed – happy to make a recommendation if you need a quieter solution!

And to answer your other questions:

I also tried anticogging calibration, but it fails with a MISSING_ESTIMATE error.

This is typically due to not setting up a proper position reference frame – since you’re using the onboard encoder, you’ll likely want the absolute encoder reference frame.

I see some noise (attached plot). I’m not sure if this level of noise is considered normal.

Yeah, this level of noise is pretty normal. Magnetic encoders are intrinsically a bit noisy – the one we use onboard the S1 (MA702) has about 0.03° of RMS noise, eyeballing that plot you’re seeing exactly that. The GUI also samples a lot slower than the ODrive’s onboard loops, so there’s a good bit of aliasing. There’s also filtering (the encoder estimator) between the encoder’s raw value and the actual ODrive’s internal position count (axis0.pos_estimate).

Hi @solomondg,
Thanks for the explanation, good to know this is expected behavior. I was worried I was doing something wrong. It still feels a bit counter-intuitive to me that in torque mode with 0 torque the motor is still buzzing.

I set up the absolute encoder reference frame and ran anticogging (no noticeable change in noise). I’ll live with it for now and keep an eye out for the upcoming current controller update
thanks again!

Hi @solomondg,

I have the exact same motor setting and problem with @mishael_kraus. I’m satisfied with the and specs and performance of this motor, but the noise is a dealbreaker for my purpose.

I’d appreciate it if you could share some metrics of how much quieter it would potentially be with the upcoming software update. It’d be also great if I can try the feature asap, because this project has short turnaround…

In the meantime, could you please give me some recommendation for substitute motors? It’s a low rpm, precision torque control application. Would I have the same level of control with BotWheels?

Thank you!!

Hi! Sorry to hear the noise is a dealbreaker for you. I don’t have any specific metrics on the performance with the upcoming software update, but it should be night and day.

Regarding alternate motors – how much torque do you need? And at what supply voltage? How precise does the positioning need to be? And any size/weight/packaging constraints?

Regarding alternative motor - Looking at around 5Nm torque.
Currently using 24v power supply, but we can easily change that.
I’m going to design around the motor so there’s little constraint in size.
Positioning precision I’m not too sure, but I’m very happy with the Odrive S1 onboard Encoder.
Botwheel seems like a good option only if I can disassemble it or somehow face-mount it.
Oh also backdrivability is very important - that’s why I’m not considering anything with gearboxes.

By the way, other than the noise I love S1 + M8235s kit - it’s very well built, sturdy, great documentation with CAD files, APIs and everything. Really looking forward to that update!