第3章 PWM调制技术:从原理到实战
各位同学,咱们今天聊聊PWM调制。说实话,PWM这东西看着简单,但里面的门道真不少。我刚开始做电机控制那会儿,觉得不就是个方波嘛,有啥好研究的?结果第一个项目就栽了跟头——电机嗡嗡响,效率还低得可怜。后来才明白,PWM调制的选择,直接决定了你整个驱动系统的成败。
3.1 PWM基本原理
PWM,全称是脉冲宽度调制。说白了,就是通过调整脉冲的宽度,来模拟一个连续变化的电压。
你想想看,我们给电机供电,要么是VCC,要么是GND,没有中间状态。但电机需要的是平滑的电压啊,怎么办?
答案就是:让开关管快速地在导通和关断之间切换。只要切换频率够快,电机的电感就会把这种脉冲信号平滑成连续的电流。
这里有个核心公式:
占空比 = Ton / T × 100%
其中:
Ton = 导通时间
T = PWM周期
占空比50%,等效电压就是VCC的一半。占空比75%,等效电压就是VCC的75%。就这么简单。
关键参数:
- PWM频率:一般无刷电机用10kHz-20kHz。低于人耳听觉范围会有噪音,高于20kHz开关损耗会增大。
- 分辨率:比如8位PWM,占空比可以调0-255级。我建议至少用12位以上,否则低速时电机抖动明显。
3.2 单极性调制与双极性调制
这两种调制方式,是很多新手容易搞混的地方。我当年也踩过坑,咱们一个一个说清楚。
3.2.1 单极性调制
单极性调制,就是在一个PWM周期内,输出电压只在一个方向上变化。要么从0到VCC,要么从0到-VCC。
举个例子:
- 上桥臂用PWM控制,下桥臂常开或常关
- 或者反过来,下桥臂PWM,上桥臂固定
优点:
- 开关损耗小(只有一半的管子在高频切换)
- 电流纹波小
- 电磁干扰相对较低
缺点:
- 动态响应稍慢
- 在过零点附近可能出现电流断续
我的经验:单极性调制适合对效率要求高的场合,比如电动工具、风扇。我在做一款手持吸尘器时,用的就是单极性调制,效率做到了92%以上。
3.2.2 双极性调制
双极性调制就猛了。在一个PWM周期内,输出电压会在VCC和-VCC之间来回切换。也就是说,不管占空比多少,上下桥臂都在高频开关。
比如占空比50%,输出就是正负交替,平均值为0。占空比75%,正的时间多,负的时间少,平均值就是正的。
优点:
- 动态响应快
- 电流连续性好,低速性能好
- 过零点平滑
缺点:
- 开关损耗大(四个管子都在高频切换)
- 电流纹波大
- EMI问题更严重
| 对比项 | 单极性调制 | 双极性调制 |
|---|---|---|
| 开关损耗 | 低 | 高 |
| 电流纹波 | 小 | 大 |
| 动态响应 | 慢 | 快 |
| 低速性能 | 一般 | 好 |
| EMI | 低 | 高 |
| 适用场景 | 高效率、低噪音 | 高动态、伺服控制 |
注意:双极性调制虽然性能好,但发热量很大。我曾经在一个伺服驱动器项目里用了双极性调制,结果MOS管温度直接飙到85度,不得不加了大散热片。所以,选型时一定要算好热预算。
3.3 互补PWM与死区时间设置
这部分是实战中的重中之重。很多电机驱动炸管,都是死区时间没设好。
3.3.1 什么是互补PWM
互补PWM,就是同一桥臂的上下两个管子,一个导通时另一个必须关断。它们的PWM信号是互补的——上管高电平时下管低电平,反过来也一样。
但问题来了:
任何开关管都有导通和关断延迟。上管还没完全关断,下管就导通了——这就是直通短路,瞬间烧管子。
3.3.2 死区时间
死区时间,就是为了避免直通,在两个管子切换时插入的一段「都关断」的时间。
比如:
- 上管关断后,等100ns,再让下管导通
- 反过来也一样
这段等待时间,就是死区时间。
// 伪代码示例:死区时间插入
void PWM_Update(uint32_t duty_cycle) {
// 上管PWM
TIM1->CCR1 = duty_cycle;
// 下管PWM(互补输出)
TIM1->CCR2 = TIM1->ARR - duty_cycle;
// 死区时间由硬件自动插入
// 设置死区时间为 100ns
TIM1->BDTR = 0x0A; // 具体值取决于时钟频率
}
死区时间设置原则:
- 不能太小:小于开关管的关断延迟,就会直通
- 不能太大:死区时间内没有电流流过,会导致波形失真、效率下降
- 一般推荐:取开关管关断延迟的1.5-2倍
3.3.3 实际项目中的死区设置
我曾经在一个项目中,用了IRF540N这种老管子,关断延迟大概80ns。我设了150ns的死区,结果还是炸管了。
查了半天才发现,问题出在PCB布局上——走线太长,寄生电感导致关断时间变长了。后来我把死区调到300ns,才稳定下来。
所以,死区时间不能光看datasheet,还要考虑实际电路板的寄生参数。
我的建议:
- 先按datasheet的关断延迟×2设置死区
- 用示波器看上下管的栅极波形,确保没有交叠
- 逐步减小死区,直到波形开始出现交叠,再回退20%
- 留出安全余量,批量生产时器件参数会有离散性
3.4 总结与避坑指南
好了,咱们把PWM调制技术捋一遍:
- PWM本质:用开关信号模拟连续电压
- 单极性:效率高、纹波小,适合普通应用
- 双极性:响应快、低速好,适合伺服控制
- 互补PWM:必须加死区,否则炸管
- 死区设置:不能只看datasheet,要实测
避坑指南:
我曾经犯过一个低级错误——在代码里手动插入了死区时间,结果发现MCU的定时器硬件本身就支持死区插入。手动插入不仅浪费CPU资源,还容易出bug。所以,能用硬件就别用软件,这是嵌入式开发的铁律。
下一章咱们聊电流采样与检测技术,这是FOC控制的基础。到时候我会分享一个我在电流采样上踩过的坑——采样电阻选型不当,导致整个系统震荡。嗯,到时候细说。