文档库 最新最全的文档下载
当前位置:文档库 › 用PWM实现DAC的原理

用PWM实现DAC的原理

用PWM实现DAC的原理
用PWM实现DAC的原理

用PWM实现DAC的原理

2.1 基本原理

PWM信号是一种具有固定周期(T)不定占空比(

,进而实现D/A转换。

2.2 分辨率

基于Timer_2 PWM的DAC分辨率就等于计数

器的长度,通常是TCNT2减去CCR2寄存器

的值。PWM DAC的最低有效位是一个计数

值,分辨率是总的计数值。

R counts = L counts

其中R counts是以计数值为单位的分辨率,L counts是计数器的总计数值。例如对8-bit DAC,计数器的长度为8 bits,或者256个计数值。那么分辨率也就是8

bits,或者256。

更一般的情况下,基于PWM定时器和滤波器的PWM DAC的分辨率等于产生模拟信号的PWM信号的分辨率。PWM信号的分辨率决定于计数器的长度和PWM计数器能够实现的最小占空比。用数学表达式如下:

R counts =

如果PWM计数器的长度为512个计数值,最小的占空比为2个计数值,那么

PWM DAC的分辨率就为:

在这儿,是PWM信号的频率,也就是DAC的更新频率,n是所需的比特分辨率。下文即将描述怎样采用8-bit PWM DAC来同步产生一个200Hz的正弦波。由抽样定理可得,最低的抽样频率应该为400Hz。但是通常情况下,PWM信号的频率要远高于Nyquist抽样速率。

这是因为PWM信号的频率越高,对滤波器的阶数就要求越低,合适的滤波器越容易实现。通常抽样速率取Nyquist速率的16或者32倍。

一种基于PWM的电压输出DAC电路设计

在电子和自动化技术的应用中,单片机和DAC (数模转换器)是经常需要同时使用的,然而许多单片机内部并没有集成DAC,即使有些单片机内部集成了DAC,DAC的精度也往往不高,在高精度的应用中还是需要外接DAC,这样增加了成本。但是,几乎所有的单片机都提供定时器或者PWM输出功能。如果能应用单片机的PWM

输出(或者通过定时器和软件一起来实现PWM输出),经过简单的变换电路就可以实现DAC,这将大量降低成本电子设备的成本、减少体积,并容易提高精度。本文在对PWM到DAC转换关系的理论分析的基础上,设计出输出为0~5V电压的DAC。

1应用PWM实现DAC的理论分析

PWM是一种周期一定而高低电平的占空比可以调制的方波信号,图1是一种在电路中经常遇到的PWM波。该PWM的高低电平分别为VH和VL,理想的情况VL 等于0,但是实际中一般不等于0,这往往是应用中产生误差的一个主要原因。

图1的PWM波形可以用分段函数表示为式(1):

其中:T是单片机中计数脉冲的基本周期,即单片机每隔T时间记一次数(计数器的值增加或者减少1),N是PWM波一个周期的计数脉冲个数,n是PWM波一个周期中高电平的计数脉冲个数,VH和VL分别是PWM波中高低电平的电压值,k 为谐波次数,t为时间。把式(1)所表示的函数展开成傅里叶级数[1],得到式(2):

从式(2)可以看出,式中第1个方括弧为直流分量,第2项为1次谐波分量,第3项为大于1次的高次谐波分量。式(2)中的直流分量与n成线性关系,并随着n

从0到N,直流分量从VL到VL+VH之间变化,这正是电压输出的DAC所需要的。因此,如果能把式(2)中除直流分量的谐波过滤掉,则可以得到从PWM波到电压

输出DAC的转换,即:PWM波可以通过一个低通滤波器进行解调。式(2)中的第2项的幅度和相角与n有关,频率为1/(NT),该频率是设计低通滤波器的依据。如果能把1次谐波很好过滤掉,则高次谐波就应该基本不存在了。

根据上述分析可以得到如图2所示的从PWM到DAC输出的信号处理方块图,根据该方块图可以有许多电路实现方法,在单片机的应用中还可以通过软件的方法进行精度调整和误差的进一步校正。

在DAC的应用中,分辨率是一个很重要的参数,图1的分辨率计算直接与N和n 的可能变化有关,计算公式如式(3):

表1给出了不同N和n的情况下的分辨率。

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

性较好的器件,以减少PWM波形的失真,如图4中的电子开关T1(IRF530)。

2PWM到DAC电压输出的电路实现

根据图2的结构,图3是最简单的实现方式。图3中,PWM波直接从MCU的PWM 引脚输出,该电路没有基准电压,只通过简单的阻容滤波得到DAC的输出电压。

R1和C1的具体参数可根据式(2)的第2部分的一次谐波频率来选择,实际应用中一般选择图2中阻容滤波器的截止频率为式(2)的基波频率的1/4左右。

图3的PWM波的VH和VL受到MCU?输出高低电平的限制,一般情况下VL不等于0 V,VH也不等于VCC。例如,对于单片机AT89C52[2,3],当VCC为+5 V 时,VH和VL分别为4.5 V和0.45 V左右,而且该数值随着负载电流和温度而变化。根据式(2)的直流分量可知,DAC电压输出只能在0.45~4.5 V之间变化,而且随负载电流和环境温度变化,精度很难保证。由于该电路的变化部分精度不高,没有必要采用高分辨率的PWM输出,8位即可。另外图2的DAC输出的负载能力也比较差,只适合与具有高输入阻抗的后续电路连接。因此,图3的电路只能用在对DAC 输出精度要求不高、负载很小的场合。对精度和负载能力要求较高的场合,需要对图3的电路进行改进,增加基准电压、负载驱动等电路。

图4的电路在图3电路的基础上增加了开关管T1、基准电压源LM3365和输出放大

器TL V2472。MCU从A点输出的PWM波驱动T1的栅极,T1按照PWM的周期和占空比进行开关。T1为低导通电阻和开关特性好的开关管,如IRF530[4],其典型导通电阻小于0.16 Ω,而截止电阻却非常大,与T1并联的为基准电压

LM3365。图4的B点将得到理想的PWM波形,即:VH=5 V,VL=0 V,波形为方波。A点的PWM波,经过整形得到B点理想PWM波,B点的PWM波再经过两级阻容滤波在C点得到直流分量,即MCU输出的调制PWM波在C点得到解调,实现了DAC功能。根据式(2)可知,C点的电压为(5 ×n/N)V,为0~5 V之间的电压。由于放大器A1的输入阻抗很大,二级阻容滤波的效果很好,C点的电压纹波极小,满足高精度要求。输出放大器采用TLV2472,工作在电压跟随器方式,他是一个RailtoRail放大器,他的输出电压的跨度几乎等于电源电压幅度,因此可以得到0 V的电压输出,克服了一般放大器(如LM324,TL071等)输出电压跨度比电源电压范围小1 V左右这一缺点。图4与图3还有一点重要的不同是,图4的电源电压为6 V,而图3为5 V。图4中在MCU接电源电压中串联了二极管,他起降压的作用,因为一般的MCU工作电源范围为4.5~5.5 V之间。图4中采用电源电压为6 V是为了保证LM336 5能正常工作。

图4的电路采用的电路和电容没有特殊的要求,很容易调试。由于PWM波很容易通过MCU的软件进行控制,即使电路稍微有些系统误差,也很容易通过软件进行校正。因此,图4的电路可以得到高精度的DAC输出。

3结语

本文在对PWM波形组成进行理论分析的基础上,提出了可以通过一个低通滤波器把PWM中的DA C调制信号解调出来,实现DAC。论文对实现DAC产生的误差的原因进行了分析,设计了两组D AC电路实现方式,分别适合于不同的应用场合。

图4的实现方法,通过简单廉价的电子元器件就可以得到高精度的DAC,降低了设备的成本。该电路为单电源供电,非常适用在基于单片机的嵌入式系统中应用。

相关文档