Motor calibration error

HI,all

I use Odrive v3.5(24V) with T-motor MN5212 340KV and encoder(AS5047D).

But when I run odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
The motor just ran in one direction and stopped. Then I got the error: ERROR_MODULATION_MAGNITUDE
Here are error information:

In [59]: dump_errors(odrv0)
axis0
  axis: Error(s):
    ERROR_MOTOR_FAILED
  motor: Error(s):
    ERROR_MODULATION_MAGNITUDE
  encoder: no error
  controller: no error
axis1
  axis: no error
  motor: no error
  encoder: no error
  controller: no error

And I checked motor.config.resistance_calib_max_voltage=10, no more than half my bus voltage (24v). Since T-motor MN5212 is a gimbal motor,I also checked motor.config.calibration_current=10 and
motor.config.current_lim=10.
That looks OK , so I did’t know what the problem is.

And here are my config:

Reconnected to ODrive 205C339B344D as odrv0
In [17]: odrv0.axis0.motor.config
Out[17]:
pre_calibrated = False (bool)
pole_pairs = 11 (int)
calibration_current = 10.0 (float)
resistance_calib_max_voltage = 2.0 (float)
phase_inductance = 0.0 (float)
phase_resistance = 0.0 (float)
direction = 0 (int)
motor_type = 2 (int)
current_lim = 10.0 (float)
inverter_temp_limit_lower = 100.0 (float)
inverter_temp_limit_upper = 120.0 (float)
requested_current_range = 60.0 (float)
current_control_bandwidth = 1000.0 (float)

In [18]: odrv0.axis0.encoder.config
Out[18]:
mode = 0 (int)
use_index = False (bool)
find_idx_on_lockin_only = False (bool)
pre_calibrated = False (bool)
zero_count_on_find_idx = True (bool)
cpr = 2000 (int)
offset = 0 (int)
offset_float = 0.0 (float)
enable_phase_interpolation = True (bool)
bandwidth = 1000.0 (float)
calib_range = 0.019999999552965164 (float)
calib_scan_distance = 50.26548385620117 (float)
calib_scan_omega = 12.566370964050293 (float)
idx_search_unidirectional = False (bool)
ignore_illegal_hall_state = False (bool)

In [19]: odrv0.axis0.config
Out[19]:
startup_motor_calibration = False (bool)
startup_encoder_index_search = False (bool)
startup_encoder_offset_calibration = False (bool)
startup_closed_loop_control = False (bool)
startup_sensorless_control = False (bool)
enable_step_dir = False (bool)
counts_per_step = 2.0 (float)
watchdog_timeout = 0.0 (float)
step_gpio_pin = 1 (int)
dir_gpio_pin = 2 (int)
lockin:
  current = 10.0 (float)
  ramp_time = 0.4000000059604645 (float)
  ramp_distance = 3.1415927410125732 (float)
  accel = 20.0 (float)
  vel = 40.0 (float)
  finish_distance = 100.0 (float)
  finish_on_vel = False (bool)
  finish_on_distance = False (bool)
  finish_on_enc_idx = False (bool)

Can someone help me with it ?

A couple things worth trying. Make sure you’re on the latest version of the ODrive firmware. There were some changes made earlier this year that should have eliminated one of the cases where this error should occur. Also try double checking the connections between the ODrive and your motor.

Hi,

I am a newbie to oDrive;
But I am surprised that you said : “T-motor MN5212 is a gimbal motor”.
I don’t think this is really the case.
Maybe you can change this config parameter:
odrv0.axis0.motor.config.motor_type
This is the type of motor being used. Currently two types of motors are supported: High-current motors ( MOTOR_TYPE_HIGH_CURRENT ) and gimbal motors ( MOTOR_TYPE_GIMBAL ).