Issues with behaviour difference between identical Axes

Hi there,

I was wondering if anyone could bounce any ideas around the issue that I have.
I am running v3.6 56V and two D6374 150KV with 8192 CPR encoders. The firmware and odrivetool are both 0.5.1.

These are the settings that I have changed from the default:
odrv0.config.brake_resistance = 1 // bespoke resistor bank, load with fairly high inertia
odrv0.axis0.motor.config.current_lim = 35
odrv0.axis1.motor.config.current_lim = 35
odrv0.axis0.motor.config.torque_constant = 1
odrv0.axis1.motor.config.torque_constant = 1
odrv0.axis0.controller.config.vel_limit = 100
odrv0.axis1.controller.config.vel_limit = 100
odrv0.axis0.controller.config.vel_gain = 2.5
odrv0.axis1.controller.config.vel_gain = 2.5

The problem:
When trying to run a velocity step on Axis0 from input_vel = 10 to input_vel = 0 I get error message MOTOR_ERROR_CURRENT_LIMIT_VIOLATION. This would be all ok and I understand where it would come from, however, I do not get this error at all on Axis1 even if I run from input_vel = 20+ to input_vel = 0.

Please see liveplotter images below for axis0 and axis1 respectively:
1.input_vel
2.vel_estimate
3.Iq_measured
4.Iq_setpoint

Axis0trip2

Axis1

If anyone could get me some pointers, I would really appreciate it, stopping performance is important for the project, maintaining what Axis0 can achieve would be preferred.

The two axes have slightly different signal-to-noise ratio on the current sensors due to the board layout - Axis 1 is closer to the power supply whereas axis 0 is a way down the board - this means the ground level rises slightly at high bus currents and causes some extra noise.
Try increasing motor.config.current_lim_tolerance on both axes.

1 Like

Hi, thank you for the reply, that is kind of what I was suspecting as well, since after numerous tests it became obvious that it is also intermittent and even swapping around on which axis which motor/encoder sits didn’t migrate the issue. I had to substantially increase motor.config.current_lim_tolerance for it to stop doing that, it is not entirely great workaround, but it seems that is the only option now.