PWM模拟电压:数字信号“平均”一下,就能变成模拟量

短文标题:PWM模拟电压:数字信号"平均"一下,就能变成模拟量

你有没有想过一个问题:GPIO只能输出0V或3.3V,怎样才能让它输出1.65V?答案是:PWM(脉冲宽度调制)。在足够短的时间内,让引脚50%时间输出3.3V、50%时间输出0V。外接的RC低通滤波器会把高频分量滤掉,负载(比如LED、电机)感受到的是平均电压------1.65V。占空比 = 高电平时间 / 周期。50%占空比 → 平均电压 = 50% × 3.3V = 1.65V。

**那个"平均"的物理原理,**PWM不是真的产生了1.65V,而是利用物理系统的惯性:

  • 人眼的视觉暂留:LED快速闪烁,眼睛看到的平均亮度
  • 电机的机械惯性:PWM驱动电机,转速由平均电压决定
  • RC滤波器的积分作用:电阻电容将PWM波形平滑成直流电压

这就是"用时间换电压"------调整高低电平的时间比例,产生任意中间电压。

**那个"占空比"与"分辨率",**PWM的分辨率取决于定时器的位数。

  • 8位定时器:256级占空比(ARR=255)
  • 16位定时器:65536级占空比(ARR=65535)

公式:平均电压 = VCC × (CCR / ARR),ARR越大,电压调节越细腻。

**那个"频率"的选择,**PWM频率不能太低:LED会闪烁(人眼>100Hz),电机会抖动(机械响应延迟),音频会产生啸叫(人耳20Hz~20kHz)。频率也不能太高:MOS管开关损耗会增加(每开一次/关一次都要消耗能量),且负载可能呈感性,阻抗随频率变化。常用经验值:

  • LED调光:200Hz~1kHz
  • 电机调速:10kHz~20kHz(避开人耳最敏感的2kHz~5kHz)
  • 数字电源:50kHz~100kHz以上

**那个"RC滤波"的平滑,**如果想得到真正的直流电压(如DAC输出),需要在PWM输出后加低通滤波器(电阻+电容)。截止频率f_c = 1/(2πRC),应远低于PWM频率。例如PWM=10kHz,RC截止频率取1kHz:R=1kΩ,C=1/(2π×1000×1000)≈0.16μF,取0.1μF即可。注意输出端加运放缓冲驱动,否则负载会改变RC滤波特性。

**那个"硬件PWM"的优势,**用定时器中断模拟PWM,CPU负载极高(每周期进中断)。

STM32的通用定时器自带硬件PWM:只需设置ARR和CCR,启动定时器,硬件自动翻转引脚,CPU占用率≈0。

这个故事的启示, 为什么PWM能模拟模拟电压?因为物理系统有"惯性"------人眼、电机、RC电路,都会对输入做"平均"。这就是数字世界通往模拟世界的桥梁。**没有昂贵的DAC,一个定时器就能输出模拟电压。写在最后,**下表快速总结PWM的应用:

(本文灵感源于于振南《新概念ARM32单片机》教程第6.6节"通用定时器 PWM 原理与数字模拟信号转换",感谢作者将PWM模拟电压的精髓讲得如此通透。)

如果您觉得这个故事对您有启发,欢迎点赞、转发,让更多工程师看到这个藏在"平均电压"背后的PWM智慧。

相关推荐
极客 - L U12 小时前
卡尔曼滤波从零到精通
c语言·数据结构·单片机·嵌入式硬件·mcu
AMASENSYS艾马斯12 小时前
变频器滤波器选型与EMC合规建议
驱动开发·单片机·其他·硬件工程·精益工程
码小文13 小时前
CAM350使用笔记(6)---Gerber文件铺铜间距检查
嵌入式硬件·cam350软件·cam350使用笔记
Zw-awa14 小时前
编译器工具链:GCC、Clang、MSVC、ICC、armclang
stm32
Yiran_G15 小时前
双频 Wi-Fi 6 + 蓝牙 5.4:无声讯通 WS8712 模组的开发与集成要点
网络·嵌入式硬件·物联网·智能家居
凯基迪科技15 小时前
STM32G系列(G0/G4)芯片解密程序提取RDP读保护解析
网络·stm32·安全
光子物联单片机16 小时前
ESP32传感器模块编程实践(一)DIY智能WIFI视频控制小车
嵌入式硬件·esp32·智能硬件·硬件
2501_9226395816 小时前
率能半导体 SS6628E直流双向马达驱动芯片:20V/7A,覆盖电子锁、玩具、无线充电、机器人四大应用场景
单片机·嵌入式硬件·硬件工程
硅基造物主16 小时前
STM32 从 0 到 1 做智能家居(五):工程结构与代码骨架
stm32·单片机·嵌入式硬件·智能家居
深圳老胡16 小时前
STM32F103 硬件 SPI 与软件 IO 模拟 SPI 最高速度差异详解
笔记·stm32·单片机·代码规范·1024程序员节