Hello,

Is 3rd harmonic injection for FOC already implemented in the Firmware?

It allows a 15% higher motor voltage and thus higher speed for a given battery voltage

without the disadvantages of field weakening.

See:

https://tomontheroll.wordpress.com/2014/12/25/a-quick-look-on-three-phase-overmodulation-waveforms/

Furthermore it can help to reduce the speed ripple for quad-copter applications.

The following datasheet of a motor controller also contains good explanations:

https://www.allegromicro.com/~/media/Files/Datasheets/A4964-Datasheet.ashx

EDIT:

SVPWM/ Midpoint Clamp might be easier to implement with similar results.

More about it in my next post.

Looking forward for your answer!

Uwe

SVPWM/ Midpoint Clamp can also be used to achieve the full voltage range and is easier to implement.

A very nice tutorial can be found here:

http://microchipdeveloper.com/mct5001:zero-sequence-modulation

The formula itself can be found here:

http://microchipdeveloper.com/mct5001:which-zsm-is-best

And its really only one formula, that takes the desired duty cycles as input and three duty-cycle with

a shifted midpoint as output.

To repeat my question: Is something like this already implemented in the Firmware?

I looked at: https://github.com/vedderb/bldc/blob/master/mcpwm_foc.c , it could be in the function svm, but I don't fully understand the code.

Thanks for pointing this out, the tutorial and visualization you linked is nice. The firmware uses what they describe as SVPWM, or midpoint clamp. The reason that the function from the firmware does not look familiar is probably that the duty cycles are calculated after the inverse park transform, or from the alpha-beta frame. That saves some computations too, and is how most applications notes describe SVPWM.

I have updated my SVM simulator that uses the SVM function from the firmware and simulated center-aligned PWM to also plot the duty cycles. You can get it from github and play around with it if you feel like it:

https://github.com/vedderb/svm_sim

Very cool, thanks for making it available Benjamin!