How does the FOC work in ODrive controller?

Solomon, I appreciate all your replies and supports to my previous questions. I notice ODrive controller can configure the motor in FOC mode. Just curious to know,

  1. Does the controller implement sensored FOC or sensorless FOC?
  2. We have one product which is using MA732 as encoder, the encoder does not measure the absolute position of rotor, instead, it measures the angle of shaft connecting with a gear after the motor. Can we configure MA732 as encoder for ODrive to test?

Hi!

  1. The ODrive supports both sensored and sensorless FOC. Sensored FOC is by default (it’s used for all motor control), sensorless is only supported in specific situations, namely with a minimum speed limitation: Hardware Configuration — ODrive Documentation 0.6.12 documentation

  2. Typically it’s required that you have at least one encoder directly on the motor. The ODrive supports dual encoders, so you could e.g. have a hall sensor on the motor, then the MA732 after the gearbox. There are some situations where it’s okay to only have the sensor after the gearbox, but this is less common and generally not recommended – namely only in situations where the gearbox is low reduction / low backlash and the motor has a low number of pole pairs, otherwise small inaccuracies in the encoder can lead to significant error while driving the motor.

Thank you for your insightful answers. Actually, one of our products has dual encoders, hall sensor before gearbox for motor and MA732 after the gearbox for shaft. The gear ratio is 112:1. The ODrive does support dual encoders like its specification states.

Can you instruct me how to configure dual encoder from the Encoder Configuration section? What should I add or change in Inspector panel?

You just need to check “use separate commutation encoder”

Then you get the option to define both commutation and load encoder; here the commutation encoder would be hall sensors, load encoder would be the SPI encoder.