S1 effective_current_lim Help

Hello,

I am using the S1 driver to Drive a BLDC motor. I am struggling with a current limit on that I cannot understand how it is being set. Somehow it is stuck at 32 Amps, but I do not know what is driving this value?

Per the documentation, there are three possible limits:

effective_current_lim*: [Amp] - Float32Property*

This value is the internally-limited value of phase current allowed according and is the minimum of the following:

  • config.motor.current_soft_max, optionally derated based on motor temperature.
  • config.inverter0.current_soft_max, optionally derated based on ODrive power stage temperature.
  • Maximum measurable current range

I am printing the first two:
the motor current limit (it is set at 40 Amps) and the FET current limit (80 A), and I also am looking at the temperature de-rating, the temp estimate is around 25 C, and the FET Temp Lower limit is 84 C and the motor one is disabled. So according to the data sheet the temperature limit is not reached

So that leaves the final possible limit “Maximum Measurable current range” which is not referenced anywhere else in the documentation. Does anyone know how I can affect this value? I want to be able to drive 40 Amps. Thank you,
-Josh

Hi there,

Thanks for reaching out!

The S1 limits current based on dc_bus_overvoltage_trip_level, as seen here: ODrive S1 Datasheet — ODrive Documentation 0.6.11 documentation

What bus voltage are you running at? Typically, you shouldn’t need to set the overvoltage threshold more than a few volts above the nominal bus voltage, so even at 48V you should be able to set an overvoltage trip of 51V and achieve 40A.

Apologies for that not being listed in the effective_current_lim docs – I’ll fix that!

Rather than updating the docs, how about fixing the confusing behavior? I don’t see why it needs to limit the current if the measured bus voltage is nowhere near the trip level.

This is to ensure guaranteed reliability on the S1 – we have no control over the slew rates the user imposes on the DC bus, so if we have a current limit directly reactive to the measured bus voltage, rapid spikes or increases on the bus voltage may lead to operation of the S1 outside of the inverter safe operating region. Additionally, with significant DC bus resistance and inductance, this can (and will) lead to oscillations on the DC bus when running into the derating, so it’s unfortunately not possible to directly derate the current based on the measured DC bus voltage. Here’s a simple simulation showing that oscillatory behavior, in case you’re curious: https://tinyurl.com/23zkq9h2. To correct, we’d need a model of the users’s DC bus topology, which is very difficult to impossible to fully model (given we can’t predict the current draw of other devices on the bus).