Space vector Modulation#
-
struct uz_DutyCycle_t#
Struct for the three DutyCycles for a three-phase-system.
-
struct uz_DutyCycle_2x3ph_t#
-
struct uz_DutyCycle_3x3ph_t#
-
struct uz_DutyCycle_t uz_Space_Vector_Modulation(uz_3ph_dq_t v_ref_Volts, float V_DC_Volts, float theta_el_rad)#
Generates a DutyCycle from dq-reference voltages via Space Vector Modulation for a carrier based PWM generation.
- Parameters:
v_ref_Volts – reference voltages in Volts (e.g. from current controller)
V_dc_volts – DC-Link voltage in volts
theta_el_rad – electrical rotor angle in rad
- Returns:
struct uz_DutyCycle_t generated DutyCycles
Example#
1#include "uz/uz_Space_Vector_Modulation/uz_space_vector_modulation.h"
2int main(void) {
3 float V_DC_Volts = 24.0f;
4 float theta_el_rad = 100.0f;
5 uz_3ph_dq_t v_input_Volts = {.d = 5.0f, .q = 8.0f, .zero = 0.0f};
6 struct uz_DutyCycle_t output = uz_Space_Vector_Modulation(v_input_Volts, V_DC_Volts, theta_el_rad);
7}
Description#
Generates a DutyCycle from dq-reference voltages via Space Vector Limitation for a carrier based PWM generation. This is realized according to [[1]] . Further information can be found there.
Any arbitrary stator voltage vector can be produced from the eight standard vectors, which represent the eight possible logic states of a three phase voltage source inverter.
\(U_0\) |
\(U_1\) |
\(U_2\) |
\(U_3\) |
\(U_4\) |
\(U_5\) |
\(U_6\) |
\(U_7\) |
|
---|---|---|---|---|---|---|---|---|
A |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
B |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
C |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
\(U_S\) is achieved by vectorial addition of the two boundary vectors \(U_L\) and \(U_R\) in the directions of the standard vectors. This is achieved by modulating the on/off time of the two closest standard vectors and/or the two zero-voltage vectors (\(U_0, U_7\)). E.g. for the example provided in figure Fig. 300, a modulation between \(U_1, U_2\) and \(U_0\)/ \(U_7\) is required. Depending on the location of \(U_S\), the boundary vectors can be directly calculated from the \(\alpha\) and \(\beta\) voltages.
\(|U_R|\) |
\(|U_L|\) |
||
---|---|---|---|
\(|S_1|\) |
\(|Q_1|\) |
\(|U_{\alpha}| - \frac{1}{\sqrt{3}}|U_{\beta}|\) |
\(\frac{2}{\sqrt{3}}|U_{\beta}|\) |
\(|S_2|\) |
\(|Q_1|\) |
\(|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\) |
\(-|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\) |
\(|S_2|\) |
\(|Q_2|\) |
\(-|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\) |
\(|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\) |
\(|S_3|\) |
\(|Q_2|\) |
\(\frac{2}{\sqrt{3}}|U_{\beta}|\) |
\(|U_{\alpha}| - \frac{1}{\sqrt{3}}|U_{\beta}|\) |
\(|S_4|\) |
\(|Q_3|\) |
\(|U_{\alpha}| - \frac{1}{\sqrt{3}}|U_{\beta}|\) |
\(\frac{2}{\sqrt{3}}|U_{\beta}|\) |
\(|S_5|\) |
\(|Q_3|\) |
\(|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\) |
\(-|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\) |
\(|S_5|\) |
\(|Q_4|\) |
\(-|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\) |
\(|U_{\alpha}| + \frac{1}{\sqrt{3}}|U_{\beta}|\) |
\(|S_6|\) |
\(|Q_4|\) |
\(\frac{2}{\sqrt{3}}|U_{\beta}|\) |
\(|U_{\alpha}| - \frac{1}{\sqrt{3}}|U_{\beta}|\) |
Depending on the current sector and quadrant, the appropriate boundary vectors \(U_L\) and \(U_R\) will be calculated and converted into DutyCycles. The DutyCycles are limited with the Saturation function to 1, respectively 0.