After some research i’m now able to calibrate the motor, but i’m unable to use it in closed loop or with openloop estimator mode… In closed loop the motor only vibrate a lot and in openloop the error code 0x0400 appears.
The specs of the motor are below but i replaced the encoder by an AS5047 with ABI interface (4096 CPR)
I try to change the contoller gain : position, vel and vel integrator gain but each time the control was uneffective.
Have you some ideas about what can cause the trouble ?
My motor have a high resistance phases (5.6 Ohm per phases and about 2.6 mH inductor) the current inside will be quite low, should i change the shunt resistor values of the board in the aim of incresing the resolution of the current mesurament ?
Yep I have already set the motor type to 2 (Gimbal Motor Mode).
During a full calibration process, the motor spin slowly in one direction and then in the counter direction and again it change is direction until the encoder is initialized.
But after the calibration process i can’t go to closeloop mode because if i did it, the motor just vibrate a lot and become hot.
from the specs you posted, it seems like your motor has 28 poles, therefore 14 pole-pairs… you have to set the appropriate setting on the odrive with “odrv0.axis0.motor.config.pole_pairs”. I had the same issue, my motor calibrated fine, but in closed_loop_control it just vibrated.
Yes I have set the motor.config.pole_pairs to 14. But it change nothings after a closed loop request. If I find something interesting about our problem I will send you the tips.
I have check my encoder output ABI and it is not noisy, the motor cables and encoders are shielded and the shield is connected to GND on both sides of each cables.
For the current controller the P gain is set to 6.0 and the integrator gain is set to about 11000.0 is that normal?
Another wired thing: after a full calibration sequence I rotate my motor by hand for about 1 turn. When I read the shadow counter I read about 2048 in the buffer but my encoder is a 4096 CPR, if a set 2048 in the CPR encoder buffer the error CPR_OUT_OF_RANGE is set. Is it normal to read about 2048 for 1 turn in the shadow counter?