浅谈单片机A/D转换的处理方法

2019-04-15 12:58发布

文章具体内容如下:  单片机在日常生活中用得越来越多,其集成度也越来越高,目前拥有多种单片机都集成有A/D转换功能,如PICAVRSUNPLUSSH等。处理器的位数从4位到32位或更高,转换精度从6位,8位,10位或更高。   单片机内集成的A/D转换,一般都有相应的特殊功能寄存器来设置A/D的使能标志,参考电压,转换频率,通道选择,A/D输入口的属性(模拟量输入还是普通的I/O口),启动,停止控制等。有了这些寄存器,使得我们控制单片机的模拟量采集变得非常方便。   A/D转换的基本原理是:将参考电平按最大的转换值量化,再利用输入模拟电平与参考电平的比例来求得输入电平的测量值(V=V*AD量化值/AD转换的最大值))。有些MCU A/D转换的参考电平可以选择由一个外部引脚输入,这样使得用户可以对A/D转换进行更好的控制。值得注意的一点就是A/D转换的输入电平必须比参考电平低或相等,不然测试的结果就会有很大的偏差。   下面以参考电平为5V,转换的精度为8位为例来说明如何取得实际的测量值是多少。如果 AD量化值为128,则V= 5*128/256=2.5V。因为V=V*AD量化值/AD转换的最大值)=AD量化值*V/AD转换的最大值),而针对具体的硬件电路,“V/AD转化的最大值”是一个固定的系数。而这个系数,就相当于测试的精度了。对于10位的A/D5V的参考电压的测试精度约5毫伏,而用2.048伏的参考电压,精度就可以达到2毫伏。当然测试的电压范围相应的也减小了。我曾经就用这种减小测量范围来提高精度,使用PIC16F76A/D测量,使得正负误差不超过5毫伏的高精度测试电源。当误差超过5毫伏时,电路发出报警声,提示操作员,重新调解电压到规定范围内。   然而,即使使用同样一款MCU,不同的软硬件设计者,使得A/D转换的效果相差也甚远。主要是很多新手在处理上有些不当,不是直接把一次转换后的结果拿来处理并做相应的显示,就是对参考电平不做处理。所以使得显示效果老是变化不定,给人一种不稳定的感觉。 针对参考电平设在单片机内部的MCU,主要是要对A/D的量化值做数字滤波处理,比如多次间隔采样,再求平均等。而针对参考电压可以从外部输入脚引入的,最好单独设置一组高稳定度的参考电压,如TL431等。这样,即使MCU的主电源有些波动也不会导致A/D转换值的漂移。其实在没有高精度参考电压的情况下,或者A/D量化值很不稳定的情况下, 我们依然可以通过软件的方法将与A/D转换有关的显示或其他的驱动做得非常稳定。这就要看程序员的设计经验了。   以上均为个人观点,有些不足或错误的地方,希望大家多多指教,相互交流,共同提高。