I operate BLDC motor with FOC controller, and attempt to characterize Iq as a function of load/torque.

From FOC theory, I would expect a linear relationship between the torque and the Iq current component.

What I observe is a sign reversal, where Iq goes towards zero as the load (friction) increases, and then changes sign.

In this test, the torque never changes direction, as the speed is held mostly constant by the speed PID loop, and the inertia is negligible.

So what could possibly cause an effect like this ?

(the control is well-tuned, and follows desired speed for a wide range of RPM setpoints and loads)

Edit: There is a load value where the controller reports zero current which is nonphysical (the motor spins, overcomes friction and consumes energy). So I don't see how it can be anything else but an artifact/bug of the FOC algorithm.

current and RPM plot

  • 1
    \$\begingroup\$ Looks like your speed controller is oscillating. When your speed goes above the reference speed, the controller will output potentially a negative Iq reference and so you have this osciallting behaviour as seen in picture 2. Maybe you can give more weight on your I-term of the speed controller? \$\endgroup\$ Aug 3, 2022 at 15:27
  • \$\begingroup\$ Not sure which oscillations are you referring to. The changes in speed in the plot are due to periodic application of a friction brake to demonstrate the effect. \$\endgroup\$
    – vadimus
    Aug 3, 2022 at 15:30
  • 1
    \$\begingroup\$ The fact that you are periodically applying a friction brake probably should have been mentioned in the original question. Anyway, the simplest explanation for what you are seeing is that for some reason, there is an offset error in the Iq graph. For whatever reason, the actual Iq is higher than the Iq shown in the graph by roughly 0.25 A or so. \$\endgroup\$
    – user57037
    Aug 3, 2022 at 18:19
  • 1
    \$\begingroup\$ If you monitor the phase current with a current probe, Iq should correspond to the peak of the sine wave. This might allow you to determine if there is indeed an offset. \$\endgroup\$
    – user57037
    Aug 3, 2022 at 21:40

1 Answer 1


To answer my own question, the root cause of the effect was a phase current measurement error (as mkeith suggested), due to insufficient filtering of ADC input.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.