第6章ATmega单片机的模拟接口及使用方法_第1页
第6章ATmega单片机的模拟接口及使用方法_第2页
第6章ATmega单片机的模拟接口及使用方法_第3页
第6章ATmega单片机的模拟接口及使用方法_第4页
第6章ATmega单片机的模拟接口及使用方法_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章ATmega单片机的模拟接口及使用方法

模拟比较器A/D转换器PWM发生器数字滤波方法6.1模拟比较器

模拟比较器对正极AIN0的值与负极AIN1的值进行比较。当AIN0上的电压比负极AIN1上的电压要高时,模拟比较器的输出ACO即置位。比较器的输出可用来触发定时器/计数器1的输入捕捉功能。此外,比较器还可触发自己专有的、独立的中断。用户可以选择比较器是以上升沿、下降沿还是交替变化的边沿来触发中断。 中断向量:ANA_COMP_vect图6.1为比较器及其外围逻辑电路的框图。1、特殊功能IO寄存器-SFIORBit3–ACME:模拟比较器多路复用器使能当此位为逻辑“1”,且ADC处于关闭状态(ADCSRA寄存器的ADEN为“0”)时,ADC多路复用器为模拟比较器选择负极输入。当此位为“0”时,AIN1连接到比较器的负极输入端。2、模拟比较器控制和状态寄存器(ACSR)Bit7–ACD:模拟比较器禁用Bit6–ACBG:选择模拟比较器的能隙基准源Bit5–ACO:模拟比较器输出Bit4–ACI:模拟比较器中断标志Bit3–ACIE:模拟比较器中断使能Bit2–ACIC:模拟比较器输入捕捉使能Bits1,0–ACIS1,ACIS0:模拟比较器中断模式选择

需要改变ACIS1/ACIS0时,必须清零ACSR寄存器的中断使能位来禁止模拟比较器中断。否则有可能在改变这两位时产生中断。模拟比较器的应用举例如图所示:外部信号由模拟比较器的AIN0输入,AIN1接至VCC的分压,取R1=R2,则AIN1的电压为0.5VCC。当AIN0的电压大于0.5VCC时,ACSR中的ACO置‘1’;低于时则清‘0’。当AIN0的电压大于0.5VCC时,LED灯亮,反之熄灭。#include“avr/io.h”intmain(){unsignedcharmid;//定义变量DDRD=0xff;//设置PC口为输出PORTD=0xff;//设置PC口为输出为高电平(LED熄灭)ACSR=0x00;//启动模拟比较器while(1){mid=ACSR&0x20;//读出模拟比较器的输出值if(mid==0)//输出1熄灭LEDPORTD=1;elsePORTD=0;//输出0点亮LED}}6.2模数转换器6.2.1主要特点

ATmega16有一个10位的逐次逼近型ADC。 ADC与一个8通道的模拟多路复用器连接,能对来自端口A的8路单端输入电压进行采样。器件还支持16路差分电压输入组合。两路差分输入(ADC1、ADC0与ADC3、ADC2)有可编程增益级,在A/D转换前给差分输入电压提供0dB(1x)、20dB(10x)或46dB(200x)的放大级。

七路差分模拟输入通道共享一个通用负端(ADC1),而其他任何ADC输入可做为正输入端。如果使用1x或10x增益,可得到8位分辨率。如果使用200x增益,可得到7位分辨率。ADC包括一个采样保持电路,以确保在转换过程中输入到ADC的电压保持恒定。ADC由AVCC引脚单独提供电源。AVCC与VCC之间的偏差不能超过±0.3V。 标称值为2.56V的基准电压,以及AVCC,都位于器件之内。基准电压可以通过在AREF引脚上加一个电容进行解耦,以更好地抑制噪声。图6.2模数转换器方框图6.2.2ADC的工作原理

ADC通过逐次逼近的方法将输入的模拟电压转换成一个10位的数字量。 最小值代表GND,最大值代表AREF引脚上的电压再减去1LSB。 通过写ADMUX寄存器的REFSn位可以把AVCC或内部2.56V的参考电压连接到AREF引脚。 在AREF上外加电容可以对片内参考电压进行解耦以提高噪声抑制性能。6.2.3启动ADC转换

向ADC启动转换位ADSC位写“1”可以启动单次转换。 在转换过程中此位保持为高,直到转换结束,然后被硬件清零。如果在转换过程中选择了另一个通道,那么ADC会在改变通道前完成这一次转换。图6.3

ADC自动触发逻辑使用ADC中断标志作为触发源,可以在正在进行的转换结束后即开始下一次ADC转换。之后ADC便工作在连续转换模式,持续地进行采样并对ADC数据寄存器进行更新。第一次转换通过向ADCSRA寄存器的ADSC写1来启动。如果使能了自动触发,置位ADCSRA寄存器的ADSC将启动单次转换。ADSC标志还可用来检测转换是否在进行之中。不论转换是如何启动的,在转换进行过程中ADSC一直为1。6.2.4预分频及ADC转换时序图6.4ADC预分频器图6.5

ADC时序图,第一次转换(单次转换模式)图6.6

ADC时序图,单次转换图6.7

ADC时序图,自动触发的转换图6.8

ADC时序图,连续转换表6.3ADC转换时间13.56.2.7ADC输入通道选择模拟通道时请注意以下几个方面:单次转换模式,总是在启动转换之前选定通道。在ADSC置位后的一个ADC时钟周期就可以选择新的模拟输入通道了。但是最简单的办法是等待转换结束后再改变通道。在连续转换模式下,切换通道的方法同单次模式,若转换结束后再改变通道,此时新一次转换已经自动开始了,下一次的转换结果反映的是以前选定的模拟输入通道。以后的转换才是针对新通道的。若切换到差分增益通道,由于自动偏移抵消电路需要沉积时间,第一次转换结果准确率很低,最好舍弃。6.2.8ADC基准电压源

ADC参考电压源(VREF)反映了ADC的转换范围。若单端通道电平超过了VREF,其结果将接近0x3FF。VREF可以是AVCC、内部2.56V基准或外接于AREF引脚的电压。AVCC通过一个无源开关与ADC相连。 片内2.56V参考电压由能隙基准源(VBG)通过内部放大器产生。 AREF直接与ADC相连,通过在AREF与地之间外加电容可以提高参考电压的抗噪性。6.2.9ADC噪声抑制器

ADC的噪声抑制器使其可以在睡眠模式下进行转换,从而降低由于CPU及外围I/O设备噪声引入的影响。噪声抑制器可在ADC降噪模式及空闲模式下使用。为了使用这一特性,应采用如下步骤:1.确定ADC已经使能,且没有处于转换状态。工作模式应该为单次转换,并且ADC转换结束中断使能。2.进入ADC降噪模式(或空闲模式)。一旦CPU被挂起,ADC便开始转换。3.如果在ADC转换结束之前没有其他中断产生,那么ADC中断将唤醒CPU并执行ADC转换结束中断服务程序。如果在ADC转换结束之前有其他的中断源唤醒了CPU,对应的中断服务程序得到执行。ADC转换结束后产生ADC转换结束中断请求。6.2.10模拟输入电路

单端通道的模拟输入电路见图6.9。不论是否用作ADC的输入通道,输入到ADCn的模拟信号都受到引脚电容及输入泄露的影响。用作ADC的输入通道时,模拟信号源必须通过一个串联电阻(输入通道的组合电阻)驱动采样/保持(S/H)电容。图6.9

模拟输入电路6.2.11ADC转换结果转换结束后(ADIF为高),转换结果被存入ADC结果寄存器(ADCL,ADCH)。单次转换的结果如下:式中,VIN为被选中引脚的输入电压,VREF为参考电压,0x000代表模拟地电平,0x3FF代表所选参考电压的数值减去1LSB。如果使用差分通道,结果是:式中,VPOS为输入引脚正电压,VNEG为输入引脚负电压,GAIN为选定的增益因子,且VREF为参考电压。结果用2的补码形式表示,从0x200(-512d)到0x1FF(+511d)。如果用户希望对结果执行快速极性检测,判断MSB(ADCH中ADC9),如该位为1,结果为负;该位为0,结果为正。1、ADC多工选择寄存器(ADMUX)•Bit7:6–REFS1:0:参考电压选择ADC参考电压选择

Bit5–ADLAR:ADC转换结果左对齐Bits4:0–MUX4:0:模拟通道与增益选择位

2、ADC控制和状态寄存器A(ADCSRA)•Bit7–ADEN:ADC使能•Bit6–ADSC:ADC开始转换•Bit5–ADATE:ADC自动触发使能•Bit4–ADIF:ADC中断标志•Bit3–ADIE:ADC中断使能•Bits2:0–ADPS2:0:ADC预分频器选择位3、ADC数据寄存器(ADCL及ADCH)ADLAR=0ADLAR=1ADC转换结束后,转换结果存于这两个寄存器之中。如果采用差分通道,结果由2的补码形式表示。读取ADCL之后,ADC数据寄存器一直要等到ADCH也被读出才可以进行数据更新。因此,如果转换结果为左对齐,且要求的精度不高于8比特,那么仅需读取ADCH就足够了。否则必须先读出ADCL再读ADCH。4、特殊功能IO寄存器(SFIOR)•

Bit7:5–ADTS2:0:ADC自动触发源若ADCSRA寄存器的ADATE置位,ADTS的值将确定触发ADC转换的触发源;否则,ADTS的设置没有意义。被选中的中断标志在其上升沿触发ADC转换。•Bit4–Res:保留位。这一位保留。为了与以后的器件相兼容,在写SFIOR时这一位应写0。实例:测量和显示PA0引脚的电压。输入电压采用电位器5V的分压,电压变化范围为0-5V之间,大小可以调节。#include"avr/io.h"#include"util/delay.h"#include"math.h"#include"max7219.c"floatlvboxishu,bilixishu;longintdianya;longintzhuanhuan(chartongdao)//AD转换函数{ADCSRA=0x86;//设置AD转换ADMUX=0x40+tongdao;//设置转换通道ADCSRA=ADCSRA|(1<<ADSC);//启动转换while(!(ADCSRA&(1<<ADIF)));//判断转换是否结束returnADCW;//取AD转换的值}intmain(){longintx;chark,i;spi_7219c();//初始化显示dianya=0;//电压初值i=8;//采集次数while(1){x=0;for(k=0;k<i;k++)x=x+zhuanhuan(0);//采集8次和求和x/=i;//求平均值 dianya=x*5000/1024;xunce_7219(0,dianya,4);//显示电压值_delay_ms(1000);//延时1S}}6.4数字滤波方法

单片机系统面对的现场往往比较恶劣,因此所采集信号中总会混杂有各类干扰。除了采用硬件进行滤波(如阻容滤波)外,对输入计算机的信号进行数字滤波也是十分必要的。所谓数字滤波,就是通过一定的计算程序,对采集的数据进行处理,以提高有用信号在采集值中的比例,减少各种干扰和噪声。

与阻容滤波相比,数字滤波具有如下一些优点:1、可以根据干扰的类型,设计出相应类型的数字滤波器。2、滤波范围宽,特别是对于低频信号(如0.001Hz及以下)更为有效,而模拟滤波器由于电容容量的限制,频率不能太低。3、可靠性高。4、数字滤波程序可以多路共享。下面介绍几种常用的数字滤波方法。1.算术平均值滤波

设测量值为,则每采集了N个数据后,进行一次算术平均。

从上面可以看出,每计算一次控制器输出值,就必须采样N次。因此,N的取值不能太大。算术平均值法主要对压力,流量等含有周期性脉动的信号有效。而对突发性的脉冲干扰,这种滤波方法的效果则不理想。2.中值滤波

所谓中值滤波法是连续采样n次,首先要做的工作是先采集n个参数并按大小排序,即有<<…<<,或者从大到小排序。如果当N为偶数时,如果当N为奇数时,中值滤波既可以去掉由于偶然因数引起的干扰,同时对与脉动干扰也比较有效。但是这种方法由于计算量比较大,对于一些需要快速采样的参数就不十分合适。中值滤波的关键所在是形成按大小顺序排列的一组数。假设采样N次,如果使用高级语言,首先将N个采样值按从大到小(或从小到大)排列,然后将其放在一个数组X(N)里,此时X

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论