[麦麦茶水间] 【每周分享】PWM做DAC输出遇到纹波

[复制链接]
64|3
happypcb 发表于 2026-7-13 14:52 | 显示全部楼层 |阅读模式
有一个项目需要输出一个0到3.3V的模拟电压,精度要求不太高,1%以内就可以。手头没有DAC,就用PWM加RC滤波做了一个简易的DAC。
PWM频率选的是10kHz,RC滤波的截止频率选在1kHz左右,算下来电阻10K,电容0.1uF。理论上纹波应该很小,实际测出来却有二三十毫伏的纹波。
用示波器看PWM输出引脚,波形很标准,方波上升沿下降沿都很陡。但是经过RC滤波之后的波形纹波确实大了。一开始怀疑是电容的ESR太大,换了一个钽电容,纹波小了一点但还是有。
后来发现,纹波的频率等于PWM频率,但是幅度跟PWM的占空比有关系。占空比在50%附近的时候纹波最大,0%和100%的时候纹波最小。这是因为RC滤波对脉宽调制信号的响应是有限的,占空比变化时电容充放电的时间常数固定,纹波幅度跟脉宽有关。
解决方法是提高PWM频率。把PWM频率从10kHz提高到了100kHz,RC滤波截止频率不变,纹波幅度大概降低了10倍。但是PWM频率太高了也不行,MCU的定时器会消耗更多资源,而且如果后面的负载是模拟输入,频率太高了可能会耦合到其他地方。
另一个改进是加了二级RC滤波。两个RC串联,截止频率更低,纹波进一步减小。代价是响应速度变慢了,输出稳定需要的时间变长了。
还有一个细节,PWM输出引脚的驱动能力有限,直接接RC滤波会影响输出电平的准确性。在PWM引脚和RC滤波之间加了一个缓冲器,隔离了负载对PWM输出电平的影响。
用PWM做DAC成本低实现简单,适合精度要求不高的场合。如果要求高还是得用专用的DAC芯片,示波器看波形的时候就知道了。

hjl2832 发表于 2026-7-14 08:25 | 显示全部楼层
PWM做DAC,后级要想纹波小,要用LC,RC不行的,想想DC-DC降压电路,斩波器是上的LC。
风吻过你的不羁 发表于 2026-8-4 11:58 | 显示全部楼层
楼主的分享很有帮助,我之前也遇到过类似的问题。加缓冲器这个点子不错,可以减少负载对输出电平的影响。
风吻过你的不羁 发表于 2026-8-4 11:58 | 显示全部楼层
楼主的分享很有帮助,我之前也遇到过类似的问题。加缓冲器这个点子不错,可以减少负载对输出电平的影响。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1904

主题

8361

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部
0