电子产业一站式赋能平台

PCB联盟网

搜索
查看: 34|回复: 0
收起左侧

STM32定时器输出PWM做DAC

[复制链接]

454

主题

454

帖子

2396

积分

三级会员

Rank: 3Rank: 3

积分
2396
发表于 2020-3-10 22:56:00 | 显示全部楼层 |阅读模式
上一节介绍了STM32定时器产生PWM波的用法,PWM波有很多种用途,如控制LED的亮度,控制电机的转速等。还有一个常用的功能就是做DAC(数模转换器)用。有时候,项目中可能会需要输出多路电压信号,而外部的多路DAC芯片会增加不少成本,如果对输出信号的精度等要求不高,这时可以用PWM??加低通滤波器的方式实现DAC的功能。
原理
     根据PWM的波形,可以用分段函数来表示:

lb10zdy4b0e64048945934.jpg

lb10zdy4b0e64048945934.jpg

PWM函数表达式
    将该函数展开为傅里叶级数,可以得到:

cu5qrg0pkk364048946034.jpg

cu5qrg0pkk364048946034.jpg

PWM波函数展开傅里叶级数
    可以看到,上式中的第一项为直流分量,第二项为一次谐波,第三项为高次谐波的和。用低通滤波器将谐波部分滤掉后,只剩直流分量,即为需要输出的电压值。直流分量的电压取决于n的变化,当n从0变化到N时,对应的电压值为VL变化到VH。
STM32设计
    对于STM32来说就是占空比0~100%对应电压0~3.3V(电源电压)。因此DAC的电压分辨率就等于占空比的分辨率,占空比的调节范围为0~Period(计数周期),Period越大,分辨率就越高。但是由于单片机主频是一定的,Period越大,PWM的频率就越低,就需要设计更低截止频率的低通滤波器才可以将谐波分量滤除干净,但截止频率越低,DAC的响应速度就越慢。因此,DAC的分辨率、PWM的频率、低通滤波器的截止频率、DAC的响应速度这些参数都是相互关键的,实际应用中,要根据具体需要来进行设计。
校准
    用PWM做DAC存在一个问题就是其一致性较差。由于输出电压的精度主要取决于单片机电源电压VDD的精度,而一般的电源芯片电压精度都不高。这里提供一种自动校准的方法来提高DAC精度和一致性:
    当单片机有基准电压VREF引脚时,该引脚接一个外部基准电压芯片,单片机ADC采集电源电压,计算出其准确值,并根据电源电压和需要输出的电压计算占空比。
    当单片机没有基准电压引脚时,在单片机的ADC端口接一个外部基准电压芯片,同时采集基准电压和电源电压,用基准电压来校准电源电压,再根据电源电压和需要输出的电压计算占空比。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表