打印
[热门应用]

chipon应用-采用PWM功能的低通滤波实现模拟DAC输出

[复制链接]
4116|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
merry_zsp|  楼主 | 2018-2-28 09:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 概述

目前大多数单片机集成有ADC模块,可实现10位或12位分辨率,甚至更高。往往在模拟控制上还需要外部器件通过串行口实现模拟量的输出,这样不仅成本高,产品往往不能做的更小。然而PWM成为越来越多芯片的标配,8位的分辨率比较常见,很多新品支持增强型的16位分辨率,PWM模块除了可显示占空比的电机控制外,还能起到LED调光控制。PWM波形可分解为一个直流量、与PWM同频率的频率分量和大量偶次谐波,其中这个直流分量就是供电电压乘以PWM占空比,因此可以针对PWM进行滤波获取到幅度不同的电压值,从而实现DAC功能。

沙发
merry_zsp|  楼主 | 2018-2-28 09:37 | 只看该作者
2 实现介绍2.1 PWM实现原理示意图

图一、经典PWM控制示意图

PWM模块采用计数定时的原理,每定时到一个设定的最大值将IO口置高,计时值清零,继续定时到设定的翻转值将IO口置低。根据设定值的不同可以实现不同周期和不同占空比的脉冲,如下图示例所示。


图二、基于T18PWM输出波形

假设供电电源为5 V,占空比为50%,则对应的是一个幅度为2.5 V的模拟信号;占空比为80%,则对应的是一个幅度为4 V的模拟信号。占空比与输出电压形成一一对应关系,从而可以实现PWM到DAC的转换。


使用特权

评论回复
评论
coli 2022-9-20 15:35 回复TA
图片全没了,加载不出来 
板凳
merry_zsp|  楼主 | 2018-2-28 09:37 | 只看该作者
2.2分辨率

一般情况下分辨率是总的计数值Rcounts = Lcounts;

其中Rcounts是以计数值为单位的分辨率Lcounts是计数器的总计数值。

例如对8bit DAC计数器的长度为8 bits或者256个计数值。那么分辨率也就是8bits或者256。如果PWM计数器的长度为512个计数值最小的占空比为2个计数值,那么PWM DAC的分辨率仍然是8bits或者256。


使用特权

评论回复
地板
merry_zsp|  楼主 | 2018-2-28 09:38 | 只看该作者
2.3 正弦波的采样实现 PWM信号的频率也就是DAC的更新频率n 是所需的比特分辨率。如果DAC来同步产生一个200Hz的正弦波。由抽样定理可得最低的抽样频率应该为400Hz。但是通常情况下PWM信号的频率要远高于Nyquist抽样速率。这是因为PWM信号的频率越高对滤波器的阶数就要求越低合适的滤波器越容易实现。通常抽样速率取Nyquist速率的16或者32倍。一个正弦波用32个抽样值生成。所以每秒要抽样200×32=6400也就是说=6.4KHz针对8位的PWM每完成一次抽样要计数256所以所需的时钟频6.4*256=1.6384M

使用特权

评论回复
5
merry_zsp|  楼主 | 2018-2-28 09:38 | 只看该作者
2.4低通滤波系统的实现

PWM输出的高电平记为VH,低电平记为VL,理想情况下VL等于0,但实际往往不等,也是应用中产生误差的主要原因。将PWM波形用分段式函数表达结果为:

F(t)=VH  kNT<=t<=kNT+nT

F(t)=VL  kNT+nT<=t<=NT+kNT           nPWM一个周期内高电平的计数脉冲个数,这里如PWM1LNPWM一个周期的计数脉冲个数。

表1给出了不同Nn的情况下的分辨率

PWM的参数N
PWM参数n 最小变化量
DAC分辨率/位
256
1
8
1024
1
10
4096
1
12
16348
1
14
65536
1
16
65536
2
15
65536
4
13
表一、PWM和DAC分辨率对应关系

可以看出N越大DAC的分辨率越高但是NT也越大,即 PWM的周期也越大,相当于1次谐波的频率也越低需要截止频率很低的低通滤波器。DAC输出的滞后也将增加。一种解决方法就是使T减少,即减少单片机的计数脉冲宽度。这往往需要提高单片机的工作频率,达到不降低1次谐波频率的前提下提高精度。在实际中T的减少受到单片机时钟和PWM后续电路开关特性的限制。如果在实际中需要微秒级的T,则后续电路需要选择开关特性较好的器件以减少PWM波形的失真。

PWM波的VH和VL受到MCU输出高低电平的限制,一般情况下VL不等于0V,VH也不等于VCC。而且该数值随着负载电流和温度而变化。输出精度只能跟随输出的VL和VH。而且随负载电流和环境温度变化,精度很难保证。一般电路的变化部分精度不高,没有必要采用高分辨率的PWM输出,8位即可。一般的RC滤波电路使DAC输出的负载能力也比较差,只适合与具有高输入阻抗的后续电路连接。因此简单RC电路只能用在对DAC输出精度要求不高、负载很小的场合。对精度和负载能力要求较高的场合需要对电路进行改进,增加基准电压、负载驱动等电路。

一般的低通滤波设计采用RC滤波,器件结构简单,实现低功耗,尽量避免采用有源器件。

用于交流信号的滤波器是一个双极点级联RC滤波器。如果滤波器阶数过高可以采用提高的抽样频率的办法来降低滤波器阶数。滤波器的截至频率fc由fc=1/(2PiRC)来计算,如果截至频率很接近信号带宽边沿,将会导致相当大的衰减。因此为了减小滤波器的衰减截至频率应该大于信号带宽边沿,但是要远小于PWM信号的频率。


图三、滤波仿真单路图

图三所示为3个PWM模拟DAC的仿真电路图,输出分别为O1、O2和O3,它们之间的单元结构都是相同的,区别仅在于单元级数依次递增。初期的实验表明PWM占空比为50%时输出的纹波基本达到最大,而整个波形稳定的时间没有明显地随占空比的不同而变化。因此在这里取PWM的占空比为50%,频率为10 kHz,上升时间和下降时间均取1 ns,高电平为5 V,低电平0 V,而相应的滤波电路的一个基本RC单元的截止频率约为1 kHz。

经过测试显示,O1的纹波呈现正弦波形,峰峰值780 mV,幅度390 mV,直流平均值为2.50 V,电压稳定时间约为1.0 ms;O2的纹波呈现正弦波形,峰峰值53 mV,幅度26.5 mV,直流平均值为2.50 V,电压稳定时间约为2.5 ms;O3的纹波呈现正弦波形,峰峰值4 mV,幅度2 mV,直流平均值为2.50 V,电压稳定时间约为5.5 ms。

DAC的精度(Accuracy)是指DAC的输出与理想情况的偏差。示波器显示纹波基本对称,可以得到各个电路对应的精度就是纹波的幅度,即O1的精度A1为390 mV,O2的精度A2为26.5 mV,O3的精度A3为2 mV。可见随着滤波级数的增加DAC精度显著改善。


使用特权

评论回复
6
merry_zsp|  楼主 | 2018-2-28 09:39 | 只看该作者
2.5高精度DAC驱动电路

图四、基于PWM高精度DAC电路

图4的电路在普通RC的基础上增加了开关管T1、基准电压源LM3365和输出放大器TLV2472。MCU从A点输出的PWM波驱动T1的栅极T1按照PWM的周期和占空比进行开关。T1为低导通电阻和开关特性好的开关管,如IRF5304其典型导通电阻小于0.16Ω,而截止电阻却非常大,与T1并联的为基准电压LM3365。图4的B点将得到理想的PWM波形,即VH=5V、VL=0V。波形为方波。A点的PWM波经过整形得到B点理想PWM波,B点的PWM波再经过两级阻容滤波在C点得到直流分量,即MCU输出的调制PWM波在C点得到解调,实现了DAC功能。C点的电压为(5×n/N)V,即为0~5V之间的电压。由于放大器A1的输入阻抗很大,二级阻容滤波的效果很好,C点的电压纹波极小,满足高精度要求。输出放大器采用TLV2472工作在电压跟随器方式,他是一个RailtoRail放大器,他的输出电压的跨度几乎等于电源电压幅度,因此可以得到0 V的电压输出。克服了一般放大器如LM324,TL071等输出电压跨度比电源电压范围小1 V左右这一缺点。图4的电源电压为6 V,在MCU接电源电压中串联了二极管,起降压的作用。因为一般的MCU工作电源范围为4.5~5.5V之间。采用电源电压为6 V是为了保证LM336 5能正常工作。该电路采用的电路和电容没有特殊的要求,很容易调试。由于PWM波很容易通过MCU的软件进行控制,即使电路稍微有些系统误差,也很容易通过软件进行校正。因此可以得到高精度的DAC输出。


使用特权

评论回复
7
merry_zsp|  楼主 | 2018-2-28 09:39 | 只看该作者
3 设计注意事项

1、 低通滤波实现的是对IO的占空比脉冲滤波,而脉冲的幅度为工作电压,因此需要可靠稳定的电源设计,或者增加基准电压,负载驱动等电路。

2、首次输出较大幅度的模拟量时,虽然占空比满足了稳态需求,但稳态需要一个建立的时间间隔。

3、性能指标却无法与集成的DAC相比。滤波器环节对于PWM模拟DAC的性能参数是至关重要的,在不考虑PWM的位数限制时,滤波级数越高DAC精度越高,然而DAC的建立时间也会显著增加。这两个主要参数分别取决于滤波系统对于高频成分的频率响应和对于直流分量的阶跃响应。

使用特权

评论回复
8
紫阳真人| | 2018-10-26 11:26 | 只看该作者
mark

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

695

帖子

2

粉丝