|||
A/D采样在硬件方面需要考虑数字地和模拟地分开,参考电源LC滤波等。软件方面可以考虑滑动滤波等滤波技术,滤除电压瞬间的突变。在硬件设计合理的情况下,采样误差的主要因素是参考电压(温度因素我目前没有考虑)的准确性,而目前的线性稳压片或者LDO普遍的精度在±2%,±3%左右,也就是说稳压输出的电压越高,误差也就越大;电压越小,误差也越小。这样的话,如果用普通的稳压片给A/D做参考,则需要一个校准的问题,或者在电路上A/D的参考电源用一个精准电源,而这样的话势必增加成本。所以如果单片机片内有一个低压的参考电压,将会省去校准的过程,通过软件处理即可完成。以12bit为例,假设A/D外部参考电压是Vref,片内的参考电压是Viref = 1.17V(LL8内部参考),通过采集片内参考电压通道所得到的12bit,设为CODEref,可以倒推出Vref,
由公式:
推出: (CODEref为已知)
如果我们采集某个通道的电压Vin,其12bit码设为CODEin,则有:
(1.1)
由式1.1可知,某个通道的电压和外部参考电压Vref没有直接的关系了,只和CODEref有关。因此,A/D的采样误差只和片内参考电压的精度有关了。我们可以认为在某一时刻,其外部参考电压是相同的,因此在采集某个通道电压时预先采集片内基准电压,得到CODEref,进而通过CODEin得出Vin。
庆幸的是一般单片机片内都集成了一个较准的低电压参考基准,并且内部参考电压都作为一个采集通道,像AVR,PIC和Freesacle等都有。MEGA88里面的内部参考典型值是1.1V,LL8里面的基准典型值是1.17V,如图1.5所示:最小为1.15V,最大为1.18V,差值为30mV,相对稳压片误差180mV来说还是比较小的,一般的12bit采样精度可以满足要求。我测试了发现,用12bit采样,只有末位在跳变。
图1.5
注意了,这里面不是用这个1.17V作为参考基准,而是作为校准用,如果作为电压参考基准的话就有点低了,并且并没有提高精度。