This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280025C:限制栅极驱动器工作的 PWM 占空比

Guru**** 2416110 points
Other Parts Discussed in Thread: DRV8300

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1128530/tms320f280025c-limit-pwm-duty-cycle-for-gate-driver-to-work

器件型号:TMS320F280025C
主题中讨论的其他器件:DRV8300

您好!

我尝试在通用电机控制实验室中从 MotorControl SDK 中了解如何限制 PWM 占空比。

我将 DRV8300与自举电路搭配使用、我想将 PWM 占空比限制为98%、这样就可以了

自举电路将始终可靠工作。 我找到了以下函数、其中应用了 PWM、但我还无法实现

如何在不改变行为的情况下限制它。

static inline void
HAL_writePWMData(HAL_MTR_Handle handle, HAL_PWMData_t *pPWMData)
{
    HAL_MTR_Obj *obj = (HAL_MTR_Obj *)handle;

    float32_t period = (float32_t)(EPWM_getTimeBasePeriod(obj->pwmHandle[0])); 

    uint16_t pwmCnt;

    for(pwmCnt=0; pwmCnt<3; pwmCnt++)
    {
      // compute the value
        float32_t V_pu = -pPWMData->Vabc_pu.value[pwmCnt];      // Negative
        float32_t V_sat_pu = __fsat(V_pu, 0.5f, -0.5f);           // -0.5~0.5
        float32_t V_sat_dc_pu = V_sat_pu + 0.5;                 // 0~1.0
        pPWMData->cmpValue[pwmCnt]  = (int16_t)(V_sat_dc_pu * period);  //

        if(pPWMData->cmpValue[pwmCnt] < pPWMData->minCMPValue)
        {
            pPWMData->cmpValue[pwmCnt] = pPWMData->minCMPValue;
        }

        // write the PWM data value
        EPWM_setCounterCompareValue(obj->pwmHandle[pwmCnt],
                                    EPWM_COUNTER_COMPARE_A,
                                    pPWMData->cmpValue[pwmCnt]);

        EPWM_setCounterCompareValue(obj->pwmHandle[pwmCnt],
                                    EPWM_COUNTER_COMPARE_B,
                                    pPWMData->cmpValue[pwmCnt]);
    }

    return;
} // end of HAL_writePWMData() function

那么、最小占空比似乎已经受到限制、但不是最大占空比、对吧? 在满负载之前、如何在不改变行为的情况下做到这一点?

我已经尝试使用: float32_t V_sat_pu =__fsat (V_pu、0.49f、-0.49f);但这似乎仍然会改变我的整个周期、这可能是由于校准。

编辑:

当我观察 PWM 占空比时、看起来实际占空比为2500 (20kHz 时)、并会下降以获得更大的功率。 pPWMData->minCMPValue (在通用电机控制示例中为 hal.h 第3256行)是否已经限制了最大占空比、以便自举始终起作用?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    只需更改变量  pPWMData->minCMPValue。 以下代码将 PWM 占空比限制为小于100%。

    if (pPWMData->cmpValue[pwmCnt]< pPWMData->minCMPValue)

    pPWMData->cmpValue[pwmCnt]= pPWMData->minCMPValue;

    实际上、您不需要使用 自举电路限制 DRV8300的 PWM 周期、因为即使电机需要来自逆变器的更高电压输出、每个相位上的 PWM 占空比也不会在很长的时间内为100%占空比。