Phase resistance out of range for 100kV 12V motor



iam trying to use the ODrive with a high torque Motor Roxxy BL Outrunner C50-55-45 (100KV) and already followed your suggestions as mentioned here but i am still unable to control the motor as i always get the ERROR_PHASE_RESISTANCE_OUT_OF_RANGE.

Via python i read a measured phase resistance of 4.0
What i measured by myself is a resistance of 0.6Ohm between two phases.
Currently i supply the oDrive with 12V and current limited to 3A.

Edit: I tried with MOTOR_TYPE_GIMBAL but then the measured resistance is 0.0 but the error is No-Error
Edit: The motor has a nominal current of 16A.

Any help would be appreciated, thanks


Hi, yes indeed you need to make some changes. However the changes you need to make are slightly different now than they were before.
Specifically, I would suggest you run everything default, except that you change .resistance_calib_max_voltage to 6.0f.

Let me know if that works for you?

Also, since your motor has such a small current range, compared to the 100 or so A that the ODrive is designed for, you may want to increase the current amplifier gains to sense the smaller range. You can do this by setting the gains to 80 V/V in low_level.c:

local_regs->Ctrl_Reg_2.GAIN = DRV8301_ShuntAmpGain_80VpV


thanks for your fast response!

Now the motor is turning constantly at a slow speed, it states a phase_resistance of 1.0 but still errorcode 3.

I have .encoder.use_index = true but that should be ok, as i have an index. The pulses from the encoder are looking good, except for the index that is very noisy. Iam using an AMT103.
Edit: Sorry, i was on autorange, the z-pulse is fine also.


After some more testing the phase resistance reported now is 0.6 but the motor never leaves the initialization phase it just keeps turning slowly and shows error 3.


Ok good that you got the phase resistant measurement working. If the motor keeps turning slowly, it means it can’t find the index pulse. You can try to set .encoder.use_index = false. If that works, you should investigate if the encoder is plugged in correctly, the right motor channel, etc.


after resetting to your current master branch and applying only the change .resistance_calib_max_voltage = 6.0f and the DRV8301_ShuntAmpGain_80VpV, the phase resistance still reports correct but the motor now does not turn anymore and still reports error 3.

I triplechecked the connections to the encoder and watched the signals on my oszi while connected to the odrive and this seems to be ok.

It does not make a difference to switch between .encoder.use_index = false and .encoder.use_index = true.


ok, this is strange: i altered only motor0 parameters until now but when i also change motor1.resistance_calib_max_voltage = 6.0f, very different sounds occur but the motor does not rotate and now the error number is 6, ERROR_PHASE_INDUCTANCE_OUT_OF_RANGE and the phase resistance is slightly different with 0.588 instead of 0.6

Do the channels affect each other?


Edit: ok, apparently it is to late in the evening…after putting the cables of the motor from channel 1 to channel 0, everything makes sense again :slight_smile:



sorry for posting so much…
i have a power supply that clamps at 3A and i now changed the .calibration_current = 3.0f.
The initialization passes now, errorcode is no error but thereafter the motor enters heavy vibrations.


Okay yes please do not saturate the power supply, it gives the drive a lot of problems. 3A is a little low for most motor applications. You can get a very cheap ATX computer power supply that usually has a fair bit of current on 12V.

Heavy vibration usually means too high gains. You have quite low kv motor, so try setting .vel_gain to 10x smaller than the default value. What encoder are you using?


just applied your tuning suggestions from your github readme and i can say its working, i ended up with a velocity gain of about 0.0002.
The tiny power supply is only for testing, later iam going to spend the drive a high power battery as it should run a mobile one axis robot in current control mode.

Thanks a lot for your great product and support!

Limiting velocity in CURRENT_CONTROL_MODE