版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 ATmega单片机的 模拟接口及使用方法,主讲:海涛,广西大学电气工程学院,内容提要 本章描述ATmega单片机A/D转换器和PWM发生器的基本原理和应用。在A/D转换器中,首先说明原理、结构、控制和相应特殊寄存器的用法,然后介绍软件设计及应用实例。在PWM发生器中,分别介绍结构原理和实际应用。此外本章还介绍几种滤波方法。,6.1模拟比较器 模拟比较器对正极AIN0 的值与负极AIN1 的值进行比较。当AIN0 上的电压比负极AIN1上的电压要高时,模拟比较器的输出ACO 即置位。比较器的输出可用来触发定时器/ 计数器1 的输入捕捉功能。 此外,比较器还可触发自己专有的、独立的中断。用
2、户可以选择比较器是以上升沿、下降沿还是交替变化的边沿来触发中断。,图6.1为比较器及其外围逻辑电路的框图。,1、特殊功能IO寄存器SFIOR,Bit3ACME:模拟比较器多路复用器使能 当此位为逻辑“1”,且ADC处于关闭状态(ADCSRA 寄存器的ADEN为“0”)时,ADC多路复用器为模拟比较器选择负极输入。当此位为“0”时,AIN1连接到比较器的负极输入端。,2、模拟比较器控制和状态寄存器(ACSR),例如ACSR0 xXX; /可根据下面的引脚功能,来设置相应的值。,Bit7ACD:模拟比较器禁用 Bit6ACBG:选择模拟比较器的能隙基准源 Bit5 ACO:模拟比较器输出 Bit4
3、ACI:模拟比较器中断标志 Bit 3 ACIE: 模拟比较器中断使能 Bit 2 ACIC: 模拟比较器输入捕捉使能 Bits 1, 0 ACIS1, ACIS0: 模拟比较器中断模式选择,需要改变ACIS1/ACIS0 时,必须清零ACSR 寄存器的中断使能位来禁止模拟比较器中断。否则有可能在改变这两位时产生中断。,6.2 模数转换器 6.2.1 主要特点 ATmega16有一个10位的逐次逼近型ADC。ADC与一个8通道的模拟多路复用器连接,能对来自端口A的8路单端输入电压进行采样。单端电压输入以0V (GND)为基准。 器件还支持16 路差分电压输入组合。两路差分输入(ADC1、ADC
4、0 与ADC3、ADC2)有可编程增益级,在A/D 转换前给差分输入电压提供0dB(1x)、20dB(10 x) 或46dB(200 x)的放大级。,七路差分模拟输入通道共享一个通用负端(ADC1), 而其他任何ADC 输入可做为正输入端。如果使用1x 或10 x 增益,可得到8 位分辨率。如果使用200 x 增益,可得到7 位分辨率。 ADC 包括一个采样保持电路,以确保在转换过程中输入到ADC 的电压保持恒定。 ADC 由AVCC 引脚单独提供电源。AVCC 与VCC 之间的偏差不能超过 0.3V。 标称值为2.56V 的基准电压,以及AVCC,都位于器件之内。基准电压可以通过在AREF引
5、脚上加一个电容进行解耦,以更好地抑制噪声。,图6.2 模数转换器方框图,6.2.2 ADC的工作原理 ADC 通过逐次逼近的方法将输入的模拟电压转换成一个10 位的数字量。最小值代表GND,最大值代表AREF引脚上的电压再减去1 LSB。通过写ADMUX寄存器的REFSn位可以把AVCC 或内部2.56V 的参考电压连接到AREF 引脚。在AREF 上外加电容可以对片内参考电压进行解耦以提高噪声抑制性能。,6.2.3 启动ADC转换 向ADC 启动转换位ADSC 位写“1”可以启动单次转换。在转换过程中此位保持为高,直到转换结束,然后被硬件清零。如果在转换过程中选择了另一个通道,那么ADC 会
6、在改变通道前完成这一次转换。,图6.3 ADC 自动触发逻辑,使用ADC 中断标志作为触发源,可以在正在进行的转换结束后即开始下一次ADC 转换。之后ADC 便工作在连续转换模式,持续地进行采样并对ADC 数据寄存器进行更新。第一次转换通过向ADCSRA 寄存器的ADSC 写1 来启动。 如果使能了自动触发,置位ADCSRA 寄存器的ADSC 将启动单次转换。ADSC 标志还可用来检测转换是否在进行之中。不论转换是如何启动的,在转换进行过程中ADSC 一直为1。,6.2.4 预分频及ADC 转换时序,图6.4 ADC 预分频器,图6.5 ADC 时序图, 第一次转换( 单次转换模式),图6.6
7、 ADC 时序图,单次转换,图6.7 ADC 时序图,自动触发的转换,图6.8 ADC 时序图,连续转换,表6.3 ADC转换时间,6.2.5 差分增益信道 当使用差分增益通道,需要考虑转换的确定特征。 差分转换与内部时钟CKADC2 同步等于ADC 时钟的一半。同步是当ADC 接口在CKADC2边沿出现采样与保持时自动实现的。 如果使用差分增益通道且通过自动触发启动转换,在转换时ADC 必须关闭。当使用自动触发时, ADC 预分频器在转换启动前复位。由于在转换前的增益级依靠稳定的ADC 时钟,该转换无效。,6.2.6 通道或基准源的选择 ADMUX寄存器中的MUXn及REFS1:0通过临时寄
8、存器实现了单缓冲。CPU可对此临时寄存器进行随机访问。这保证了在转换过程中通道和基准源的切换发生于安全的时刻。 在转换启动之前通道及基准源的选择可随时进行。一旦转换开始就不允许再选择通道和基准源了,从而保证ADC 有充足的采样时间。,6.2.7 ADC 输入通道 选择模拟通道时请注意以下几个方面: 工作于单次转换模式时,总是在启动转换之前选定通道。在ADSC 置位后的一个ADC 时钟周期就可以选择新的模拟输入通道了。但是最简单的办法是等待转换结束后再改变通道。,在连续转换模式下,总是在第一次转换开始之前选定通道。在ADSC 置位后的一个ADC时钟周期就可以选择新的模拟输入通道了。但是最简单的办
9、法是等待转换结束后再改变通道。 然而,此时新一次转换已经自动开始了,下一次的转换结果反映的是以前选定的模拟输入通道。以后的转换才是针对新通道的。,6.2.8 ADC 基准电压源 ADC的参考电压源(VREF)反映了ADC的转换范围。若单端通道电平超过了VREF,其结果将接近0 x3FF。VREF 可以是AVCC、内部2.56V 基准或外接于AREF 引脚的电压。 AVCC通过一个无源开关与ADC相连。片内的2.56V参考电压由能隙基准源(VBG)通过内部放大器产生。无论是哪种情况,AREF 都直接与ADC 相连,通过在AREF 与地之间外加电容可以提高参考电压的抗噪性。,6.2.9 ADC 噪
10、声抑制器 ADC的噪声抑制器使其可以在睡眠模式下进行转换,从而降低由于CPU及外围I/O设备噪声引入的影响。噪声抑制器可在ADC 降噪模式及空闲模式下使用。为了使用这一特性,应采用如下步骤: 1. 确定ADC 已经使能,且没有处于转换状态。工作模式应该为单次转换,并且ADC 转换结束中断使能。 2. 进入ADC 降噪模式( 或空闲模式)。一旦CPU 被挂起, ADC 便开始转换。,3. 如果在ADC转换结束之前没有其他中断产生,那么ADC中断将唤醒CPU并执行ADC 转换结束中断服务程序。如果在ADC 转换结束之前有其他的中断源唤醒了CPU,对应的中断服务程序得到执行。ADC 转换结束后产生A
11、DC 转换结束中断请求。CPU 将工作到新的休眠指令得到执行。,6.2.10 模拟输入电路 单端通道的模拟输入电路见图6.9 。不论是否用作ADC 的输入通道,输入到ADCn的模拟信号都受到引脚电容及输入泄露的影响。用作ADC 的输入通道时,模拟信号源必须通过一个串联电阻( 输入通道的组合电阻) 驱动采样/保持(S/H) 电容。,图6.9 模拟输入电路,图6.10所示为一通用的模拟信号输入电路。它对模拟输入信号进行偏移和增益处理,使输入到模拟引脚(ADC0ADC7)的电压为05V,偏移细调通过R2实现。增益范围由调整R5完成。,图6.10 偏移和增益整定电路,例6.1 电压采集,通道ADC2,
12、ADC3。 ADMUX=0 xED(ADC3-ADC2,10 x增益,2.56V参考电压,左对齐) ADC3上电压为300mV,ADC2电压为500mV。 ADCR=512*10*(300-500)/2560=-400=0 x270 ADCL将读为0 x00,且ADCH 读为0 x9C。给ADLAR写0右对齐:ADCL=0 x70, ADCH=0 x02。,6.2.11 ADC 转换结果 转换结束后(ADIF 为高),转换结果被存入ADC 结果寄存器(ADCL, ADCH)。单次转换的结果如下:,式中,VIN 为被选中引脚的输入电压,VREF 为参考电压,0 x000 代表模拟地电平, 0 x
13、3FF 代表所选参考电压的数值减去1LSB。,如果使用差分通道,结果是:,式中,VPOS 为输入引脚正电压,VNEG 为输入引脚负电压,GAIN 为选定的增益因子,且VREF 为参考电压。结果用2 的补码形式表示,从0 x200(-512d)到0 x1FF(+511d)。如果用户希望对结果执行快速极性检测,判断MSB( ADCH 中ADC9 ),如该位为1,结果为负;该位为0,结果为正。,表6.4 给出当选定的增益为GAIN且参考电压为VREF 的差分输入对(ADCn - ADCm)的输入码结果。 下表6.4 输入电压与输出码的相互关系,1、 ADC多工选择寄存器(ADMUX),例如:ADMU
14、X0 xXX;/根据下面的表6.5和表6.6来选择ADC的参考电压和通道, Bit 7:6 REFS1:0: 参考电压选择 表6.5 ADC参考电压选择,Bit5ADLAR:ADC转换结果左对齐 Bits 4:0 MUX4:0: 模拟通道与增益选择位 细节见表6.6。,2、 ADC控制和状态寄存器A(ADCSRA),例如:ADCSRA0 xXX;/根据使用情况,对所需要的功能标志位置位即可 ADPS20是用来选择几分频, Bit7ADEN:ADC使能 Bit 6 ADSC: ADC 开始转换 Bit 5 ADATE: ADC 自动触发使能 Bit 4 ADIF: ADC 中断标志 Bit 3
15、ADIE: ADC 中断使能 Bits 2:0 ADPS2:0: ADC 预分频器选择位,表6.7 ADC预分选择,3、ADC数据寄存器(ADCL及ADCH)ADLAR = 0,ADLAR = 1,ADC 转换结束后,转换结果存于这两个寄存器之中。如果采用差分通道,结果由2 的补码形式表示。 读取ADCL 之后,ADC 数据寄存器一直要等到ADCH 也被读出才可以进行数据更新。因此,如果转换结果为左对齐,且要求的精度不高于8 比特,那么仅需读取ADCH 就足够了。否则必须先读出ADCL 再读ADCH。,4、 特殊功能IO 寄存器(SFIOR), Bit 7:5 ADTS2:0: ADC 自动触
16、发源 若ADCSRA寄存器的ADATE置位,ADTS的值将确定触发ADC 转换的触发源;否则,ADTS的设置没有意义。被选中的中断标志在其上升沿触发ADC转换。,表6.8 ADC自动触发选择, Bit 4Res:保留位 这一位保留。为了与以后的器件相兼容,在写SFIOR 时这一位应写0。,例6.4 图6.11是以ATmage16为核心构成多路电力参数数据采集系统,UN1UN6是精密运放,ADC选择片内2.56为基准电压,64分频时钟源,将采集数值在数码管上显示出来,控制数码管74LS595从上到下排列顺序为:c、b、a。 1、电力参数数据采集系统原理图 图6.11 ATmage16构成多路数据
17、采集系统原理图,2、电力参数数据采集流 程框图 图6.12 电力参数数据采集流程框图,6.3脉冲宽度调制输出 PWM(DA)功能特点及功能 1、 脉冲宽度调制输出 PWM的结构和工作原理 将某个要转换的数字量(例512)写入到OCR0(输出比较寄存器)中,其值不断与8位循环记数器的内容比较。二者相等时,比较输出正脉冲,RS触发器复位,使PWM/PB3端变为低电位。,OCR0中数据为80H时,PWM/PB3端输出波形如图6.13所示。,图6.13 当数据512时的输出波形,从上述可知,输出波形的周期固定为1024T(状态周期),当晶振为8MHz时 1024T=10243/8=384s。占空比=O
18、CR0中数据/256,如上例占空比=512/1024=50%。 复位时OCR0清0, 占空比=00H1024=0%,即PWMPB3端始终为低电平。图6.14给出了几种 典型的PWM输出波形图,若将这些波形积分,则可得到10位分辨率的模拟信号。 图6.14 PWM输出波形,2、 PWM应用举例 例6.3 产生 PWM波形,占空比参数值由a控制,频率为CPU主频确定。,void timers_init(char a)/输入参数:占空比由a控制 sbi(DDRD, 5);/输出比较器A定义为输出 OCR1A = 1024-10.24*a;/定时器1的输出比较器A,比较匹配预定值 OCR1B = 0
19、x00;/定时器1的输出比较器B TCNT1 = 0 x00;/T1的计数器,计数当前值 TCCR1A = 0 xc3;/T1的控制字,比较匹配时置位OC1A/OC1B,在TOP时清零 TCCR1B = 0 x09;/T1的控制字,无预分频,clkI/O/1 TOP(计数上限值) ,int main(void) timers_init(25);/参数a为25,产生占空比为25的PWM波形 ,PWM引脚输出的脉冲信号经滤波后可变为模拟信号。为了获得较高精度的8位DA输出,在滤波前先通过缓冲器将PWM脉冲信号摆幅转化为05V,再经滤波、放大输出。DA缓冲器电路如图6-13所示。,图6.15 D/A
20、缓冲器电路,6.4 数字滤波方法 单片机系统面对的现场往往比较恶劣,因此所采集信号中总会混杂有各类干扰。除了采用硬件进行滤波(如阻容滤波)外,对输入计算机的信号进行数字滤波也是十分必要的。 所谓数字滤波,就是通过一定的计算程序,对采集的数据进行处理,以提高有用信号在采集值中的比例,减少各种干扰和噪声。,与阻容滤波相比,数字滤波具有如下一些优点: 1、可以根据干扰的类型,设计出相应类型的数字滤波器。 2、滤波范围宽,特别是对于低频信号(如0.001Hz及以下)更为有效,而模拟滤波器由于电容容量的限制,频率不能太低。 3、可靠性高。 4、数字滤波程序可以多路共享。,下面介绍几种常用的数字滤波方法。
21、 1算术平均值滤波 设测量值为,则每采集了N个数据后,进行一次算术平均。其计算方法如式(6.1)所示:,(6 1),根据数理统计的理论,上式的算术平均值实际上是这样一个值,它与各采样值间的误差的平方和最小。得到后即可计算出偏差值: 从上面可以看出,每计算一次控制器输出值,就必须采样N次。因此,N的取值不能太大。算术平均值法主要对压力,流量等含有周期性脉动的信号有效。而对突发性的脉冲干扰,这种滤波方法的效果则不理想。,(6 2 ),2中值滤波 所谓中值滤波法是连续采样n次,首先要做的工作是先采集n个参数并按大小排序,即有,或者从大到小排序。 如果当N为偶数时, 如果当N为奇数时,,中值滤波既可以
22、去掉由于偶然因数引起的干扰,同时对与脉动干扰也比较有效。但是这种方法由于计算量比较大,对于一些需要快速采样的参数就不十分合适。 中值滤波的关键所在是形成按大小顺序排列的一组数。假设采样N次,如果使用高级语言,首先将N个采样值按从大到小(或从小到大)排列,然后将其放在一个数组X(N)里,此时X(N+1)/2)则为采样值。,3表决滤波 首先要做的工作是先采集N个参数并按大小排序,即有x1x2xn-1xn,去掉一个最大值xn和一个最小值x1再求其均值,其表达式为,4限幅滤波 如果采集到的参数波动较大,可采用此滤波方式。先定义为原来的值,是为新采样到的值,有以下三种情况: 若 xn - xn-10;
23、则xn=xn 1 若 xn - xn-1=0; 则xn=xn 若 xn - xn-10; 则xn=xn + 1,这种滤波方式非常简单,运算也很节省时间,可以很有效地使采样到的参数处理得很平滑,但只能用于惯性较大的系统。 这种滤波方式非常简单,运算也很节省时间,可以很有效地使采样到的参数处理得很平滑,但只能用于惯性较大的系统。,5去最老值滤波 先将采样到的参数按时间次序排序,x1、x2、 xn ,其中x1 最老,xn最新, 当再采集一个参数xn+1后作如下变化: x1=x2、x2=x3, ,xn-1=xn,xn=xn+1 然后进行一次算术平均。,6程序判断滤波 如果我们事先就知道,所采样的信号,
24、其在两个采样点之间不可能有很大的变化,则可以根据现场的经验确定一个最大偏差m。每次采样后都将其与前一个采样值进行比较,一旦两个值的差超出了m,则表明采集的信号中包含有较大的干扰,应该去掉;如果未超出m,可将该数据作为本次采样值。这种方法对于一些突发性的干扰,如大功率用电设备的启停或其他冲击性负载带来的电流尖峰干扰比较有效。,例6.7 图6.17是ATmega16进行电压采集进行后,经中值滤波后并用数码管显示程序。 图6.17 电压采集和数码管显示原理图,uchar led241= 0 x60,0 x7e,0 x31,0 x32,0 x2e,0 xa2,0 xa0,0 x7a,0 x20,0 x
25、22,0 x28,0 xa4,0 xe1,0 x34,0 xa1,0 xa9, 0 x40,0 x5e,0 x11,0 x12,0 x0e,0 x82,0 x80,0 x5a,0 x00,0 x02,0 x08,0 x84,0 xc1,0 x14,0 x81,0 x89, 0 xff,0 xbf,0 x64,0 xdf,0 xa1,0 x68,0 x34,0 xf4,0 xa5; /数码管编码 AD转换程序: #include JL_f1.h #include JL_f1ADC.h,extern uchar ub; void adc_init(void) /WIZARD_MAP(ADC) /
26、ADC Clock: 125.000kHz / ADC Voltage Reference: AVCC / ADC Noise Canceler Disabled SFIOR |= 0 x0;/特殊功能I/O寄存器 ADMUX = 0 x40;/ADC多工选择寄存器,AVCC, AREF 引脚外加滤波电容 ADCSRA = 0 x86; /ADC控制和状态寄存器A,0 x86为ADC使能,预分频为64分频 /WIZARD_MAP(ADC) ,unsigned int read_adc(unsigned char adc_input) / Set ADC input ADMUX ,/ 电压获取程
27、序 uint get_u(void) double in=0; static double d1,d2,d3,d_new,m1,m2,m3; d_new=read_adc(0); d1=d2; d2=d3; d3=d_new; m1=m2;m2=m3; if(d1d3)|(d1d2) m3=d1;,else if(d2d3)|(d2d1) m3=d2; else m3=d3; /三个AD转换后的值中取中间值 in=(0*m1+0*m2+3.0*m3)/3.0; /三个中间值加权平均 in*=5; return (uint)in; ,/ 电压显示程序 void lcd_u(void) ad1=g
28、et_u(); if(ub=1) ub=0; else ad1=0; led19=(ad1/1000)%10; led18=(ad1/100)%10; led17=(ad1/10)%10; led16=39; ,/ 数码管显示程序 /RCK=PA5 SCK=PA6 SER=PA7 void led_outbyt(char a) /显示一个字符 char i,d; for(i=0;i8;i+) cbi(PORTA,6); /595移位寄存器使能 d=a /595串行输入使能,else cbi(PORTA,7); a=1; sbi(PORTA,6); void led_list(void) /循环显示 uchar i,j; j=1;,for(i=0;i8;i+) led_outbyt(led2ledi); led_outbyt(j); led_outbyt(led2ledi+8); led_outbyt(j); led_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度智慧农业灌溉系统建设与运营管理合同4篇
- 2025年度二零二五版环保技术研发项目保证合同4篇
- 二零二五版二手房买卖合同中的物业费结算办法3篇
- 2025年度综合性消防安全设施维护保养服务协议4篇
- 2025年智能安置房租赁合同示范文本3篇
- 个人租车位简易协议合同 2篇
- 上海律协发布COVID(2024版)
- 个人劳务用工合同范本 2篇
- 2025年度池塘渔业资源增殖放流合作合同3篇
- 2025年度艺术品代持协议书3篇
- 2024年全国体育专业单独招生考试数学试卷试题真题(含答案)
- 北师大版小学三年级上册数学第五单元《周长》测试卷(含答案)
- DB45T 1950-2019 对叶百部生产技术规程
- 新修订《保密法》知识考试题及答案
- 电工基础知识培训课程
- 住宅楼安全性检测鉴定方案
- 广东省潮州市潮安区2023-2024学年五年级上学期期末考试数学试题
- 市政道路及设施零星养护服务技术方案(技术标)
- 《论语》学而篇-第一课件
- 《写美食有方法》课件
- (完整word版)申论写作格子纸模板
评论
0/150
提交评论