Problematic Relationship Between Motor Speed and Current Set Point | Hard Drive Motor


I am trying to control the motor within a Seagate Savvio 15k.2 hard drive unit using a 24V odrive 3.5. I want to turn the hard drive pallet at 7200 rpm with the odrive in the sensorless control mode. (The hard drive spins at 15k rpm in normal operation.)

I am assuming the motor kv is about 500, and has six pole pares. The odrive measures the phase resistance of the motor to be 2 ohms, and fails to measure the phase inductance. The error thrown is modulation magnitude. Decreasing the calibration current to 1 amp and the max calibration voltage to 20 v (my DC bus voltage) was not sufficient to resolve the error.

When spinning the motor in velocity control mode, I was unable to make the motor to spin faster than about 2400 rpm, regardless of the velocity set point. In an attempt to figure out the problem, I put the controller in current control mode and measured the relationship between the current set point and the rpm of the motor, to the nearest 60 rpm. It looked like this.

Above a current set point of 1.9, the motor makes a hissing sound and smells like burning.
The whole hard rive unit is supposed to draw 0.3 amps with a 12 volt power supply, and 0.8 amps with a 5 volt power supply. I measured the current supplied by my 20 v power supply with respect to the current set point. The supply current increases in a concave up manner with respect to the current set point, and is 1.3 amps with a current set point of 1.9 .

My question is this.
Which motor parameters, such as phase inductance and resistance, kv, and so on, effect the relationship between the current set point and the rpm of the motor?


Hm, how did you get the motor to operate if the inductance calibration failed? Did you supply a manual value and set the is_calibrated to True manually?

The modulation magnitude error is because you set the calibration voltage too high, you can set it to max of around 50% of your bus voltage. Because this is a low current motor, I would suggest the following settings:

motor.config.requested_current_range = 15.0 (Requires save config and reboot)
motor.config.calibration_current = 1.5
motor.config.resistance_calib_max_voltage= 8
motor.config.current_control_bandwidth = 500