ODriveError.CURRENT_LIMIT_VIOLATION

Hi,
I’m new to the Odrive controller. I bought it a few days ago and now, I’m stuck. I’ve done all the calibration following the “Getting Started Guide”. I’m using Hall sensor as encoder. The motor is this one (https://www.electroandcompany.com/product-page/qsmotor-qs138-4000w-with-splines-1). The battery is a 56V 5 Ah. The motor seems fine when running at low speed (0-6 turn/s) in closed loop.
Here’s the problem : When the speed command is above 6, I get the following error :

In [41]: dump_errors(odrv0)
axis0
active_errors: no error
disarm_reason: Error(s):
ODriveError.CURRENT_LIMIT_VIOLATION
procedure_result: ProcedureResult.DISARMED
last_drv_fault: none
internal issues: none

The samething happens when I set the motor to be in torque control. It simply doesn’t turn because of “ODriveError.CURRENT_LIMIT_VIOLATION”

I’ve tried to change many parameters such as :
In [31]: odrv0.axis0.config.motor.current_soft_max = 25 # [A]^M
…: odrv0.axis0.config.motor.current_hard_max = 30 # [A]
In [42]: odrv0.config.dc_max_negative_current = -10
In [43]: odrv0.config.dc_max_positive_current = 50

After some research I found that I can change the “ODrive.Axis.LockinConfig” but I can’t find what this parameter is exacly.

Hope someone can help me with that. I feel like it’s a basic problem that I simply can’t find.

Hi! Is this an Odrive V3 or ODrive Pro?

Odrive Pro and I use the ODrive control utility v0.6.3.post.
Also, I’m using the USB isolator if it can help !

I’ve read in the doc :

 CURRENT_LIMIT_VIOLATION = 4096 (0x1000)

    The motor current exceeded <axis>.config.motor.current_hard_max. or config.inverterN.current_hard_max.

    The current controller tries not to exceed <axis>.config.motor.current_soft_max, however a bit of overshoot is normal. Therefore, if you get this error, try to increase the margin between the soft and hard current limits.

My hard current limit is 30 A and soft limit is 25 A. I used a Multimeter to mesure the current and when the drive falls in fault, I read only 0.5A at the exit of the battery.

@Wetmelon Any thoughts on that ? Recently I got the motor to run ~400 rpm but I had another error code (I didn’t copy it unfortunatly) and the drive would no longer work. So I reset all the parameters. I’m not able to make it work at 400 rpm because I played with so many parameters that I don’t remember eveything I did.

The part I don’t get is why I have a current limiting problem when I read about 0.5 A…

Because bus current has almost nothing to do with motor current. The current_limit refers to motor phase current, not power supply bus current.

The power in and power out are equal, but the odrive chops the input voltage down to a lower voltage and higher current.

@Wetmelon yes I get it, however, why do I get the current limit violation ? what parameter am I supposed to change to remove that error?

In [15]: dump_errors(odrv0)
axis0
  active_errors: no error
  disarm_reason: Error(s):
    ODriveError.CURRENT_LIMIT_VIOLATION
  procedure_result: ProcedureResult.DISARMED
  last_drv_fault: none
internal issues: none

I don’t know, sorry. You’ll have to plot some data and figure it out…

Check Iq_setpoint vs Iq_measured in the GUI

Speaking of, when I use it on Firefox, it doesn’t work at all, so I tried it on google Chrome. It partially works. I can connect the drive, edit the parameters, but can’t drag them in the liveplotter. Hence, I’m unable to plot anything.