Different phase_inductance values for two identical motors

Hi there!

I have two identical sensorless motors connected to Odrive 3.6

With identical settings, axis1 behaves abnormally when trying to control RPM via odrv0.axis 1.controller.input_vel = . The motor makes a hum, twitches and doesn`t rotate. I swapped the motors - both behave the same abnormally on axis1. I noticed that odrv0.axis0.motor and odrv0.axis1.motor show different phase_inductance values.
When connected to axis0, both motors are perfectly controlled.
What could this be related to? Help me figure it out, please.

In [8]: odrv0.axis0.motor
Out[8]:
DC_calib_phB: -1.2767964601516724 (float)
DC_calib_phC: -0.7720882296562195 (float)
armed_state: 0 (int32)
config:
acim_autoflux_attack_gain: 10.0 (float)
acim_autoflux_decay_gain: 1.0 (float)
acim_autoflux_enable: False (bool)
acim_autoflux_min_Id: 10.0 (float)
acim_gain_min_flux: 10.0 (float)
acim_slip_velocity: 14.706000328063965 (float)
calibration_current: 2.0 (float)
current_control_bandwidth: 100.0 (float)
current_lim: 10.0 (float)
current_lim_margin: 8.0 (float)
direction: 1 (int32)
inverter_temp_limit_lower: 100.0 (float)
inverter_temp_limit_upper: 120.0 (float)
motor_type: 0 (int32)
phase_inductance: 9.781593689695e-05 (float)
phase_resistance: 0.202789768576622 (float)
pole_pairs: 8 (int32)
pre_calibrated: True (bool)
requested_current_range: 25.0 (float)
resistance_calib_max_voltage: 4.0 (float)
torque_constant: 0.041349999606609344 (float)
torque_lim: inf (float)
current_control:
I_measured_report_filter_k: 1.0 (float)
Ibus: 0.7422491908073425 (float)
Id_measured: 0.2986033856868744 (float)
Id_setpoint: 0.0 (float)
Iq_measured: 1.2363317012786865 (float)
Iq_setpoint: -10.0 (float)
acim_rotor_flux: 0.0 (float)
async_phase_offset: 0.0 (float)
async_phase_vel: 0.0 (float)
final_v_alpha: 8.670488357543945 (float)
final_v_beta: 4.380721569061279 (float)
i_gain: 20.278976440429688 (float)
max_allowed_current: 30.375 (float)
overcurrent_trip_level: 33.75 (float)
p_gain: 0.009781593456864357 (float)
v_current_control_integral_d: -0.06251104176044464 (float)
v_current_control_integral_q: 9.7957124710083 (float)
current_meas_phB: -0.15194129943847656 (float)
current_meas_phC: -0.13232266902923584 (float)
effective_current_lim: 10.0 (float)
error: 16 (int32)
gate_driver:
drv_fault: 0 (int32)
is_calibrated: True (bool)
phase_current_rev_gain: 0.012500000186264515 (float)
timing_log:
adc_cb_dc: 12846 (uint16)
adc_cb_i: 2578 (uint16)
enc_calib: 39017 (uint16)
foc_current: 9090 (uint16)
foc_voltage: 40035 (uint16)
general: 12527 (uint16)
idx_search: 13120 (uint16)
meas_l: 54220 (uint16)
meas_r: 59956 (uint16)
sample_now: 25118 (uint16)
spi_end: 23754 (uint16)
spi_start: 9864 (uint16)

In [7]: odrv0.axis1.motor
Out[7]:
DC_calib_phB: -1.2352558374404907 (float)
DC_calib_phC: -1.3760173320770264 (float)
armed_state: 0 (int32)
config:
acim_autoflux_attack_gain: 10.0 (float)
acim_autoflux_decay_gain: 1.0 (float)
acim_autoflux_enable: False (bool)
acim_autoflux_min_Id: 10.0 (float)
acim_gain_min_flux: 10.0 (float)
acim_slip_velocity: 14.706000328063965 (float)
calibration_current: 2.0 (float)
current_control_bandwidth: 100.0 (float)
current_lim: 10.0 (float)
current_lim_margin: 8.0 (float)
direction: 1 (int32)
inverter_temp_limit_lower: 100.0 (float)
inverter_temp_limit_upper: 120.0 (float)
motor_type: 0 (int32)
phase_inductance: 0.00010929963900707662 (float)
phase_resistance: 0.2829059958457947 (float)
pole_pairs: 8 (int32)
pre_calibrated: True (bool)
requested_current_range: 25.0 (float)
resistance_calib_max_voltage: 4.0 (float)
torque_constant: 0.041349999606609344 (float)
torque_lim: inf (float)
current_control:
I_measured_report_filter_k: 1.0 (float)
Ibus: -0.00046596635365858674 (float)
Id_measured: -0.249151349067688 (float)
Id_setpoint: 0.0 (float)
Iq_measured: 0.035423219203948975 (float)
Iq_setpoint: -0.018442979082465172 (float)
acim_rotor_flux: 0.0 (float)
async_phase_offset: 0.0 (float)
async_phase_vel: 0.0 (float)
final_v_alpha: 0.029553677886724472 (float)
final_v_beta: -0.002875406062230468 (float)
i_gain: 28.290599822998047 (float)
max_allowed_current: 30.375 (float)
overcurrent_trip_level: 33.75 (float)
p_gain: 0.010929963551461697 (float)
v_current_control_integral_d: 0.027132106944918633 (float)
v_current_control_integral_q: -0.005696178879588842 (float)
current_meas_phB: 0.08751904964447021 (float)
current_meas_phC: 0.02672743797302246 (float)
effective_current_lim: 10.0 (float)
error: 0 (int32)
gate_driver:
drv_fault: 0 (int32)
is_calibrated: True (bool)
phase_current_rev_gain: 0.012500000186264515 (float)
timing_log:
adc_cb_dc: 14666 (uint16)
adc_cb_i: 4006 (uint16)
enc_calib: 34906 (uint16)
foc_current: 13470 (uint16)
foc_voltage: 10490 (uint16)
general: 63191 (uint16)
idx_search: 35141 (uint16)
meas_l: 10530 (uint16)
meas_r: 10522 (uint16)
sample_now: 16781 (uint16)
spi_end: 31173 (uint16)
spi_start: 24474 (uint16)

They’re very similar - just looks like one falls under the threshold where scientific notation is used. 9.78e-5 is 0.0000978, and 0.000109 is the same as 1.09e-4.

The difference between axis 0 and 1 can be due to differences in electrical noise per axis. But this is usually more common in older ODrives, where did you buy/get yours?

1 Like

Oh, I didn`t pay attention to it. Thank you! I really appreciate your help!

About Odrive: I ordered it on Aliexpress. Is there any way to recognize it?

I noticed that when connecting only one motor to any axis, everything works fine. As soon as I just connect the second one, I immediately have problems with motor control.

By the way, what do you think about ODESC v3.6? Is it some fork of Odrive?

Perhaps this Odrive controller is redundant for my project. I just need to remotely control two thrusters by changing the speed with a joystick in order to change the direction of movement of the catamaran that I`m designing.
I am also concerned about the current status of Odrive 3.6: NRND
Maybe I just need a couple of these controllers. I’m a little confused now.

Any ODrives purchased from a source other than our webshop aren’t genuine. While the ODrive v3.6 is open source hardware, the ODrive name itself is trademarked – selling something “based on ODrive” or “ODrive compatible” is fine, but if it’s sold as an ODrive, then you should ask for your money back.

Namely the clone ODrives (frequently sold as ODESC) are typically very low quality – they’re based on older versions of the ODrive (even if they say 3.6, they’re usually based on 3.4, which had major issues), and use counterfeit or low quality components. I’m definitely not surprised you’re having the issues you’re having, in that case – the v3.4 had large issues with electrical noise.

The ODrive v3.6 is NRND (not recommended for new designs), and is slowly being phased out in favor of the ODrive S1. The S1 is a near drop-in compatible single-axis replacement, with a comparable price per axis. It brings numerous improvements in reliability, performance, and software support, and is strongly recommended over the v3.6.

1 Like