PWM“平均电压”:数字方波骗过物理系统变模拟
短文标题:PWM“平均电压”:数字方波骗过物理系统变模拟

你有没有想过一个问题:GPIO只能输出0V或3.3V,怎么能让LED有50%亮度、电机有50%转速?PWM(脉冲宽度调制):快得足够让物理系统“反应不过来”,只感受到平均值。这就是数字信号通往模拟世界的桥梁。PWM的核心公式
- 占空比 = 高电平时间 / 周期(0%~100%)
- 平均电压 = VCC × 占空比
50%占空比 → 平均1.65V(50%亮度/转速),PWM不产生中间电压,它让物理系统“平均”掉方波。三类“惯性”让PWM生效,PWM能“欺骗”不同负载,靠各自的物理惯性:
没有这些“惯性”,PWM只是一串方波。RC滤波:从PWM到真模拟电压,PWM + RC低通滤波 = 简易DAC。RC截止频率 f_c = 1/(2πRC),应远低于PWM频率(如PWM=10kHz时f_c选1kHz)。输出纹波 ≈ VCC × (1 - e^(-T_pwm/(RC))) 或 ΔV = VCC × T_pwm/(RC)(近似)。降低纹波可增加RC级数(二阶滤波)。加运放缓冲,避免负载影响滤波特性。频率怎么选?
频率太低:LED闪烁、电机抖动、音频啸叫。频率太高:开关损耗增大,MOS管发热。分辨率:占空比的细腻度,PWM分辨率由定时器位数决定:
- 8位(ARR=255):256级占空比
- 16位(ARR=65535):65536级占空比
实际有效分辨率受系统噪声和时钟精度限制,16位定时器高频时步进受限(如72MHz/65536≈1.1kHz,低占空比步进较大)。硬件PWM vs 软件模拟
- 软件PWM:GPIO+定时器中断翻转,CPU负载高(每周期进中断)
- 硬件PWM:定时器比较输出,自动翻转,CPU占用率≈0
STM32每个通用定时器有4个独立通道,可同时输出4路不同占空比的PWM。
这个故事的启示,PWM是数字和模拟世界的桥梁。用“快”换“真”——足够快,物理系统就只认平均值。没有昂贵的DAC,一个定时器就能输出模拟电压。写在最后,PWM不是真的模拟信号,但“足够像”。LED呼吸灯、电机调速、DAC输出,都可以用PWM搞定。用数字引脚,控制模拟世界。
(本文灵感源于于振南《新概念ARM32单片机》教程第6.6节“通用定时器 PWM 原理与数字模拟信号转换”。)
觉得有用?点赞、转发,让更多人看懂PWM“数字变模拟”的硬核原理。

更多推荐



所有评论(0)