Motor doesn't stop when input_vel = 0


I have a problem with setting an input value in closed loop control mode:
if I set input_vel = 1.5, the motor starts without a problem (it accelerates to encoder.vel_estimate = -1.9, which also doesn’t sound right). after that, setting input_vel = 0 or any other value doesn’t do anything and I have to stop using AXIS_STATE_IDLE.

I’m using a v3.6 controller. There are no errors showing with dump_errors() and the encoder is firmly mounted on the shaft, so it can’t slip (although it might not be the most precise encoder). The shaft has a high inertial load on it, if that might be a problem.

In torque control mode, similar problems are occuring. First, there were spinout errors that could be solved by raising the tolerances for spinout detection. After that, there was an overspeed error when reaching vel_limit (which is being used as a target velocity in torque control mode). I solved this by raising vel_limit_tolerance. After that the motor also spins to a certain velocity when input_torque > 2 and won’t idle when setting input_torque again to 0. With input_torque = 2, functionality is given because vel_estimate < vel_limit?

You have calibration or encoder issues. Sounds to me like the motor is just not being controlled properly

The motor was calibrated with values closely matching to the data sheet. It seemed like the encoder was the issue. I set calib_scan_omega really low and calib_scan_distance high to minimize the cogging during encoder offset calibration and now everything works fine.
Thank you!

1 Like