Phase resistance out of range for 100kV 12V motor


#1

Hi,

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
Stephan


#2

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?

Edit:
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

#3

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.


#4

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.


#5

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.


#6

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.


#7

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: STANDBY

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:

BUT: still getting ERROR_PHASE_INDUCTANCE_OUT_OF_RANGE


#8

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.


Phase resistance out of range
#9

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?


#10

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