分析如何提高单片机的模数转换

时间:2009-07-09

  引 言

  单片机应用于工业控制等方面时,经常要将电流、电压、温度、位移、转速等模拟量转换成数字量,然后在单片机内作进一步运算和处理,完成相应的数据存储、数据传输和数据输出,达到分析和控制的目的。随着大规模集成电路的不断发展,很多单片机都有内置A/D模块,因此,单片机的A/D转换可以用内置A/D模块也可以用外置A/D电路完成,现谈谈单片机A/D转换的工作原理及优缺点,并分析提高A/D转换的方法。

  1 A/D转换的工作原理及优缺点

  (1)单片机片内A/D转换

  单片机片内A/D转换是利用单片机的内置A/D模块,通过选择不同的模拟量通道进行A/D转换。可以将模拟量直接输入到单片机对应的输入脚,外围电路简单。转换后的数据直接保存在片内寄存器中,数据提取方便。但大多数单片机的内置A/D模块只有8位和10位,无法进行高的A/D转换,原理如图1所示。

  (2)单片机片外A/D转换

  单片机外置A/D转换是单片机通过一定的逻辑电路控制外置A/D转换电路进行A/D转换,外围电路相对复杂。单片机将转换结果通过一定的时序读取到单片机中,按要求通过选择A/D转换电路,可以实现高的A/D转换(可以达到14位、16位、22位甚至更高),原理如图2所示。

  2 提高A/D转换的方法

  要提高A/D转换的,选用高的外部A/D转换器当然可以达到要求,除此之外,有没有其他方法呢?答案是肯定的。以下介绍几种利用片内A/D转换模块提高转换的方法。

  ①以采集电压为例,假设需要采集0.0~400.0 V直流电压,单片机A/D模块的基准电压VREF+取5.0 V,VREF-取0 V,需要采集的电压经过衰减,变成0.0~5.0 V,连接电路如图3所示。显然,如果要达0.1 V的,则A/D转换的分辨率必须小于1/4000,而片内A/D模块一般为10位,分辨率仅为1/1 024,达不到要求。由于模拟量(O~400V电压)输入大多不是稳定值,会有波动,为了得到更高的数据,可以将多次采集的数据累加后再取平均值(其实即使分辨率达到要求的A/D转换也要经过累加再取平均值,以得到更稳定的数据)。如果每间隔一定时间采集的10位数据为Di,取64个这样的数据累加后再除以16,就可以得到12位的数据D,即


  这时D的分辨率是1/212=1/4 096。这样,就得到了更高的数据。

  但是,如果模拟量(0~400V电压)输入值非常稳定,每间隔一定时间采集的10位数据Di都相同,以上方法就达不到要求了。

  ②如果在A/D转换过程中要得到局部更高的数据,例如检测蓄电池充放电过程中的电压,电压范围是0~18 V,一般达到0.02 V即可,但用户更关心8~13 V的电压,8~13 V内要达到0.01 V。为了解决这个问题,设计了原理如图4所示的电路。

  单片机有内置10位A/D模块,Ui(0~20 V)电压经过R1、R2、P1衰减得到0~5 V的电压,该电压直接送到单片机的AN1输入口,即VAN1=Ui/4。

  U2A接成减法运算电路,即U2A 1端电压VU2A1=VAN1-2 V=Ui/4-2 V=(Ui-8 V)/4。U2B接成4倍放大电路,U2B 7端的电压VU2B7=VU2A×4=Ui-8 V。AN2输入并联一只5 V稳压二极管,以保证当输入电压大于8 V时,单片机AN2可以得到O~5 V电压。单片机先采集AN1的数据,通过采集的数据判断输入电压是否在8~13 V之间,如果不在8~13 V,则采集到的数据就是模拟量(U)对应的数字量(D:000H~3FFH),为20 V/2010=20 V/1 024≈0.02 V,电压数据U=D×0.02 V;如果采集的数据在8~13 V之间,单片机再采集AN2的数据,采集到的数据加上8 V就是模拟量(U)对应的数字量(D:000H~3FFH),为(13-8)V/210=5 V/1 024≈0.005 V,电压数据U=8 V+D×0.005 V。这样,在8~13 V之间的A/D转换就大大提高了。

  结 语

  随着工业自动控制的不断发展,单片机在工业自动控制的应用也越来越广。本文介绍的提高A/D转换的工作原理在实际应用中具有一定的使用价值,特别是通过简单的模拟运算电路,可以局部提高A/D转换。利用这个原理,如果将模拟量分段放大,也可以全范围提高A/D转换。这种方法在A/D转换领域有较好的应用前景。


  
上一篇:使用低侧PWM IC的降压转换器
下一篇:基于自适应DVFS的SoC低功耗技术研究

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料