I was turning my motor to generate regen current and the Odrive abruptly died. Now the power LED lights up, but no one’s home.
I thought (from reading posts on this forum) that the Odrive was able to defend itself against this kind of thing. In fact someone explicitly said that killing an Odrive this way shouldn’t be possible.
The Odrive is powered from a 48V power supply and dumping the power into a 2 Ohm braking resistor. There were no ground loops that I could see. The power supply is set to trip out on overvoltage, and the Odrive never complained about voltage errors in any case.
What I was testing was sudden, sharp accelerations of the motor (needed for my application.) So the motor was going from stationary to high speed, very suddenly. Is that by itself something that the ODrive just isn’t able to handle? (It’s a 14 pole motor and has never been anywhere near the Odrive’s speed limit.)
I’ve modified the firmware running on the ODrive.
Now I’m positive that I wasn’t doing anything to interfere with the workings of the actual control loop. All my edits do is alter the value of the torque setpoint in
Controller::update, and in fact when the Odrive died the torque was being set to 0. Everything is done in it’s own low priority thread and only touches variables that I’ve created myself.
But is it possible that I could have, for eg, somehow slowed down the Odrive’s mainloop enough that something went catastrophically wrong? (I have done things that slowed it down too much before, and all I got was DEADLINE_MISSED errors. The code I was running when it died had no such errors.)
It’s possible, though I’m not at all sure that this actually happened, that the diametric magnet used by the encoder could have been slipping on the motor shaft when the acceleration was sudden enough. Could that have caused the Odrive to phase the windings at the wrong time, and dump too much power into vbus that way?
It’s also possible that the FETs driving the braking resistor were damaged. Previously I’d been using a far too low value resistor, and was getting CURRENT_LIMIT_VIOLATION errors.
On replacing the resistor with a 2 Ohm one, the CURRENT_LIMIT_VIOLATION errors “retreated”. I could still get them, but I had to accelerate the motor more sharply in order to do so. It was in testing this (with the torque set conscientiously to 0) that I killed the board.
I don’t know enough about FET failure modes, but is it possible that one of them became intermittent or “sticky”, so that it stayed closed when it should have been open, and the regen power went into vbus?
I am probably going to buy another Odrive, but it would be nice to know what went wrong so I don’t immediately fry the new one as well.
Need advice from the pros. Which of these do you think was most likely? Or are they all wrong and it was something else?