Can the ODrive (56V) burn out if it is unpowered, but the motor is moved?

Hi,
we had several ODrive v3.6 56Vs that burned out in May, with the problem being DRV_FAULT error:

In [1]: dump_errors(odrv0)
system: no error
axis0
  axis: Error(s):
    AxisError.MOTOR_FAILED
  motor: Error(s):
    MotorError.DRV_FAULT
  DRV fault: metadata not loaded
  sensorless_estimator: no error
  encoder: no error
  controller: no error
axis1
  axis: Error(s):
    AxisError.MOTOR_FAILED
  motor: Error(s):
    MotorError.DRV_FAULT
  DRV fault: none
  sensorless_estimator: no error
  encoder: no error
  controller: no error

This is a persistent error, which can’t be cleared, does not disappear upon power cycling, but disappears if the DRV8301 chips are changed with new.

It might not be a ODrive at fault here. The motors attached to the ODrive are 300W hub motors for traction use (think e-scooter type of motors). However, our model is optimised for torque and has an in-built 4.3:1 reductor. Thus, even at modest speeds, the motors have significant bEMF, on the order of maybe 5-7 Vrms.

What we suspect is the following: the users might try to move the rover while it is completely unpowered. This turns the wheels, and creates bEMF voltage, and that one gets rectified and flows into the power supply rails of the ODrive through the body diodes of the MOSFETs. From there, it flows to the entire rover. We’ve seen some LEDs of the rover light up when we move the rover by hand with the power completely shut down. But we ourselves haven’t caused any breakage by doing that.

My question is: is it possible that this usage scenario can cause the destruction of the DRV chips?

Bump.
Anyone had similar experience?

Hi! Sorry for not getting back to you.

This should only cause an issue if the total regenerated current was greater than the maximum FET body diode current, which is a good amount of current.

Can you check the DRV fault by checking:

  • odrv0.get_drv_fault()
  • odrv0.axis0.last_drv_fault
  • odrv0.axis1.last_drv_fault

If the chips are burnt out, you are probably having over voltage problems, not over current. There are two possible scenarios:

  1. The board is activating and trying to dump the power into our power supply/battery, but it is disconnected. If you have a logfile, the ODrive should be reporting something about over-voltages being detected. Some possible reasons this could happen: your BMS is blocking against regeneration, the BMS has turned off the battery for some other reason, or the power cables are disconnected.
  2. The board is not activating, and the power is circulating/building up in the motor and cables and running through the FETs until they burn out. Some possible reasons this could happen: the ODrive was shut down improperly, it can’t build up enough power to start up (fast enough), and/or it can’t see the BEMF.

Hi @vgeorgiev have you had the chance to check the DRV faults?

Sorry, we didn’t check the DRV fault by the instructions you gave, because, by that time, we have swapped out the DRV chips with new ones, and the resulting ODrive worked fine. But the electrical engineer assures me the DRV chips were completely dead - no status can be read out from them. As you can see, the dump_errors call lists metadata not loaded on one of the axes, and none on the other. If we kill another ODrive with this rover, we’ll be sure to check the errors in detail, as you instructed.

@Riewert, the diodes in the FETs were fine, only the DRV chips were dead. We don’t have a logfile unfortunately. BMS blocking against regen is possible, but unlikely - our battery is quite large, more than 600Wh, and the charging circuit is instructed to charge it to 95%ish only, thus leaving some ample headroom to absorb energy in regen situations.

We’ve added the overvoltage protection in terms of dc_bus_overvoltage_ramp_start/dc_bus_overvoltage_ramp_end and dc_bus_overvoltage_trip_level. Thus if an overvoltage is near, the ODrives will no try to regen.