Motor not calibrating (Inductance and current out of range)

My ODrive (v3.5-24V) always worked properly. Today I updated the software and went through the calibration steps, but my motors wont calibrate.
I am using Turnigy 3632 - 1500KV motors.

On excecuting

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE

the motor fuzzes, but does not move and there is also no beep.
After some seconds it stops and I get the following error:

system: no error
axis0
  axis: no error
  motor: Error(s):
    MOTOR_ERROR_PHASE_INDUCTANCE_OUT_OF_RANGE
    MOTOR_ERROR_CURRENT_LIMIT_VIOLATION
  sensorless_estimator: no error
  encoder: no error
  controller: no error
axis1
  axis: no error
  motor: no error
  sensorless_estimator: no error
  encoder: no error
  controller: no error

It seems to measure the motor_resistance, because i get a value. odrv0.axis0.motor.config outputs:

calibration_current: 10.0 (float)
current_lim: 10.0 (float)
current_lim_margin: 8.0 (float)
dc_calib_tau: 0.20000000298023224 (float)
motor_type: 0 (uint8)
phase_inductance: inf (float)
phase_resistance: 0.030093342065811157 (float)
pole_pairs: 7 (int32)
requested_current_range: 60.0 (float)
resistance_calib_max_voltage: 2.0 (float)
torque_constant: 0.00551333324983716 (float)
torque_lim: inf (float)

Anybody has an idea what could be the problem?
Thank you in advance!

The inductance is calculated by this function in motor.cpp:

    float get_inductance() {
        // Note: A more correct formula would also take into account that there is a finite timestep.
        // However, the discretisation in the current control loop inverts the same discrepancy
        float dt = (float)(last_input_timestamp_ - start_timestamp_) / (float)TIM_1_8_CLOCK_HZ; // at 216MHz this overflows after 19 seconds
        return std::abs(test_voltage_) / (deltaI_ / dt);
    }

If it is returning inf then deltaI is probably zero i.e. the current reported by the controller has not changed over the timestep. Try calibating at a higher current i.e. increase motor.config.calibration_current and also check that the current sense gain is set correctly i.e. motor.config.requested_current_range is no more than double your max current.

Hi I ran into the same problem and cranked up the calibration current as you said and it worked, the motor I’m using is the 2212 in its 2200kv flavor (Motor sin escobillas XXD A2212 2212 930KV 1000KV 1400KV 2200KV 2450KV 2700KV para Drones Multirotor de ala fija de Avión RC|Partes y accesorios| - AliExpress). It seems to me that this error happens in small high KV motors, is this because the torque constant is lower and thus they need less voltage and more current?

High KV motors have low inductance and we need to use more current to be able to measure it.

In general I’d say High KV motors are not ideal for ODrive - they have low torque, require gearing, and the FOC commutation that ODrive uses is less useful in highly geared actuators.

You make a High KV motor by using fewer turns of wire. At some point, it’s not a motor anymore. :stuck_out_tongue: