Does Simplefoc have IPMSM motor support?

Can I use motors with rotors made of silicon steel sheets and where the magnet is positioned at an angle inside the sheets as shown in the image (IPMSM) with a simplefoc?

As far as I understand, magnetic torque and reluctance torque are produced when driving these motors. To take advantage of the reluctance torque, the flux degree (90) that keeps the magnetic torque at its maximum is reduced to a lower degree. This increases the reluctance torque. It reduces the magnetic torque. It is possible to find the angle at which the sum of these two torques is highest using an algorithm.

The following link contains information about the algorithm the VESC community uses to drive these motors. Can I implement this with SimpleFOC?

Of course you can do it, it’s open source :slight_smile:

As for the best approach, I think you could call motor.move to update motor.current_sp to the target torque, and then run your own code to split that into the separate d and q currents. Set feed_forward_current.q = newQ - current_sp and feed_forward_current.d = newD. Or you could simply set current_sp = newQ and leave feed_forward_current.q=0, but it’s safer if current_sp isn’t modified, so even if it’s called more often than motor.move, the feedforwards are regenerated from current_sp the same way each time.

If you wanted to integrate it into the library, then perhaps a new TorqueControlType would be best, which does the extra calculations using motor.axis_inductance and then falls through to the regular foc_current.