AVR M16 ADC应用设计要点(转)

1. 预分频与转换时间

在通常情况下,ADC的逐次比较转换电路要达到最大精度时,需要50kHz~200kHz之间的采样时钟。在要求转换精度低于10位的情况下,ADC的采样时钟可以高于200kHz,以获得更高的采样率。

ADC模块中包含一个预分频器的ADC时钟源,它可以对大于100KHz的系统时钟进行分频,以获得合适的ADC时钟提供ADC使用。预分频器的分频系数由ADCSRA寄存器中的ADPS位设置的。一旦寄存器ADCSRA中的ADEN位置“1”(ADC开始工作),预分频器就启动开始计数。ADEN位为“1”时,预分频器将一直工作;ADEN位为“0”时,预分频器一直处在复位状态。

AVR的ADC完成一次转换的时间见表6.2.5。从表中可以看出,完成一次ADC转换通常需要13-14个ADC时钟。而启动ADC开始第一次转换到完成的时间需要25个ADC时钟,这是因为要对ADC单元的模拟电路部分进行初始化。

表6.2.5 ADC转换和采样保持时间

转 换 形 式

采样保持时间

完 成 转 换 总时间

启动ADC后的第一次转换

13.5个ADC时钟

25个ADC时钟

正常转换,单端输入

1.5个ADC时钟

13个ADC时钟

自动触发方式

2个ADC时钟

13.5个ADC时钟

正常转换,差分输入

1.5/2.5个ADC时钟

13/14个ADC时钟

当ADCSRA寄存器中的ADSC位置位,启动ADC转换时,A/D转换将在随后ADC时钟的上升沿开始。一次正常的A/D转换开始时,需要1.5个ADC时钟周期的采样保持时间(ADC首次启动后需要13.5个ADC时钟周期的采样保持时间)。当一次A/D转换完成后,转换结果写入ADC数据寄存器,ADIF(ADC中断标志位)将被置位。在单次转换模式下,ADSC也同时被清零。用户程序可以再次置位ADSC位,新的一次转换将在下一个ADC时钟的上升沿开始。

当ADC设置为自动触发方式时,触发信号的上升沿将启动一次ADC转换。转换完成的结果将一直保持到下一次触发信号的上升沿出现,然后开始新的一次ADC转换。这就保证了使ADC每隔一定的时间间隔进行一次转换。在这种方式下,ADC需要2个ADC时钟周期的采样保持时间。

在自由连续转换模式下,一次转换完毕后马上开始一次新的转换,此时,ADSC位一直保持为“1”。

2.ADC输入通道和参考电源的选择

寄存器ADMUX中的MUXn和REFS1、REFS0位实际上是一个缓冲器,该缓冲器与一个MCU可以随机读取的临时寄存器相连通。采用这种结构,保证了ADC输入通道和参考电源只能在ADC转换过程中的安全点被改变。在ADC转换开始前,通道和参考电源可以不断被更新,一旦转换开始,通道和参考电源将被锁定,并保持足够时间,以确保ADC转换的正常进行。在转换完成前的最后一个ADC时钟周期(ADCSRA的ADIF位置“1”时),通道和参考电源又开始重新更新。注意,由于A/D转换开始于置位ADSC后的第一个ADC时钟的上升沿,因此,在置位ADSC后的一个ADC时钟周期内不要将一个新的通道或参考电源写入到ADMUX寄存器中。

改变差分输入通道时需特别当心。一旦确定了差分输入通道,增益放大器需要125µs的稳定时间。所以在选择了新的差分输入通道后的125µs内不要启动A/D转换,或将这段时间内转换结果丢弃。通过改变ADMUX中的REFS1、REFS0来更改参考电源后,第一次差分转换同样要遵循以上的时间处理过程。

A、当要改变ADC输入通道时,应该遵守以下方式,以保证能够选择到正确的通道:

在单次转换模式下,总是在开始转换前改变通道设置。尽管输入通道改变发生在ADSC位被写入“1”后的1个ADC时钟周期内,然而,最简单的方法是等到转换完成后,再改变通道选择。

在连续转换模式下,总是在启动ADC开始第一次转换前改变通道设置。尽管输入通道改变发生在ADSC位被写入“1”后的1个ADC时钟周期内,然而,最简单的方法是等到第一次转换完成后再改变通道的设置。然而由于此时新一次的转换已经自动开始,所以,当前这次的转换结果仍反映前一通道的转换值,而下一次的转换结果将为新设置通道的值。

B、ADC电压参考源

ADC的参考电压(VREF)决定了A/D转换的范围。如果单端通道的输入电压超过VREF,将导致转换结果接近于0x3FF(1023)。ADC的参考电压VREF可以选择为AVCC或芯片内部的2.56V参考源,或者为外接在AREF引脚上的参考电压源。

AVCC通过一个无源开关连接到ADC。内部2.56V参考源是由内部能隙参考源(VBC)通过内部的放大器产生的。注意,无论选用什么内部参考电源,外部AREF引脚都是直接与ADC相连的,因此,可以通过外部在AREF引脚和地之间并接一个电容,使内部参考电源更加稳定和抗噪。可以通过使用高阻电压表测量AREF引脚,来获得参考电源VREF的电压值。由于VREF是一个高阻源,因此,只有容性负载可以连接到该引脚。

如果将一个外部固定的电压源连接到AREF引脚,那就不能使用任何的内部参考电源,否则就会使外部电压源短路外部参考电源的范围应在2.0V到AVCC-0.2V之间。参考电源改变后的第一次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-GNG之间。

在单端ADC转换方式时,ADC通道的输入频率带宽取决于ADC转换时钟频率。一次常规的ADC转换需要13个ADC时钟,当ADC转换时钟为1MHz时,一秒种内ADC采样转换的次数约77K。根据采样定理,此时ADC通道的带宽为38.5KHz。

差分方式ADC转换的带宽是由芯片内部的差分放大器的带宽决定,为4KHz。

AVR的ADC输入阻抗典型值为100MΩ,为保证测量的准确,被测信号源的输出阻抗要尽可能的低,应在10K以下。

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的校正

由于AVD内部ADC部分的放大器非线性等客观原因,ADC的转换结果会有误差的。如果要获得高精度的ADC转换,还需要对ADC结果进行校正。具体的方法请参考AVR应用笔记AVR120(avr_app_120.pdf),在这篇应用设计参考中详细介绍了误差的种类,以及校正方案。

7.ADC精度的提高

在有了上述几点的保证后,通过软件的手段也能适当的提高ADC的精度。如采用多次测量取平均,软件滤波算法等。在AVR应用笔记AVR121(avr_app_121.pdf)中介绍了一种使用过采样算法的软件实现,可以将ADC的精度提高到11位或更高,当然这是在花费更多的时间基础上实现的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值