第10章 模拟比较器和ADC接口

上传人:我*** 文档编号:137617121 上传时间:2020-07-10 格式:PPT 页数:43 大小:567.50KB
返回 下载 相关 举报
第10章 模拟比较器和ADC接口_第1页
第1页 / 共43页
第10章 模拟比较器和ADC接口_第2页
第2页 / 共43页
第10章 模拟比较器和ADC接口_第3页
第3页 / 共43页
第10章 模拟比较器和ADC接口_第4页
第4页 / 共43页
第10章 模拟比较器和ADC接口_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《第10章 模拟比较器和ADC接口》由会员分享,可在线阅读,更多相关《第10章 模拟比较器和ADC接口(43页珍藏版)》请在金锄头文库上搜索。

1、1,第10章 模拟比较器和ADC接口,2,单片机内部常见的支持模拟信号输入 接口,模拟比较器和模数转换 ADC,3,模拟量输入通道构成,主要组成: 信号处理装置、采样单元、采样保持器、数据放大器、AD转换器控制电路。,任务:完成模拟量的采集并转换成数字量送入计算机。,4,AD转换及其应用,被测参数,如温度、流量、压力、液位、速度等都是连续变化的量模拟量 单片机只能处理数字量 把输入的连续变化的模拟电压信号转换成离散的数字量ADC AVR ATmega16 内置10bit ADC,5,模拟比较器,10.1 模拟比较器,6,10.1.1 与模拟比较器相关的寄存器和标志位 SFIOR、ACSR,2模

2、拟比较器控制和状态寄存器ACSR,1.特殊功能IO寄存器SFIOR,为模拟比较器多 路使能控制位,7,ACSR是模拟比较器主要的控制寄存器,各位的作用,位7ACD:模拟比较器禁止 位6ACBG:模拟比较器的能隙参考源选择 位5ACO:模拟比较器输出 位4ACI:模拟比较器中断标志位 位3ACIE:模拟比较器中断允许 位1、0ACIS1、ACIS0:模拟比较器中断模式选择 位2ACIC:模拟比较器输入捕获允许,8,表9-1 模拟比较器中断模式选择,模拟比较器的多路输入 用户可以选择ADC7.0引脚中的任一路的模拟信号代替AIN1引脚,作为模拟比较器的反向输入端。,9,模拟比较器的多路输入选择,1

3、0,模拟比较器使用注意点包括: 芯片RESET后,模拟比较器为允许工作状态。如果系统中不使用模拟比较器功能,应将寄存器ACSR的ACD位置1,关闭模拟比较器,这样可以减少电源的消耗。 使用模拟比较器时,应注意比较器的两个输入端口PB2、PB3的设置。当PB2/PB3作为模拟输入端使用时,PB2/PB3应设置为输入工作方式,且上拉电阻无效,这样就不会使PB2/PB3上输入的模拟电压受到影响。 当AIN0设置为使用芯片内部1.22V的固定能隙(Bandgap)参考电源时,PB2口仍然可以作为通用I/O端口使用,这样就能节省一个I/O引脚。在上面的例子里,AIN0就是设置为使用芯片内部1.22V的固

4、定能隙(Bandgap)参考电源,这样就可将PB2口释放出来,作为普通I/O口用来驱动LED了,10.1.2 模拟比较器的应用设计,11,系统电源电压的监测,12,程序,#include void main(void) PORTB.2=0 x01; /PC0设置为输出,控制LED DDRB.2=0 x01; ACSR=0 x40; /模拟比较器初始化,允许模拟比较器,AIN0设置为内部Bandgap参考电压1.22V while (1) /循环检测AC0位 if (ACSR.5) PORTB.2 = 0; / AIN0 AIN1,低电压报警 else PORTB.2 = 1; / AIN0 A

5、IN1, ,13,10.2 模数转换器ADC,外部的模拟信号量需要转变成数字量才能进一步的由MCU进行处理。ATmega16内部集成有一个10位逐次比较(successive approximation)ADC电路。因此使用AVR可以非常方便的处理输入的模拟信号量。 ATmega16的ADC与一个8通道的模拟多路选择器连接,能够对以PORTA作为ADC输入引脚的8路单端模拟输入电压进行采样,单端电压输入以0V(GND)为参考。另外还支持16种差分电压输入组合,其中2种差分输入方式(ADC1,ADC0和ACD3,ADC2)带有可编程增益放大器,能在A/D转换前对差分输入电压进行0dB(1),20

6、dB(10)或46dB(200)的放大。还有七种差分输入方式的模拟输入通道共用一个负极(ADC1),此时其它任意一个ADC引脚都可作为相应的正极。若增益为1或10,则可获得8位的精度。如果增益为200,那么转换精度为7位。,14,AVR的模数转换器ADC具有下列特点: 10位精度; 0.5LSB积分非线形误差 2LSB的绝对精度; 13s-260s的转换时间; 在最大精度下可达到每秒15kSPS的采样速率; 8路可选的单端输入通道; 7路差分输入通道; 2路差分输入通道带有可选的10和200增益; ADC转换结果的读取可设置为左端对齐(LEFT ADJUSTMENT);,10.2.1 10位A

7、DC结构,15,ADC的电压输入范围0Vcc; 可选择的内部2.56V的ADC参考电压源; 自由连续转换模式和单次转换模式; ADC自动转换触发模式选择; ADC转换完成中断; 休眠模式下的噪声抑制器(NOISE CANCELER)。,16,ADC功能单元包括采样保持电路,以确保输入电压在ADC转换过程中保持恒定。,图10-3 ADC功能单元方框图,17,10.2.2 ADC相关的I/O寄存器,位7,6REFS1:0:ADC参考电源选择 位5ADLAR:ADC结果左对齐选择 位4.0MUX4:0:模拟通道和增益选择,1ADC多路复用器选择寄存器ADMUX,18,位7ADEN:ADC使能 位6A

8、DSC:ADC转换开始 位5ADATE:ADC自动转换触发允许 位4ADIF:ADC中断标志位 位3ADIE:ADC中断允许 位2,0ADPS2:0:ADC预分频选择,2.ADC控制和状态寄存器AADCSRA,19,3ADC数据寄存器ADCL和ADCH,ADLAR = 0,ADC转换结果右对齐时,ADC结果的保存方式,20,ADLAR = 1,ADC转换结果左对齐时,ADC结果的保存方式,21,当ADC转换完成后,可以读取ADC寄存器的ADC0-ADC9得到ADC的转换的结果。如果是差分输入,转换值为二进制的补码形式。一旦开始读取ADCL后,ADC数据寄存器就不能被ADC更新,直到ADCH寄存

9、器被读取为止。因此,如果结果是左对齐(ADLAR=1),且不需要大于8位的精度的话,仅仅读取ADCH寄存器就足够了。否则,必须先读取ADCL寄存器,再读取ADCH寄存器。ADMUX寄存器中的ADLAR位决定了从ADC数据寄存器中读取结果的格式。如果ADLAR位为“1”,结果将是左对齐;如果ADLAR位为“0”(默认情况),结果将是右对齐。,读数注意,22,4特殊功能I/O寄存器SFIOR,23,位7.5ADTS2:0:ADC自动转换触发源选择,见表9-6,表9-6 ADC自动转换触发源的选择,24,1预分频与转换时间 在通常情况下,ADC的逐次比较转换电路要达到最大精度时,需要50kHz200

10、kHz之间的采样时钟。在要求转换精度低于10位的情况下,ADC的采样时钟可以高于200kHz,以获得更高的采样率。,图10-4 带预分频器的ADC时钟源,10.2.3 ADC应用设计要点,25,AVR的ADC完成一次转换的时间见表10-7。从表中可以看出,完成一次ADC转换通常需要13-14个ADC时钟。而启动ADC开始第一次转换到完成的时间需要25个ADC时钟,这是因为要对ADC单元的模拟电路部分进行初始化。,表10-7 ADC转换和采样保持时间,26,输入通道:ADMUX写入 参考电源:AVcc或芯片内部的2.56V参考源,2ADC输入通道和参考电源的选择,27,在单次转换模式下,总是在开

11、始转换前改变通道设置。 在连续转换模式下,总是在启动ADC开始第一次转换前改变通道设置。,改变ADC输入通道时,应该遵循的原则,28,3ADC转换结果,A/D转换结束后(ADIF = 1),在ADC数据寄存器(ADCL和ADCH)中可以取得转换的结果。对于单端输入的A/D转换,其转换结果为:ADC =(VIN1024)/ VREF 其中VIN表示选定的输入引脚上的电压,VREF表示选定的参考电源的电压。 对于差分转换,其结果为:ADC=(VPOS-VNEG) GAIN512/VREF 说明:VPOS为差分正极输入电压,VNEG为差分负极输入电压,29,10.2.4 ADC的应用实例,30,本例

12、利用ATmega16内部的ADC进行转换,转换后的结果换算成测量的电压值在4位LED数码管上显示。在数码管上显示AD采样值,实现和完成一个简易电压表的设计。通过调节W改变AD采样值,实例功能,31,程序,#include flash unsigned char led_710=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F; flash unsigned char position4=0 xfe,0 xfd,0 xfb,0 xf7; unsigned char dis_buff4=0,0,0,0,posit; bit ti

13、me_2ms_ok;,32,/ ADC电压值送显示缓冲区函数 void adc_to_disbuffer(unsigned int adc) unsigned char i; for (i=0;i=3;i+) dis_buffi=adc%10; adc /= 10; ,33,/ Timer 0 比较匹配中断服务 interrupt TIM0_COMP void timer0_comp_isr(void) time_2ms_ok = 1; / ADC 转换完成中断服务 interrupt ADC_INT void adc_isr(void) unsigned int adc_data,adc_v

14、; adc_data=ADCW; /读取ADC置换结果 adc_v=(unsigned long)adc_data*5000/1024; /换算成电压值 adc_to_disbuffer(adc_v); ,34,void display(void)/ 4位LED数码管动态扫描函数 PORTA |= 0 x0f; PORTC = led_7dis_buffposit; if (posit=3) PORTC |= 0 x80; PORTA ,35,void main(void) DDRA=0 x0f; PORTA=0 x0f; DDRC=0 xff; / LED显示控制I/O端口初始化 PORTC

15、=0 x00; / T/C0 初始化 TCCR0=0 x0B; / 内部时钟,64分频(4M/64=62.5KHz),CTC模式 TCNT0=0 x00; OCR0=0 x7C; / OCR0 = 0 x7C(124),(124+1)/62.5=2ms TIMSK=0 x02; / 允许T/C0比较中断 / ADC 初始化 ADMUX=0 x47; / 参考电源AVcc、ADC7单端输入 SFIOR / ADC允许、自动触发转换、ADC转换中断允许、ADCclk=125Kz #asm(sei) / 开放全局中断,36,while (1) if (time_2ms_ok) display();

16、/ LED扫描显示 time_2ms_ok = 0; ,37,10.2.5 ADC的应用设计的深入讨论,1AVcc的稳定性。 AVcc是提供给ADC工作的电源,如果AVcc不稳定,就会影响ADC的转换精度。 通常采用系统电源通过一个LC滤波后接入AVcc,抑制掉系统电源中的高频躁声,提高AVcc的稳定性。 必要时,PA口上的那些没被用做ADC输入的端口尽量不要作为数字I/O口使用。因为PA口的工作电源是由AVcc提供的,如果PA口上有比较大的电流波动,也会影响AVcc的稳定。,38,2参考电压VREF的选择确定,ADC的参考电压VREF还决定了A/D转换的范围。如果单端通道的输入电压超过VREF,将导致转换结果全部接近于0 x3FF,因此ADC的参考电压应稍大于模拟输入电压的最高值。 ADC的参考电压VR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号