I am creating a servo for a robotics project using a 360KV 7-pole 5010 brushless motor with a diametrically-magnetized ring magnet screwed onto the shaft. I’m controlling it with an Odrive Micro with the latest firmware, using the onboard encoder for feedback. Max current is set to 7 amps, and 14V is my input voltage.
Everything seems to be configured correctly, and the motor performs well in velocity and position mode, and continues to work even when adding resistance. When I switch it into torque mode, however, if left long enough running with resistance, the motor seems to lose commutation. Current measurement spikes to max, yet no motion. Then, when I return to velocity and position modes, they fail to drive the motor. All of this seems to indicate loss of commutation. However, this should be impossible, as the magnet is fixed to the motor shaft, which itself is rigidly affixed to the rotor of the brushless motor. There are no errors either - I’ve checked.
Rebooting the motor controller (i.e. removing power entirely) does not fix it. I can however fix the issue by recalibrating the motor rotation, but it comes back if I do that torque experiment again. Any help appreciated. Thank you!
This is super super interesting! I agree with your take that this shouldn’t be happening if the magnet is fixed, however the symptoms you’re describing (incl. recalibrating fixing the issue) are textbook for magnet issues. There’s a few things I’m wondering:
- You say ring magnet – these can have some weird magnetic field properties, and take careful mounting. Are you using the Micro off-axis, with a set/characterized off_axis_k? Or is it on-axis but above the ring magnet? Can you share the magnet’s grade (e.g. N35, N45, N45SH, etc), dimensions, and the distance to the Micro? One theory is that the motor’s heating up and partially demagnetizing the magnet, which could throw things off if the field strength is already marginal (you can try running
onboard_encoder0.get_field_strength()).
- How is the magnet screwed onto the shaft? Is it bonded to a screw thread, or is there a clamp? Is there any chance that it’s moving a bit with vibration? It only needs to rotate about 10° to totally throw off calibration on a 7 pole pair motor.
- What sort of material is the Micro mounted with? If it’s thermoplastic/3D printed, I’m wondering if there’s a bit of creep/melting after running the motor at higher currents for a while.
Please feel free to send a few pictures, if that’s easy/possible! Looking forward to digging into this more.