What causes CURRENT_LIMIT_VIOLATION?

I had a working setup with a 1 Ohm braking resistor. I replaced that resistor with an 0.1 Ohm resistor, and set odrv0.config.brake_resistance = 0.1 to match.

Before the change, I could turn the shaft by hand at quite a high speed, and only occasionally got CURRENT_LIMIT_VIOLATION errors.

Now I get CURRENT_LIMIT_VIOLATION errors when turning the shaft at pretty much anything above snail’s pace.

I had to replace the resistor because the 1 Ohm one was 100W while the 0.1 Ohm replacement is 300W, and the 100W one was heating up to an unacceptable degree.

I also understood that a lower resistance was better, as it would allow the Odrive to dump more power into it given the same vbus_voltage.

To my knowledge this shouldn’t affect anything else and no other parameters have been changed.

Can anyone suggest what might be going on?

The default 2 Ohm was specified to allow ODrive to dump short pulses up to 1kW at 48V.
If you change that to 0.1 Ohm, then you have pulses of 20kW (480A), which is well out-of-spec for the FETs that drive the brake resistor. So you might have damaged your board.

Why not keep the same value but up the power rating? e.g. I use three resistors, two of the default 2R 50W in series, in parallel with one 4.8R 100W. For a total of approximately 2.3R but with 200W rating.

Thankd for your response. I obviously didn’t have a good enough mental model of what’s going on.

If I understand you correctly, you’re saying the braking resistor is switched off and on by the PWM, but the PWM can’t actually do that fast enough to prevent too much current flowing into the resistor?

How is that bad? If too much current flows, doesn’t the resistor just absorb it?

I can see how it would be a problem in the other direction - a too-high resistance meaning that even with the PWM on full whack, not enough power could be dumped into it, resulting in the vbus voltage rising and causing problems that way.

But how does it work the other way around?

If I’ve damaged the board, which bits am I likely to have damaged?

Yeah, 0.1 is a bit low for the ODrive. I wouldn’t go below the 0.5 ohm provided with the 56V odrive.

I’m going to change the resistors at the next chance I get.

But I’m still totally confused about why this is a problem.

Can anyone explain the theory to me?

@towen already replied to you. If you use a low resistor value, the MOSFET driving the dump load will basically be shorted to ground. As u =RI, if your R is almost 0, your gonna have a high current flowing through the MOSFET, far beyond the max allowable value.so if you have damaged something, that would be the MOSFET from dump load. You can test them, With power off, by measuring resistance between drain and source. Shall get a value above M Ohms. Also in diode mode, measuring the diode voltage between source and drain, you shall get around 0,5V per MOSFET . If you have none of that, you have fried those MOSFET.

1 Like

I was thinking about pulses, which put me in mind of switching speeds and the code behind them, and missed the bit about damaging the FET.

Having swapped back to 2 Ohms, it’s now working fine, so I’m assuming I didn’t damage the board.

1 Like