Difference between revisions of "STM32MotorControl:SDK discontinuous PWM"

[quality revision] [quality revision]
m
m


1 Discontinuous PWM (DPWM) overview[edit]

DPWM feature allows the users to reduce the switching losses with an additional modulation technique according to their application.

This new approach is added to the current default 3-phase modulation.

It is deployed in all supported configurations:

  • 3-Shunt
  • 1-Shunt
  • ICS
  • with sensor or sensorless.

DPWM mode is available to the overall MCU families supported by MCSDK5.x

Target market:

  • Home appliances / High voltage applications: Air-conditioner fan, Air-conditioner compressor, Refrigerator compressor

2 DPWM / 2-phase description[edit]

By suppressing (0,0,0) state, two switches per cycle can be removed (here named with low side – usually high side) :

Duty_A is enlarged of PWM_period – Duty_A to cover the whole PWM period.

In this case, as (1,1,1) state is enlarged of Duty_A:

  • Duty_B = Duty_B + Duty_A
  • Duty_C = Duty_C + Duty_A

3 2-phase versus 3-phase modulation[edit]

CCR1,CCR2,CCR3 – applied PWM duty on U,V,W

4 DPWM activation via CubeMX setting[edit]

As the activation of DPWM is not yet supported by the WB, it is necessary to edit the .ioc file with STM32CubeMX.

To enable the DPWM mode, set to “ON” the DISCONTINUOUS_PWM in parameter settings of Motor Control as shown below.

5 DPWM firmware changes[edit]

When a project is generated with the DPWM, the activation of 2-phase modulation is effective at the startup stage, just after the calibration.

DPWM is enabled all-time in the 3-Shunt case, while it is not true in 1-Shunt.

In the 1-Shunt case, since the A and B stages are used for current sensing in boundary 2 or 3, it is not possible in this specific situation to work in 2-phase SVPWM. The workaround consists to automatically switch in 3-phase during these transition stages.

6 DPWM API functions[edit]

FW API specific to DPWM:

  • void PWMC_DPWM_ModeEnable( PWMC_Handle_t * pHandle )
    • enables the Discontinuous PWM mode by setting the global variable.
  • void PWMC_DPWM_ModeDisable( PWMC_Handle_t * pHandle )
    • disables the Discontinuous PWM mode by setting the global variable.
  • bool PWMC_GetDPWM_Mode( PWMC_Handle_t * pHandle )
    • returns the status of Discontinuous mode activation 

// annexe ???

7 2-phase versus 3-phase modulation[edit]

Dynamically moving from 3-phase modulation to 2-phase modulation:

  • At 10W:
  • At 50W:

Legend: Ch1: Current (Ia) Ch2: UL Ch3: VL Ch4: WL

8 2-phase modulation: Startup in 3-Shunt mode![edit]

Can start successfully:



{{DISPLAYTITLE:STM32 MC SDK discontinuous PWM (new in V5.Y)}}

=== Discontinuous PWM (DPWM) overview ===

DPWM feature allows the users to reduce the switching losses with an additional modulation technique according to their application. 

This new approach is added to the current default 3-phase modulation.

It is deployed in all supported configurations:
* 3-Shunt
* 1-Shunt
* ICS
* with sensor or sensorless.

DPWM mode is available to the overall MCU families supported by MCSDK5.x

Target market:
* Home appliances / High voltage applications: Air-conditioner fan, Air-conditioner compressor, Refrigerator compressor

=== DPWM / 2-phase description ===

[[file:Contributors:STM32_MC_DPWM_p3_1.png|center]]

By suppressing (0,0,0) state, two switches per cycle can be removed (here named with low side – usually high side) :

[[file:Contributors:STM32_MC_DPWM_p3_2.png|center]]

Duty_A is enlarged of PWM_period – Duty_A to cover the whole PWM period.

In this case, as (1,1,1) state is enlarged of Duty_A:
* Duty_B = Duty_B + Duty_A
* Duty_C = Duty_C + Duty_A

=== 2-phase versus 3-phase modulation ===

[[file:Contributors:STM32_MC_DPWM_p4_1.png|center]]

CCR1,CCR2,CCR3 – applied PWM duty on U,V,W 

[[file:Contributors:STM32_MC_DPWM_p4_2.png|center]]

=== DPWM activation via CubeMX setting ===

As the activation of DPWM is not yet supported by the WB, it is necessary to edit the ''.ioc'' file with STM32CubeMX. 

To enable the DPWM mode, set to “ON” the DISCONTINUOUS_PWM in parameter settings of Motor Control as shown below.

[[file:Contributors:STM32_MC_DPWM_p5.png|center]]

=== DPWM firmware changes===

When a project is generated with the DPWM, the activation of 2-phase modulation is effective at the startup stage, just after the calibration.

DPWM is enabled all-time in the 3-Shunt case, while it is not true in 1-Shunt. 

In the 1-Shunt case, since the A and B stages are used for current sensing in boundary 2 or 3, it is not possible in this specific situation to work in 2-phase SVPWM. The workaround consists to automatically switch in 3-phase during these transition stages.
{{ReviewsComments|-- [[User:Escoda Michael|Escoda Michael]] ([[User talk:Escoda Michael|talk]]) 20:47, 22 April 2021 (CEST)<br />Please try to put pictures with better resolution}}
[[file:Contributors:STM32_MC_DPWM_p6_1.png|center|600px]] 
[[file:Contributors:STM32_MC_DPWM_p6_2.png|center|400px]]

=== DPWM API functions ===

FW API specific to DPWM:
* void PWMC_DPWM_ModeEnable( PWMC_Handle_t * pHandle )
** enables the Discontinuous PWM mode by setting the global variable.
* void PWMC_DPWM_ModeDisable( PWMC_Handle_t * pHandle )
** disables the Discontinuous PWM mode by setting the global variable.
* bool PWMC_GetDPWM_Mode( PWMC_Handle_t * pHandle )
** returns the status of Discontinuous mode activation 

'''// annexe ???'''

=== 2-phase versus 3-phase modulation ===
Dynamically moving from 3-phase modulation to 2-phase modulation:
* At 10W:
[[file:Contributors:STM32_MC_DPWM_p8_1.jpg|center]]
* At 50W:
[[file:Contributors:STM32_MC_DPWM_p8_2.jpg|center]]
Legend:
Ch1: Current (Ia)
Ch2: UL
Ch3: VL
Ch4: WL

=== 2-phase modulation: Startup in 3-Shunt mode! ===

Can start successfully:
[[file:Contributors:STM32_MC_DPWM_p9.jpg|center]]
<noinclude>


[[Category:Motor Control]]
<noinclude>

{{PublicationRequestId|19717| 4/22/2021| JL LAGOUTTE}}<!--
Internal source: "DPWM_MCSDK5.pptx" V1.0
-->
Line 20: Line 20:
 
=== DPWM / 2-phase description ===
 
=== DPWM / 2-phase description ===
   
[[file:Contributors:STM32_MC_DPWM_p3_1.png|center]]
+
[[file:STM32_MC_DPWM_p3_1.png|center]]
   
 
By suppressing (0,0,0) state, two switches per cycle can be removed (here named with low side – usually high side) :
 
By suppressing (0,0,0) state, two switches per cycle can be removed (here named with low side – usually high side) :
   
[[file:Contributors:STM32_MC_DPWM_p3_2.png|center]]
+
[[file:STM32_MC_DPWM_p3_2.png|center]]
   
 
Duty_A is enlarged of PWM_period – Duty_A to cover the whole PWM period.
 
Duty_A is enlarged of PWM_period – Duty_A to cover the whole PWM period.
Line 34: Line 34:
 
=== 2-phase versus 3-phase modulation ===
 
=== 2-phase versus 3-phase modulation ===
   
[[file:Contributors:STM32_MC_DPWM_p4_1.png|center]]
+
[[file:STM32_MC_DPWM_p4_1.png|center]]
   
 
CCR1,CCR2,CCR3 – applied PWM duty on U,V,W  
 
CCR1,CCR2,CCR3 – applied PWM duty on U,V,W  
   
[[file:Contributors:STM32_MC_DPWM_p4_2.png|center]]
+
[[file:STM32_MC_DPWM_p4_2.png|center]]
   
 
=== DPWM activation via CubeMX setting ===
 
=== DPWM activation via CubeMX setting ===
Line 46: Line 46:
 
To enable the DPWM mode, set to “ON” the DISCONTINUOUS_PWM in parameter settings of Motor Control as shown below.
 
To enable the DPWM mode, set to “ON” the DISCONTINUOUS_PWM in parameter settings of Motor Control as shown below.
   
[[file:Contributors:STM32_MC_DPWM_p5.png|center]]
+
[[file:STM32_MC_DPWM_p5.png|center]]
   
 
=== DPWM firmware changes===
 
=== DPWM firmware changes===
Line 56: Line 56:
 
In the 1-Shunt case, since the A and B stages are used for current sensing in boundary 2 or 3, it is not possible in this specific situation to work in 2-phase SVPWM. The workaround consists to automatically switch in 3-phase during these transition stages.
 
In the 1-Shunt case, since the A and B stages are used for current sensing in boundary 2 or 3, it is not possible in this specific situation to work in 2-phase SVPWM. The workaround consists to automatically switch in 3-phase during these transition stages.
 
{{ReviewsComments|-- [[User:Escoda Michael|Escoda Michael]] ([[User talk:Escoda Michael|talk]]) 20:47, 22 April 2021 (CEST)<br />Please try to put pictures with better resolution}}
 
{{ReviewsComments|-- [[User:Escoda Michael|Escoda Michael]] ([[User talk:Escoda Michael|talk]]) 20:47, 22 April 2021 (CEST)<br />Please try to put pictures with better resolution}}
[[file:Contributors:STM32_MC_DPWM_p6_1.png|center|600px]]  
+
[[file:STM32_MC_DPWM_p6_1.png|center|600px]]  
[[file:Contributors:STM32_MC_DPWM_p6_2.png|center|400px]]
+
[[file:STM32_MC_DPWM_p6_2.png|center|400px]]
   
 
=== DPWM API functions ===
 
=== DPWM API functions ===
Line 74: Line 74:
 
Dynamically moving from 3-phase modulation to 2-phase modulation:
 
Dynamically moving from 3-phase modulation to 2-phase modulation:
 
* At 10W:
 
* At 10W:
[[file:Contributors:STM32_MC_DPWM_p8_1.jpg|center]]
+
[[file:STM32_MC_DPWM_p8_1.jpg|center]]
 
* At 50W:
 
* At 50W:
[[file:Contributors:STM32_MC_DPWM_p8_2.jpg|center]]
+
[[file:STM32_MC_DPWM_p8_2.jpg|center]]
 
Legend:
 
Legend:
 
Ch1: Current (Ia)
 
Ch1: Current (Ia)
Line 86: Line 86:
   
 
Can start successfully:
 
Can start successfully:
[[file:Contributors:STM32_MC_DPWM_p9.jpg|center]]
+
[[file:STM32_MC_DPWM_p9.jpg|center]]
   
 
<noinclude>
 
<noinclude>