Turntable motor drive using Odrive

I’m evaluating the use of an Odrive micro together with a BLDC motor to drive (at the rim) the turntable platter.
The required speed is about 150rpm (or circa 2.6 r/s) for turning the platter at 33.33rpm
The motor is a 24V, NEMA 34 size, with internal rotor and about 30W, so pretty low power.

It’s running smoothly but the speed control isn’t as precise as I would like. There’s about ±0.04 r/s of variation around the set speed.
I’m going to try another motor with an external rotor (like those tipically used in drones) as I believe they have less cogging, which might improve the speed control.

Any ideas ?

Usually the encoder is the main factor in your achievable position or velocity precision. Any cogging torque can be compensated with anticogging. What encoder are you using?

I’m using a 1000cpr optical encoder. I tried anticogging but it didn’t help.
I can’t get the current motor to run below 0.9-0.8 r/s, it just vibrates but keeps still.
I suspect that’s the reason anticogging isn’t helping and why I want to try a different motor.

Hm, that definitely seems like a gains tuning issue. Is it unable to run below 0.8-0.9 r/s in velocity mode? Or does anticogging fail when the speed falls below that threshold?

Also, 1000CPR is pretty low resolution. Maybe you could try something like the AMT10E2? That’s 20480 CPR (more than 20x more resolution!) which will give much better velocity control and anticogging performance, if you go that route

By gains tuning you mean too much or not enough?

Could be either! I would recommend trying the tuning guide: Tuning the Controller — ODrive Documentation 0.6.11 documentation

But I also definitely think you need a higher resolution encoder. That will help a lot.

I made a confusion between cpr and ppr. My current encoder is 4000cpr not 1000.
Anyway, I’ll take the advice and order an AMT102

Make sure it’s an AMT10E2! The AMT102 is 8192 CPR, the AMT10E2 is 20480 CPR!