# Difference between revisions of "STM32MotorControl:SDK Overmodulation"

 [quality revision] [pending revision]
 Revision as of 08:53, 25 May 2021 m ← Older edit Latest revision as of 07:40, 8 June 2021 m

## Contents

### 1 Principle of SVPWM

Space vector modulation index is limited to √3/2 but there is a way to extend this limit with the over-modulation. This technique is required when the modulation index, as the length of the reference space vector Us, exceeds the edges of the hexagon.

#### 1.1 Linear mode

In the linear area, V'cmd can keep both the amplitude and angle of Vcmd ,
then V'cmd = T'1 * V1 + T'2 * V2 with T'1 = T1 and T'2 = T2 .

#### 1.2 OVM mode 1

There are two cases:

• In the green area: T1 + T2 ≤ 1 .
Vcmd is unmodified and the timings remain unchanged T'1 = T1 and T'2 = T2 . In that region V'cmd follows the circle.
• In the blue area: T1 + T2 > 1 .
Then In order to keep V'cmd on the edge of the hexagon and keep the angle 𝜃, | V'cmd | is shrunk to make T'1 + T'2 = 1. V'cmd = T'1 * V1 + T'2 * V2 with T'1 = T1 / (T1 + T2) and T'2 = T2 / (T1 + T2).
In that region V'cmd follows the hexagon edge.

#### 1.3 OVM mode 2

There are three cases:

• In the green area: T1 ≥ 1.0 .
We only use V1 to generate theV'cmd .
Then V'cmd = T'1 * V1 + T'2 * V2 with T1 = 1.0 and T2 = 0 .
• In the yellow area: T2 ≥ 1.0 .
We only use V2 to generate theV'cmd .
Then V'cmd = T'1 * V1 + T'2 * V2 with T1 = 0 and T2 = 1.0 .
• In the blue area: T1 < 1.0 && T2 < 1.0 .
Then V'cmd = T'1 * V1 + T'2 * V2 with T'1 = (T1 / (T1 + T2) + 3 / 𝜋 . 𝛾) . (𝜋/6) / (𝜋/6 − 𝛾) and T'2 = 1.0 − T'1 .

### 4 Over-modulation example

Example: F4 three shunt with Shinano motor at 4000 rpm

```- In the middle of this snapshot: the blue curve shows the phase current
- Just bellow: the pink, yellow and green curves show the PWM channels
```

The over-modulation increases the total harmonic distortion, but it allows the modulation index to exceed √3/2.

```{{DISPLAYTITLE: STM32 MC SDK Overmodulation (new in V5.Y) }}

=== Principle of SVPWM ===

[[file:STM32_MC_Overmodulation_new_slide1_1.png|400px|left]]
Space vector modulation index is limited to √3/2 but there is a way to extend this limit with the over-modulation. This technique is required when the modulation index, as the length of the reference space vector Us, exceeds the edges of the hexagon.<br clear=all>

==== Linear mode ====

[[file:STM32_MC_Overmodulation_slide9_1.png|400px|left]]
In the linear area, ''V'<sub>cmd</sub>'' can keep both the amplitude and angle of ''V<sub>cmd</sub>'' ,<br>

then ''V'<sub>cmd</sub> = T'<sub>1</sub> * V<sub>1</sub> + T'<sub>2</sub> * V<sub>2</sub>'' with ''T'<sub>1</sub> = T<sub>1</sub>'' and ''T'<sub>2</sub> = T<sub>2</sub>'' .<br clear=all>

==== OVM mode 1 ====

[[file:STM32_MC_Overmodulation_slide10_1.png|400px|left]]
There are two cases:
* In the green area: ''T<sub>1</sub> + T<sub>2</sub> ≤ 1'' . <br> ''V<sub>cmd</sub>'' is unmodified and the timings remain unchanged ''T'<sub>1</sub> = T<sub>1</sub>'' and ''T'<sub>2</sub> = T<sub>2</sub>'' . In that region ''V'<sub>cmd</sub>'' follows the circle.
* In the blue area: ''T<sub>1</sub> + T<sub>2</sub> > 1'' . <br> Then In order to keep ''V'<sub>cmd</sub>'' on the edge of the hexagon and keep the angle 𝜃, ''| V'<sub>cmd</sub> |''  is shrunk to make ''T'<sub>1</sub> + T'<sub>2</sub> = 1''. ''V'<sub>cmd</sub> = T'<sub>1</sub> * V<sub>1</sub> + T'<sub>2</sub> * V<sub>2</sub>'' with ''T'<sub>1</sub> = T<sub>1</sub> / (T<sub>1</sub> + T<sub>2</sub>)'' and ''T'<sub>2</sub> = T<sub>2</sub> / (T<sub>1</sub> + T<sub>2</sub>)''. <br> In that region ''V'<sub>cmd</sub>'' follows the hexagon edge.<br clear=all>

==== OVM mode 2 ====

[[file:STM32_MC_Overmodulation_slide11_1.png|400px|left]]
There are three cases:
* In the green area: ''T<sub>1</sub> ≥ 1.0'' . <br> We only use V1 to generate the''V'<sub>cmd</sub>'' . <br> Then ''V'<sub>cmd</sub> = T'<sub>1</sub> * V<sub>1</sub> + T'<sub>2</sub> * V<sub>2</sub>'' with ''T<sub>1</sub> = 1.0'' and ''T<sub>2</sub> = 0'' .
* In the yellow area: ''T<sub>2</sub> ≥ 1.0'' . <br> We only use V2 to generate the''V'<sub>cmd</sub>'' . <br> Then ''V'<sub>cmd</sub> = T'<sub>1</sub> * V<sub>1</sub> + T'<sub>2</sub> * V<sub>2</sub>'' with ''T<sub>1</sub> = 0'' and ''T<sub>2</sub> = 1.0'' .
* In the blue area: ''T<sub>1</sub> < 1.0 && T<sub>2</sub> < 1.0'' . <br> Then ''V'<sub>cmd</sub> = T'<sub>1</sub> * V<sub>1</sub> + T'<sub>2</sub> * V<sub>2</sub>'' with ''T'1 = (T1 / (T1 + T2) + 3 / 𝜋 . 𝛾) . (𝜋/6) / (𝜋/6 − 𝛾)'' and ''T'2 = 1.0 − T'1'' .<br clear=all>

=== Over-modulation timings sum-up ===

[[file:STM32_MC_Overmodulation_new_slide5_1.png|600px|center]]

=== Over-modulation activation in STM32 MC SDK V5.Y ===

[[file:STM32_MC_Overmodulation_new_slide6_1.png|600px|center]]

=== Over-modulation example  ===

Example: F4 three shunt with Shinano motor at 4000 rpm
[[file:STM32_MC_Overmodulation_slide17.jpg|800px|center]]
- In the middle of this snapshot: the blue curve shows the phase current
- Just bellow: the pink, yellow and green curves show the PWM channels
The over-modulation increases the total harmonic distortion, but it allows the modulation index to exceed √3/2.
<noinclude>
<!--
[[Category:Category:Motor Control]]
-->
[[Category:STM32 MC Under ConstructionMotor Control]]<noinclude>

{{PublicationRequestId|19738| 4/26/2021| JM LAGOUTTE}}<!--
Internal source: "OVM_wiki.pptx" VX.0
-->```