Motor gets hot in velocity control mode under no load

Hi there,

I have recently wired up a NIDEC N20 BLDC motor to the odrive. The motor has 6 pole pairs and 3 hall sensors. After following the instructions shown in this page:
https://github.com/madcowswe/ODrive/blob/devel/docs/hoverboard.md

I was able to make the motor spin in velocity control mode. However, I noticed that the motor became very hot after running it for awhile - it felt like 50-60 degree C and I could smell a mild burnt smell coming from the motor. The motor was running in free air, without load. I then started a series of troubleshooting, and this is the summary:

  1. current_lim set to 0.5A (Motor is rated to 1A current)
  2. vel_setpoint set to 3600
  3. pll_vel gave 1960
  4. vel_setpoint set to 7200
  5. pll_vel gave 1978
  6. current_lim set to 1A
  7. vel_setpoint set to 3600
  8. pll_vel gave 2198
  9. vel_setpoint set to 7200
  10. pll_vel gave 4289

So apparently the motor was running at the current limit of 0.5A without load, which I would have expected the current to be much lower. I’m not sure what could have caused the motor to run at such high current.

It might be worth to know that the datasheet says the motor has a phase resistance of 1.8 Ohms and phase inductance of 6.5mH, whereas the AXIS_STATE_MOTOR_CALIBRATION measured 1.2 Ohms and 2.1mH.

I am not an expert in BLDC motors, so I’d really appreciate if anyone could explain to me what’s happening and what could cause the motor to run at the current limit under no load.

Thanks!

Edit: The supply voltage is 12V, which is the rated voltage for the motor.

Hm the ODrive is not very well optimised for such low current operation. Just to check that the current range is set correctly, what value do you have for .motor.current_control.max_allowed_current?

While the motor is spinning, can you run
start_liveplotter(lambda: [odrv0.axis0.motor.current_control.Iq_measured]) and show a screenshot? Also say what current_lim you used in the test with the plot.