Odrive Board Repair Help

I have been using the odrive 3.6 56V board for a few months to control a Hoverboard based robot. One of the motors stopped working so I troubleshot the problem thinking it was a connection problem upstream from the odrive. After finding no problems I turned the robot upside down, directed the motors to go forward and lo and behold they both worked. But about 30 seconds later the right motor slowly coasted to a stop.

After shutting down power I manually tried to move the right motor and found it was cogging as if two phases were shorted. I did not debug the motor further but hooked up a spare good motor instead. I could never get that axis to work again. I checked some of the resistors on the board and could see no signs of obvious damage to mosfets or anything. I moved the new motor to the other axis and it worked fine so I think I may have fried something on the odrive board.

Axis1 works fine.

The errors are from the old Axis1 motor working on axis0.
Errors come up during AXIS_STATE_MOTOR_CALIBRATION.
Suspect damaged odrive board is the problem.
No visible signs of thermal damage.

If anyone can give me advice here for troubleshooting or finding a bad component, it would be greatly appreciated. I have already reset and reconfigured the board with no change. I also use capacitors as described in the hoverboard guide and have checked them out with a meter.

error: 67108865 (uint64)

DC_calib_phA: 0.2663416564464569 (float)
DC_calib_phB: -0.6022433638572693 (float)
DC_calib_phC: 0.33506372570991516 (float)
I_bus: 0.0 (float)
config:
I_bus_hard_max: inf (float)
I_bus_hard_min: -inf (float)
I_leak_max: 0.10000000149011612 (float)
R_wL_FF_enable: False (bool)
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)
bEMF_FF_enable: False (bool)
calibration_current: 10.0 (float)
current_control_bandwidth: 100.0 (float)
current_lim: 10.0 (float)
current_lim_margin: 8.0 (float)
dc_calib_tau: 0.20000000298023224 (float)
inverter_temp_limit_lower: 100.0 (float)
inverter_temp_limit_upper: 120.0 (float)
motor_type: 0 (uint8)
phase_inductance: 0.0003804883745033294 (float)
phase_resistance: nan (float)
pole_pairs: 15 (int32)
pre_calibrated: True (bool)
requested_current_range: 25.0 (float)
resistance_calib_max_voltage: 4.0 (float)
torque_constant: 0.5168750286102295 (float)
torque_lim: inf (float)
current_control:
I_measured_report_filter_k: 1.0 (float)
Ialpha_measured: 0.0 (float)
Ibeta_measured: 0.0 (float)
Id_measured: 0.0 (float)
Id_setpoint: 0.0 (float)
Iq_measured: 0.0 (float)
Iq_setpoint: 0.29501980543136597 (float)
Vd_setpoint: 0.0 (float)
Vq_setpoint: 0.0 (float)
final_v_alpha: 0.0 (float)
final_v_beta: 0.0 (float)
i_gain: nan (float)
p_gain: 0.03804883733391762 (float)
phase: 0.0 (float)
phase_vel: 0.0 (float)
power: 0.0 (float)
v_current_control_integral_d: 0.0 (float)
v_current_control_integral_q: 0.0 (float)
current_meas_phA: -0.26695364713668823 (float)
current_meas_phB: 0.6019910573959351 (float)
current_meas_phC: -0.33459630608558655 (float)
effective_current_lim: 10.0 (float)
error: 67108865 (uint64)
fet_thermistor:
config: …
temperature: 21.185129165649414 (float)
is_armed: False (bool)
is_calibrated: True (bool)
last_error_time: 90.1968765258789 (float)
max_allowed_current: 30.375 (float)
max_dc_calib: 3.0375001430511475 (float)
motor_thermistor:
config: …
temperature: 0.0 (float)
n_evt_current_measurement: 1020290 (uint32)
n_evt_pwm_update: 1020295 (uint32)
phase_current_rev_gain: 0.012500000186264515 (float)

system: no error
axis0
axis: no error
motor: Error(s):
MOTOR_ERROR_PHASE_RESISTANCE_OUT_OF_RANGE
MOTOR_ERROR_UNKNOWN_PHASE_ESTIMATE
sensorless_estimator: no error
encoder: no error
controller: no error

Also, I am running this with a 24v hoverboard battery

Power off the board and check the resistance between each motor phase pin (ABC) and DC (+ and -)
If there’s short circut - you need to replace corresponding mosfet.

See: Recovering a dead board

Thanks I will try that.

Thanks a lot for your response.

Do you know if that schematic in the other post is good for the current board revision?

Yes, the only thing that has changed between 3.4 and 3.6 are some filter capacitors, iirc.

2 Likes

Curious as to what caused the failure? Is there a sturdier device for replacement?
I’ve repair consumer electronics 40+ years . Many failures from over heating and voltage spikes.
When replacing a part I would always try to upgrade.

My guess would be that the negative supply came loose, and the high current return path became the UART / CAN / USB / GPIO, as these are not isolated.

i have not figured it out yet but will report back when I know. I have hacked a hoverboard controller to move on with my project for the time being and haven’t had time to debug the odrive board yet. The problem stemmed from the one of the hub motor phases shorting together because even when removed and disconnected from the hoverboard, that wheel cogs and is difficult to turn. I don´t think my power disconnected or shorted because I am using very solid xt60 connectors.

Did you have any ground loops as shown on Ground Loops — ODrive Documentation 0.0 documentation ?

Even if the negative supply wire wasn’t disconnected, it still has resistance and inductance, which in extreme cases can mean that there is more than a few volts difference between ground points, and that can cause damage to the microcontroller.