AVR M16 ADC应用设计要点
结果可能不太准确,建议抛弃该次转换结果。
3、ADC转换结果
A/D转换结束后(ADIF=1),在ADC数据寄存器(ADCL和ADCH)中可以取得转换的结果。对于单端输入的A/D转换,其转换结果为:
ADC=(VIN×1024)/VREF
其中VIN表示选定的输入引脚上的电压,VREF表示选定的参考电源的电压。0x000表示输入引脚的电压为模拟地,0x3FF表示输入引脚的电压为参考电压值减去一个LSB。
对于差分转换,其结果为:
ADC=(VPOS-VNEG)×GAIN×512/VREF
例:若差分输入通道选择为ADC3-ADC2,10倍增益,参考电压2.56V,左端对齐(ADMUX=0xED),ADC3引脚上电压300mV,ADC2引脚上电压500mV。
则ADCR=(300-500)×10×512/2560=-400=0x270,ADCL=0x00,ADCH=0x9C。
若结果为右端对齐时(ADLAR=“0”),则ADCL=0x70,ADCH=0x02。
附录2、ADC应用设计的深入讨论
尽管AVR内部集成了10位的ADC,但是在实际应用中,要想真正实现10位精度,比较稳定的ADC的话,并不象上一节中的例子那么简单。需要进一步从硬件、软件等方面进行综合的、细致的考虑。下面介绍一些在ADC设计应用中应该考虑的几个要点。
1、AVcc的稳定性。
AVcc是提供给ADC工作的电源,如果AVcc不稳定,就会影响ADC的转换精度。在图10-5中,系统电源通过一个LC滤波后接入AVcc,这样就能很好的抑制掉系统电源中的高频躁声,提高了AVcc的稳定性。另外在要求比较高的场合使用ADC时,PA口上的那些没被用做ADC输入的端口尽量不要作为数字I/O口使用。因为PA口的工作电源是由AVcc提供的,如果PA口上有比较大的电流波动,也会影响AVcc的稳定。
2、参考电压VREF的选择确定
在实际应用中,要根据输入测量电压的范围选择正确的参考电压VREF,以求得到比较好的转换精度。ADC的参考电压VREF还决定了A/D转换的范围。如果单端通道的输入电压超过VREF,将导致转换结果全部接近于0x3FF,因此ADC的参考电压应稍大于模拟输入电压的最高值。
ADC的参考电压VREF可以选择为AVCC,或芯片内部的2.56V参考源,或者为外接在AREF引脚上的参考电压源。外接参考电压应该稳定,并大于2.0V(芯片的工作电压为1.8V时,外接参考电压应大于1.0V)。要求比较高的场合,建议在AREF引脚外接标准参考电压源来作为ADC的参考电源。
3、ADC通道带宽和输入阻抗
不管使用单端输入转换还是差分输入转换方式,所有模拟输入口的输入电压应在AVcc-GND之间。
在单端ADC转换方式时,ADC通道的输入频率带宽取决于ADC转换时钟频率。一次常规的ADC转换需要13个ADC时钟,当ADC转换时钟为1MHz时,一秒种内ADC采样转换的次数约77K。根据采样定理,此时ADC通道的带宽为38.5KHz。
差分方式ADC转换的带宽是由芯片内部的差分放大器的带宽决定,为4KHz。
4、ADC采样时钟的选择
通常条件下,AVR的ADC逐次比较电路要达到转换的最大精度,需要一个50K~200KHz的采样时钟。一次正常的ADC转换过程需要13个采样时钟,假定ADC采样时钟为200KHz,那么最高的采样速率为200K/13=15.384K。因此根据采样定理,理论上被测模拟信号的最高频率为7.7K!
尽管可以设置ADC的采样时钟为1M,但并不能提高ADC转换精度,反而会降低转换精度(受逐次比较硬件电路的限制),因此AVR的ADC不能完成高速ADC的任务。如果所需的转换精度低于10位,那么采样时钟可以高于200KHz,以达到更高的采样频率。
ADC采样时钟的选择方式为:给出或估计被测模拟信号的最高频率fs,取采样频率为fs的4-10倍,再乘上13为ADC采样时钟频率,该频率应在50K~200KHz之间。如果该频率大于200KHz,则ADC的10位精度不能保证。如果该频率小于50Khz,则可选择50K~200KHz之间的数值。
5、模拟噪声的抑制
器件外部和内部的数字电路会产生电磁干扰,并会影响模拟测量的精度。如果ADC转换精度要求很高,可以采用以下的技术来降低噪声的影响:
(1)使模拟信号的通路尽可能的短。模拟信号连线应从模拟地的布线盘上通过,并使它们尽可能远离高速开关数字信号线。
(2)AVR的AVcc引脚应该通过LC网络与数字端电源Vcc相连。
(3)采用ADC噪声抑制器功能来降低来自MCU内部的噪声。
(4)如果某些ADC引脚是作为通用数字输出口使用,那么在ADC转换过程中,不要改变这些引脚的状态。
6、ADC的校正
由于AVR内部ADC部分的放大器非线性等客观原因,ADC的转换结果会有误差的。如果要获得高精度的ADC转换,还需要对ADC结果进行校正。具体的方法请参考AVR应用笔记
AVRM16AD 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)