FOC and Inductance

The FOC algorithm code i use does not use inductance of the motor in any section of the code but i am observing smooth rotation of the motor. I am running in speed mode and closed loop. The position feedback is using digital hall sensors. Is it really required to use inductance parameter and in which section of the code?

Why don’t you Google it? You will find much more information, videos, papers,…

Using the search in this forum you would also find answers.

Searching on the ArduinoFOC github repository also…

Googling is good but there is a lot of chaff, and the world of motor control is quite sizeable. I think we should curate a small horde of the good stuff, relevant to what people here tend to do.

My limited understanding is that the primary influence of inductance is that it causes a phase shift between the voltage and current waveforms. The current waveform is what is most closely linked to the actual magnetic field (although there are other influences which slightly delay or distort the actual magnetic field they are quite minor I think?).

The higher the frequency, the larger this phase shift.

This affects motor timing. The main advantage from FOC comes from optimizing motor timing.

You can do a quick calculation to esimate the phase shift that is occurring using the frequency of the sine wave and the inductance.

There are other sources of phase shift like code propagation time.

You can do a static compensation by changing the sensor zero angle linearly with rpm and see if that improves your energy efficiency or torque, that should mop up several sources of variation at once as both inductance and code propagation are linear errors.

I did an experiment with my fan once where I ran it open loop, and then adjusted the power supply voltage and recorded the energy efficiency. Because the fan blades consume practically exactly the same power at the same rpm, I could do this easily. I found that typical expectations of efficiency and other driver boards and chips generally got considerably lower than the possible energy efficiency I could achieve.

I experimented briefly with an algorithm that, while the motor is running, dynamically adjusted parameters to optimize energy efficiency (ultimately by optimizing motor timing). However it was too slow and the motor was prone to stalling, because the point of optimal efficiency is close to the point of stalling. In sensorless drive especially it is very hard to recover, you need high frequency injection or something to recover from the stall condition.

With sensors you are generally good, the approach of simply setting the voltages based on the sensor readings is good because it is stall proof.

1 Like

Well it’s already curated, it’s already discussed in this forum and on github.

We are just making people more lazy

1 Like