MOTOR_ERROR_DRV_FAULT ODrive v3.6 with motor attached

Hi,

So I was running my motor with low position changes (like an input_pos += 1), and it moved to a point in my setup where it somewhat stalled. I kept getting the errors like below afterwards:

In [382]: dump_errors(odrv0)                                                                                                                                                                                                                                  
system: not found
axis0
  axis: Error(s):
    UNKNOWN ERROR: 0x00000020
    UNKNOWN ERROR: 0x00000040
  motor: Error(s):
    MOTOR_ERROR_DRV_FAULT
  sensorless_estimator: no error
  encoder: no error
  controller: no error
axis1
  axis: Error(s):
    UNKNOWN ERROR: 0x00000040
  motor: Error(s):
    MOTOR_ERROR_DRV_FAULT
  sensorless_estimator: no error
  encoder: no error
  controller: no error

I also noticed that right when I rebooted the ODrive, there were no errors, but shortly after, maybe when it ran a calibration since .pre_calibrated was true, we got the errors again. However, after a little bit of doing nothing, we found that the ODrive is completely unrecognizable from odrivetool. When the USB is plugged in, odrivetool can’t find it. Any ideas/next steps?
ODrive v3.6 with 24V power

In [388]: odrv0.reboot()
Oh no odrv0 disappeared

Reconnected to ODrive 205137925753 as odrv0
In [389]: dump_errors(odrv0)                                                                                                                                                                                                                                  
system: not found
axis0
  axis: no error
  motor: no error
  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

In [390]: dump_errors(odrv0)                                                                                                                                                                                                                                  
system: not found
axis0
  axis: Error(s):
    UNKNOWN ERROR: 0x00000020
    UNKNOWN ERROR: 0x00000040
  motor: Error(s):
    MOTOR_ERROR_DRV_FAULT
  sensorless_estimator: no error
  encoder: no error
  controller: no error
axis1
  axis: Error(s):
    UNKNOWN ERROR: 0x00000040
  motor: Error(s):
    MOTOR_ERROR_DRV_FAULT
  sensorless_estimator: no error
  encoder: no error
  controller: no error

Either you have something plugged into one of the SPI pins, or your board is dead :frowning:

I think my board is dead :frowning: Shortly after this, the board stopped communicating to my computer at all. Do you know what may have caused this? I’d plug the board in and it’d say “please connect your ODrive on odrivetool”

No, this is pretty unusual. Maybe a high inductance motor / wiring setup? Or the SPI pins got shorted to power somehow?

or possibly, the board has erased itself due to a bizarre issue with the STM32 chip, unrelated to the error.

Can you put the board into DFU mode and check that it shows up as a STMicroelectronics DFU bootloader? (and then try odrivetool dfu to reprogram it and recover the board)

If on Linux, use sudo dmesg -w and/or lsusb, on Windows, device manager or whatever the hell microsoft have these days :sweat_smile:

2 Likes

I received a couple more ODrives so I havent gotten around to that test yet, but I will soon. However now, after a similar sequence of events where our motor hit the end of a type of blocking point and stalled, the ODrive now gets a current limit error right after going into closed loop mode as follows:

so right after I reboot there were no errors. Then I put it into closed loop mode and got a current limit error. Any ideas?

EDIT: I also checked what would happen when I ran

“odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION”

and after this, the i got the motor_phase_resistance_out_of_range error as follows:

Can you update your odrivetool and firmware? pip install --upgrade odrivetool first, then see if you stop getting UNKNOWN ERROR.

Oof yeah that’s not good for it. When that happens, because there is a finite encoder bandwidth and current controller bandwidth, you will get a current spike and we would expect a current limit violation. With the default current limit margins, this should not be destructive, but it could be.

I recommend you plot the phase currents (motor.current_control.phB and motor.current_control.phC) during resistance calibration and see what’s going on. Also motor.current_control.Iq_measured and Id_measured)

Make sure you have your brake resistor installed, and preferably turn on the dc_bus_voltage_ramp

Ok will do. My break resistor is connected but also What doez dc_bus_voltage_ramp do?

1 Like