在电子和自动化技术的应用中,单片机和DAC(数模转换器)是经常需要同时使用的,然而许 多单片机内部并没有集成DAC,即使有些单片机内部集成了DAC,DAC的精度也往往不高,在高 精度的应用中还是需要外接DAC,这样增加了成本。但是,几乎所有的单片机都提供定时器 或者PWM输出功能。如果能应用单片机的PWM输出(或者通过定时器和软件一起来实现PWM输出),经过简单的变换电路就可以实现DAC,这将大量降低成本电子设备的成本、减少体积 ,并容易提高精度。本文在对PWM到DAC转换关系的理论分析的基础上,设计出输出为0~5 V电压的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)所表示的函数展开成傅里叶级数,得到式(2): 从式(2)可以看出,式中第1个方括弧为直流分量,第2项为1次谐波分量,第3项为大于1次的高次谐波分量。式(2)中的直流分量与n成线性关系,并随着n从0到N ,直流分量从VL到VL+VH之间变化,这正是电压输出的DAC所需要的。因此,如果能 把式(2)中除直流分量的谐波过滤掉,则可以得到从PWM波到电压输出DAC的转换,即:P WM波可以通过一个低通滤波器进行解调。式(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)。 2、PWM到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,当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,其典型导通电阻小于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 %26;#215;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中的DAC调制信号解调出来,实现DAC。论文对实现DAC产生的误差的原因进行了分析,设计了两组DAC电路实现方式,分别适合于不同的应用场合。 图4的实现方法,通过简单廉价的电子元器件就可以得到高精度的DAC,降低了设备的成本。 该电路为单电源供电,非常适用在基于单片机的嵌入式系统中应用。 责任编辑:gt (责任编辑:admin) |