目录
简介
PWM Pulse Width Modulation 脉冲宽度调制,是一个电子工程学的概念,是一种功率控制技术,通过"开关量"的数字控制方式产生模拟量效果,精确地控制平均电压或功率水平。
关键概念
- 周期 T:一个完整信号输出的时间,单位通常是 s
- 频率 f:1 / 周期 T,单位为 Hz。例如一个 1 kHz 的 PWM,其周期 T 为 1 / 1 kHz,即 0.001 s
- 占空比 Duty Cycle(D):一个周期内,高电平占周期 T 的比例,用百分比表示。例如一个周期 4ms,其中高电平占 3ms,低电平占 1ms,则占空比为 75%
PWM 频率是固定的,只变"高电平时间"(脉宽),通过占空比来控制"平均输出"。
工作原理

通过开关快速打开关闭来模拟连续的电压 / 功率。占空比越大 → 平均电压越高 → 负载得到的功率越大。
假设现在有电压 V 为 10v,PWM 输出只有高 1 和低 0,平均输出电压的公式为 V_avg = V * D,
当 D 为 0% 时,V_avg = V * D = 10v * 0 = 0v
当 D 为 50% 时,V_avg = V * D = 10v * 0.5 = 5v
当 D 为 100% 时,V_avg = V * D = 10v * 1 = 10v
如何产生 PWM

以硬件实现方式为例,在 mcu 内部有一个计数器,该计数器有两个关键寄存器,分别是:
- 自动重装载寄存器(ARR):它设定了计数器的上限值,从根本上决定了PWM信号的周期 (T) 和频率。计满一圈的时间 = 计数周期 * 计数一次的时间
- 比较寄存器(CCR):它设定了一个比较值,决定了何时翻转电平,从而定义了PWM信号的占空比 (Duty Cycle)
计数器从0开始,逐个周期地向上计数。在此过程中,它会不断将当前计数值 CNT 与 CCR 和ARR 中的设定值进行比较。
- CNT < CCR:引脚输出高电平(假设设置为正逻辑)
- CCR <= CNT <=ARR:引脚输出低电平
- CNT == ARR:计数器自动归零,并开始下一轮计数,周而复始
常见应用
- LED 调光:改变占空比,改变平均电流,从而改变亮度
- 电机调速:改变占空比,改变平均电压/功率,控制转速(尤其是直流电机)
PWM 的优势
- 效率高:只有开(导通)和关(关断)两种状态
- 抗噪能力强:信号是满幅度的数字方波(0V到VCC),而不是微弱的模拟电压
- 精准控制:通过占空比实现精准控制
- 兼容数字系统
PWM 的劣势
- 自身高频,大电压电流,影响附近敏感电路