4、双极性PWM调制:双极性调制原理、双极性PWM实现方式、双极性PWM的优缺点、与单极性对比

好,咱们今天聊聊双极性PWM调制。说实话,这个拓扑在电机控制里非常经典,很多入门的朋友一开始接触的就是它。我个人习惯把双极性调制看作是PWM的“基础款”——简单、直接,但代价也很明显。

4.1 双极性调制原理

双极性调制的核心思想,说白了就是一句话:在任意一个开关周期内,桥臂上的两个开关管始终处于互补导通状态。你想想看,这就意味着电机的相电压要么是+Vdc,要么是-Vdc,不存在“零电压”这个中间状态。

为什么会这样?因为双极性调制没有“死区时间”的概念(或者说,死区时间极短,不影响电压极性)。上管导通时,下管必须关断;下管导通时,上管必须关断。两个管子永远一开一关,交替进行。

我记得刚入行那会儿,有个老工程师跟我说:“双极性调制就像跷跷板,不是左边高就是右边高,永远没有平的时候。”这个比喻很形象。电机的相电压波形,就是一个正负交替的方波,占空比决定了正负脉冲的宽度比例。

关键公式:

输出电压平均值:Uout = (2D - 1) × Vdc

其中D为占空比(0~1),Vdc为母线电压。

当D=0.5时,Uout = 0,但此时相电压仍然在+Vdc和-Vdc之间来回跳变。

4.2 双极性PWM实现方式

实现方式其实不复杂。我一般用定时器产生三角载波,然后用调制波(正弦波或直流电平)与载波比较。比较结果直接决定上下管的开关状态。

下面给一个典型的实现代码(基于STM32的通用定时器):

// 双极性PWM配置示例(STM32 HAL库)
// 假设TIM1为中央对齐模式,ARR=1000

void BipolarPWM_Init(void)
{
    TIM_OC_InitTypeDef sConfigOC = {0};
    
    // 配置CH1为上管PWM,CH1N为下管互补PWM
    sConfigOC.OCMode = TIM_OCMODE_PWM1;
    sConfigOC.Pulse = 500;  // 初始占空比50%
    sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
    sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
    sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
    sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
    sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
    
    HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);
    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
    HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);
}

// 更新占空比函数
void BipolarPWM_SetDuty(uint16_t duty)
{
    // duty范围:0~1000,对应占空比0%~100%
    __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, duty);
}

个人经验:我在做低压伺服驱动器时,发现双极性调制对死区时间非常敏感。虽然理论上不需要死区,但实际功率管存在关断延迟,所以还是得加一点死区(通常500ns~2us)。否则上下管直通,MOS管瞬间冒烟——我曾经就烧过一块板子,教训深刻。

4.3 双极性PWM的优缺点

咱们客观分析一下,双极性调制到底好在哪,不好在哪。

优点

  • 控制简单:逻辑清晰,一个比较器就能搞定。不需要复杂的死区补偿算法。
  • 动态响应快:因为电压始终在正负之间切换,电流变化率大,电机对指令的响应速度很快。
  • 零位附近线性度好:在占空比50%附近,输出电压与占空比呈完美线性关系,没有死区效应。

缺点

  • 电流纹波大:这是最头疼的问题。因为电压幅值始终是Vdc,电流纹波幅值 = (Vdc - E) × Ton / L,比单极性调制大得多。
  • 开关损耗高:每个开关周期内,所有功率管都在高频开关,损耗是单极性的两倍左右。
  • 电磁干扰严重:电压跳变幅度大(从+Vdc到-Vdc,变化2Vdc),对外的EMI辐射很厉害。

避坑指南:我曾经在一个大功率项目中(母线电压600V)尝试用双极性调制,结果EMC测试死活过不了。后来换成单极性+软开关技术才搞定。所以,母线电压超过300V时,建议慎重考虑双极性方案

4.4 与单极性对比

咱们直接上表格,一目了然:

对比项 双极性PWM 单极性PWM
相电压波形 ±Vdc交替 0、+Vdc、-Vdc三种状态
电流纹波 大(约单极性的2倍)
开关损耗 高(所有管高频开关) 低(部分管低频开关)
EMI 严重 较好
控制复杂度 简单 稍复杂(需处理死区)
动态响应 稍慢
零位线性度 存在死区效应
适用场景 低压小功率、对成本敏感 中高压、对纹波和EMI有要求

你想想看,如果项目对电流纹波要求不高,比如玩具电机、风扇驱动,双极性调制完全够用,成本还低。但如果是精密伺服、医疗设备,那还是老老实实用单极性吧。

嗯,这里要注意一点:双极性调制并不是一无是处。在低压(12V~48V)小功率场景下,它的简单可靠反而是最大优势。我见过很多工业泵、风机驱动,用了十几年双极性方案,从来没出过问题。

最后总结一下我的个人建议:

  • 如果母线电压低于100V,且对纹波不敏感 → 大胆用双极性
  • 如果母线电压在100V~300V之间 → 需要评估EMI和损耗
  • 如果母线电压超过300V → 建议优先考虑单极性或三电平

下一章咱们聊聊单极性PWM的细节,到时候你会更清楚为什么在某些场合必须放弃双极性。