Hi,
I’ve been doing testing on my 24v ODrive board, and it was working fine up until an hour ago, when it just wouldn’t go into closed loop mode. Calibration seems normal, and I don’t know what to do.
I know the axis error 0x40 is ERROR_MOTOR_FAILED and the motor error is ERROR_MODULATION_MAGNITUDE but the calibration sequence looks completely normal and I’m using C4250 560KV motor. The troubleshooting guide doesn’t say anything about my case.
Please help
Hi tuftman! The docs have a section called “Common Motor Errors” with that motor error listed https://docs.odriverobotics.com/troubleshooting#common-motor-errors
The bus voltage was insufficent to push the requested current through the motor. If you are getting this during motor calibration, make sure that motor.config.resistance_calib_max_voltage
is no more than half your bus voltage.
For gimbal motors, it is recommended to set the motor.config.calibration_current
and motor.config.current_lim
to half your bus voltage, or less.
I’ve seen that, I’m not using gimbal motors and my resistance_calib_max_voltage is 2v and my bus voltage is 24v
Oh, I misread your original post. Modulation Magnitude error during runtime but not during calibration seems really strange. Can you check your phase_resistance from odrv.axis.motor.config
?
Also, what is your calibration_current?
my phase resistance is 0.050685275346040726 and my calibration current is 10.0
here’s the rest of the motor config
pre_calibrated = False (bool)
pole_pairs = 7 (int)
calibration_current = 10.0 (float)
resistance_calib_max_voltage = 2.0 (float)
phase_inductance = 2.1762045435025357e-05 (float)
phase_resistance = 0.050685275346040726 (float)
direction = -1 (int)
motor_type = 0 (int)
current_lim = 15.0 (float)
current_lim_tolerance = 1.25 (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)
my motor’s page says it can handle up to 80 amps
Hmm, looks normal. Can you confirm your firmware version? odrv0
will print it out
hw_version_major = 3 (int)
hw_version_minor = 6 (int)
hw_version_variant = 24 (int)
fw_version_major = 0 (int)
fw_version_minor = 4 (int)
fw_version_revision = 11 (int)
fw_version_unreleased = 0 (int)