I’m currently in the process of designing/building a laser cutter/engraver machine. The movement platform is a Core XY system driven by two brushless motors. I’ve been able to setup the ODrive and control both of the motors, but the cogging motion exhibited by both motors is unacceptable for my application.
At most rotational positions the motors do an excellent job of tracking the setpoint. However at certain locations the motors will begin to “float” around the setpoint never actually settling on it. The below graph created with liveplotter shows an example of this. The Yellow line is the setpoint and the two additional lines represent what I consider an acceptable deviation for my application (a range of +/- 0.05 linear mm)
To reiterate, at most rotational positions the motor does track the setpoint well. I have tuned the motor so that with the exceptions of these cogging points the motors do track the setpoints well with minimal overshoot and no oscillations.
My setup is composed of two identical Turningy SK3 3536-1400 motors. They each have 12 stator coils and 14 permanent magnets. They are each attached to a CUI AMT-102 encoder. The issue ocours whether the motors are attached the the Core XY belt system or are disconnected from any load.
Things I’ve tried so far to resolve the issue:
- I have tried re-tunning the gains on the control loop; both by repeating the calibration procedure from the ODrive docs and by fiddling with the gains manually.
- I have tried using the partially complete anti-cogging support by running
[axis].controller.start_anticogging_calibration()
and waiting for the process to complete. The process seems to have difficulty completing because it has difficultly moving the rotor to the cogging point with similar results to the illustration above. I was able to complete the calibration procedure by adjusting the gains but interestingly this only seemed to make the issue much worse.
At the moment I am considering the following options for resolving the Issue
- I could purchase new motors with less dramatic cogging issues. I’m not quite sure how to about this. If anyone could provide insight into how to purchase motors with less dramatic cogging I would be appreciative.
- Could create a gearbox that would reduce the effect of this noise on the output of the system. I really don’t want to do this because of the engineering effort involved and the reduction of the speed of the motion platform (which was one of the primary motivators for using brushless motors linked to an ODrive).
- Revise the entire design to use stepper motors instead
If anyone has any insight into how I could resolve the issue with the ODrive please post below. I would also like to know if anyone can think of any additional troubleshooting steps I could undertake to provide additional data. Finally I would also be grateful of anyone could recommend any brushless motors that do not exhibit such dramatic cogging characteristics. Thank you so much for taking the time to read through my post.