3.3.22.3 mcPwmI_PulseWidthModulation
C
/* PWM Modulator */ mcPwmI_PulseWidthModulation( const tmcPwm_Parameters_s * const pParameters, const float32_t uBus, const tmcTypes_AlphaBeta_s * const pUalphaBeta, int16_t * const pDuty )
Summary
This function performs the PWM modulation
Description
This function calculates the PWM duty cycles for a three-phase inverter based on the input voltage and modulation index. It determines the appropriate sector and sets the duty cycles for each phase to achieve the desired output voltage vector.
The following steps summarize the operation of
mcPwmI_PulseWidthModulation
:- Reads the parameter from the PWM module data structure.
- Checks the module state and calculates the magnitude of the reference voltage vector using αβ frame reference voltages.
- Defines the modulation index from the bus voltage, bus utilization factor, and reference voltage, then checks it against limits and updates the modulation index.
- Normalizes the input reference voltages using the updated modulation index and determines the voltage space vector sector location.
- For each sector, calculates the active vector times and the corresponding PWM timings for the three phases
- Ensures the calculated duty
cycles are within the allowable range using the
UTIL_SaturateS16
function.
Precondition
The PWM modulator must be initialized and enabled.
Parameters
Param | Description |
---|---|
pParameters | A pointer to the PWM modulator parameter structure |
uBus | DC bus voltage value |
pUalphaBeta | A pointer to the structure containing the alpha and beta components of the voltage vector |
pDuty | A pointer to a variable where the where the calculated duty cycles for the three phases will be stored. |
Returns
None
Example
// Define the pwm modulator data structure tmcPwm_Parameters_s pwmParameters; tmcTypes_AlphaBeta_s uAlphaBeta = { .alpha = 0.5f, .beta = 0.5f }; int16_t dutyCycles[3]; float32_t busVoltage = 24.0f; /* PWM Modulator */ mcPwmI_PulseWidthModulation(&pwmParameters, busVoltage, &uAlphaBeta, dutyCycles);
Remarks
None.