AVR M16 ADC应用设计要点

发布者:清新家园最新更新时间:2015-10-13 来源: eefocus关键字: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单元的模拟电路部分进行初始化。

【转】AVR <wbr>M16 <wbr>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来更改参考电源后,第一次差分转换同样要遵循以上的时间处理过程。

 

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

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

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

 

2)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转换结果可能不太准确,建议抛弃该次转换结果。

 [page]

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。

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

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

 

7、ADC精度的提高

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

关键字:AVR  M16  ADC 引用地址:AVR M16 ADC应用设计要点

上一篇:AVR复位电路的设计
下一篇:AVR单片机熔丝位设置

推荐阅读最新更新时间:2024-03-16 14:35

STM8L使用ADC内部参考电压通道测量VDD电压
STM8L内部含有一个12位的ADC,拥有25个输入通道,包括一个内部温度传感器,一个内部参考电压 由上图可知,STM8L内部还有一个内部参考电压,这个内部参考电压的电压值是可知的,且是精确的。由数据手册可知,内部参考电压为1.225V。 ADC选择内部参考电压作为测量通道,可以测量到内部电压的转化值Nadc。此时,已经VDD的转化值4096,VREFINT电压值1.225V及对应的转化值Nadc。这些值满足比例关系: VDD/4096=VREFINT/Nadc VDD/4096 =1.225/Nadc VDD=1.225*4096/Nadc STM8L15x系列单片机的相关库函数配置过程如
[单片机]
STM8L使用<font color='red'>ADC</font>内部参考电压通道测量VDD电压
具有浮点单元的32位AVR微控制器系列(Atmel)
爱特梅尔公司(Atmel® Corporation)在德国慕尼黑Electronica 2010展会上宣布推出首个带有浮点单元(floating point unit, FPU)的32位AVR®微控制器(MCU)系列。新推出的AVR UC3 C MCU系列瞄准工业控制应用,具有高处理能力、真正的5V运作、高速通信和先进的安全性与可靠性的独特组合,并且采用一系列小型和微型封装供货。 IEEE 754-1985标准兼容FPU能够提高爱特梅尔AVR UC3 CPU 的计算性能、精度和动态范围。其固有的浮点计算可让设计工程师利用功能齐全的工具套件来设计传感器和控制器应用。此外,先进的数学计算有助于增强马达控制、机器人和音频等广泛应用的信
[单片机]
ADC0809输入电压转成LED灯显示程序
ADC0809输入电压转成LED灯显示程序 ;将输入电压转化成LED灯显示. ;/////////////////////////////////////////// ;//定义ADC的连接端口 ad_cs equ P3.6 ad_wr equ P3.2 ad_rd equ P3.7 ad_input_port equ p1 org 0000h ajmp main org 0030h main: lcall adc_demo ajmp main ;//========================================== ;// 启动AD
[单片机]
TMS320C28x模数转换器的精度校正
引 言:   TMS320F2812是德州仪器公司(TI)推出的主频最高可达150 MHz的32位高性能数字信号处理器(DSP),内部集成了ADC转换模块。ADC模块是一个12位、具有流水线结构的模数转换器,内置双采样保持器(S/H),可多路选择16通道输入,快速转换时间运行在25 MHz、ADC时钟或12.5 Msps,16个转换结果寄存器可工作于连续自动排序模式或启动/停止模式。   在现代电子系统中,作为模拟系统与数字系统接口的关键部件,模数转换器(ADC)已经成为一个相当重要的电路单元,用于控制回路中的数据采集。在实际使用中,发现该ADC的转换结果误差较大,如果直接将此转换结果用于控制回路,必然会降低控制精度。为了克服
[应用]
这就是AVR的看门狗watchdogtimeout
AVRATMEGA16的复位检测和控制看门狗 系统控制和复位 复位来源的检测 JTAG复位指示 看门狗复位指示 BOD复位指示 RESET引脚复位指示 上电复位指示 看门狗的控制 出于简化程序考虑,各种数据没有对外输出,学习时建议使用JTAG ICE硬件仿真器。 熔丝位设置 1 使能BOD功能 BODEN=0 2 选择BOD电平 BODLEVEL=1 2.7V(VCC=3V) (可选) BODLEVEL=0 4.0V(VCC=5V) (可选) */ #include avr/io.h #include avr/delay.h //时钟定为内部RC 1MHz,F
[单片机]
16位adc AD7705单片机例程(串口打印采集数据)
1.本例程适合的CPU: STC89C52 11.0592晶振 2.编译环境: Keil_c51_v802 2.串口输出的波特率 = 9600bps 无校验 无硬件流控(请取消串口工具上的RTS CTS功能) 3.请在PC机上安装串口软件: SecureCRT(v6.1.0英文安装版).rar 4.如果你的板子经常出现SPI接口时序迷失,就请检查P1口上的上拉电阻配置。这种情况多半是波形不好所致。 (1)如果你使用发光二极管串联电阻代替上拉电阻,则极容易迷失接口。 (2)如果上拉电阻大于2K欧姆,波形上升沿比较缓,会影响时序。 (3)建议: P1口增加1K-2K欧姆的上拉电阻(不要LED串联)。 5. 在bsp.c
[单片机]
基于ADC车载检测电路设计
  该系统可放置在汽车仪表盘位置,当司机发动汽车时,探测控制仪启动,此时发动机处于被锁状态,汽车无法启动。酒精传感器加热后,探测控制仪对酒精传感器探测的气体信号进行检测。由于酒精含量与酒精传感器检测后产生的电压信号成特定的比例关系,因而可根据电压信号进行酒精含量的判断。    酒精检测电路设计   酒精检测电路由高精度酒精传感器、信号调理放大电路、滤波电路和单片机内置12位ADC等组成,如图所示。主要功能是检测酒精含量,判断其是否超标。      图2 系统主控电路示意图   酒精传感器采用旁热型半导体式酒精气敏元件MQ3,它对乙醇蒸汽具有很高的灵敏度和良好的选择性,快速的响应恢复,长期的寿命和可靠的稳定性,探测范围为10~10
[电源管理]
基于<font color='red'>ADC</font>车载检测电路设计
ICCAVR位操作的宏定义
C语言位操作的功能是其比较出色的地方,现在许多微处理器都支持C编译器也可看出。汇编语言的位操作也很直观,但在某些C编译器对位操作却不能象汇编中对单个的位进行直接处理,而要转化为对一个字节的操作,在ICCAVR中这种限制充分体现出来。如要对PORTA的PORTA0置1,则应写成PORTA|=0X01;这样的位处在字节的两端还比较直观,但若是要置PORTA的第3位,第6位置1,则写出的程序可读性不强了。于是便有了一些宏操作定义#define BIT(x) (1 (x))(需要包含头文件macros.h)才可直接使用。下面给出两种置1和清0的宏定义: 置1: 1,#define set(x) (1 (x)) 2,#d
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved