单片机内部模拟比较器的应用_第1页
单片机内部模拟比较器的应用_第2页
单片机内部模拟比较器的应用_第3页
单片机内部模拟比较器的应用_第4页
单片机内部模拟比较器的应用_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机内部模拟比较器的应用        摘要:文章介绍了一种利用单片机内部模拟比较器来构成AD转换器的方法,给出了它的具体电路设计,分析了电路原理、转换过程及误差原因。并提出了转换过程中的误差消除的实用办法。最后给出了整个工作过程的软件编程。关键词:单片机;比较器;AD转换器;定时计数器;恒流源     一般来说,内部带AD转换器的单片机价格都比较昂贵,而且一般只有8到10位的分辨率,这在高分辨率要求的场合显然不适用;而普通的单片机则根本没有AD转换器。随着现代电子技术的发展,出现了

2、一些体积小、内含模拟比较器的单片机,如ATMAL的AT89C2051、ZILOG的Z86E04、MICROCHIP的PIC16C620等,这些单片机在使用时连接比较器的端口一般只作普通IO使用,而对其内置的模拟比较器的应用却很少。下面以AT89C2051为例,谈谈利用单片机内置模拟比较器来构成AD转换器的新方法。1 硬件转换电路   AT89C2051是MCS51单片机系列中的一种,它虽然只有20个引脚,却集成了51系列单片机的标准内核,其中包括2k程序存储器、128字节数据存储器、2个16位定时计数器、一个标准全双工UART和一个精确的模拟比较器,而这个模拟比较器是以前产

3、品所没有的。图1是利用AT89C2051的模拟比较器来构成双积分式AD转换器的电路原理图。其中:内置模拟比较器的结构如图中虚线包围部分所示,比较器的正、反相输入端分别与P10、P11连接,这是两个漏极开路无上拉电阻的输出和输入端口,当向P10、P11写“1”时,M1、M2截止,相当于P10、P11对数字部分悬空,这时比较器的输入不受单片机端口输出的影响;由于P10、P11具有很强的灌电流能力,当写入“0”时,P10、P11能吸入20mA的灌电流,而且M1、M2的饱和电压很低,利用这一特点可为积分电容彻底放电。比较器输出端在单片机内部与P36连接,读P36就可得到比较器的输出结果。因此,利用AT

4、89C2051这个内置的比较器,再加上少量的外围器件就可组成双积分式AD转换器。图1中,I0为恒流源,其电流约为052mA,Cf是积分电容,Cf与I0的选择取决于AD转换的位数,Vref为参考电压,一般取模拟输入电压最大值的一半,U2是一个模拟开关,其中通道0接参考电压,通道1至7接模拟输入,即该AD转换器有7个输入通道。2 转换过程   当恒流源对电容器积分时,积分电容上的电压与时间成线性比例关系,这样利用单片机内部的定时计数器就可分别测量参考电压及模拟输入电压的积分时间,再通过CPU的运算来得到转换的结果。单片机的端口P12至P14可用来输出模拟开关通道选择地址,定时计

5、数器T0可设定为方式1,16位定时状态,用来测定积分时间。该转换过程可分5个步骤:    第一步为积分电容的放电,主要是向P11写“0”,利用其吸入灌电流大的特点为Cf放电,同时定时计数器T0清零。    第二步是参考电压积分,即模拟开关选择通道0,相当于Vref接至比较器的正输入端,并向P11写“1”,同时启动定时计数器,这样,I0开始对Cf积分;程序循环读P36状态,以检测比较器的输出结果,当积分电容上的积分电压稍大于(由于比较器有极高的增益,故可近似地看作等于)参考电压时,比较器的输出反转,P36发生由高至低的跳变。程序检测到这

6、个跳变后,停止定时计数器,保存此时的定时计数器结果Tref,此时可由恒流源对电容积分的关系式得出:Vref(I0 Tref)Cf第三步为积分电容放电,也就是重复第一步对Cf放电和定时计数器T0清零。    第四步为输入电压积分,此时模拟开关可选择通道17中的一个,相当于模拟输入电压Vx接至比较器的正输入端,重复第二步对输入电压积分,则可得到积分时间Tx,因此,Vx(I0Tx)Cf以上4步积分电容Cf上的积分电压波形如图2所示。    第五步是通过CPU的运算来求得AD转换的结果,由第二步结果除以第四步结果,可以得到: 

7、60;  VrefVxTrefTx    变换后得:    Vx(VrefTx)Tref    上式即AD转换的结果。    从上式可以看出:AD转换结果Vx只与Vref、Tx、Tref有关而与I0、Cf无关。这一点非常重要。因为它意味着在转换过程中抑制了恒流源和积分电容温漂所造成的误差,从而保证了该AD转换器工作的稳定性,这也正是积分式AD转换器的优点。理论上,该AD转换器的精度只取决于参考电压的稳定性和单片机定时计数器的精确度,而这两点都相对比较容易保证。当然,

8、这是指在恒流源为理想恒流源的情况,实际上恒流源的特性决定了该AD转换器的非线性误差,因此,在要求较高的场合,应选用线性好的恒流源集成电路,如LM334等,而在要求不高的情况下则可用图3所示的由分立元件组成的恒流源电路来实现AD转换。这时积分电容可选择温度系数较小的涤纶电容等。    需要注意的是,由于单片机采用端口查询的方式来检测比较器的输出结果,MCS51系列单片机端口查询命令需要占用2个机器周期,而定时计数器则需要在每个机器周期上加1。因此,在使用时有可能在比较器的输出反转时,程序不能立刻停止定时计数器,而是要等到下一个机器周期运行到CLRTR0语句时才停止。

9、这样,定时计数器的值总为偶数,这一问题如果不在程序中进行处理就会造成误差。解决的方法是增加I0、Cf的积分时间,即把积分时间加大一倍,再把定时计数器的读数即Tref和Tx除以2,这样就能把定时计数器多加了1的误差去掉而得到正确的结果。也就是说,如果要得到12位的分辨率,那么就需要有13位的定时计数器的读数。这种算法虽然牺牲了定时计数器的1位分辨率,加长了转换周期,但是确保了测量结果的准确性。对于有模拟比较器输出跳变中断的单片机如Z86E08等,上述过程处理起来会更简单,可用程序在比较器输出反转时来设定中断,并在中断子程序的开始时停止定时计数器,其读数减去从比较器中断到执行中断子程序之间的机器周

10、期数即为实际积分时间。    由于AT89C2051的定时计数器为16位,所以该AD转换器的分辨率实际上可以达到15位。调整I0和Cf的值就能改变AD转换器的分辨率,I0和Cf的取值与分辨率和单片机时钟频率之间的关系,应满足下式:12×2N1(f0 Vmax)CfIO12×216(f0Vmax) 式中Vmax 为最大模拟输入电压,N为分辨率位数,f0为单片机的时钟频率。根据上式,在设计时应保证足够长的积分时间以保证分辩率的要求。同时还应保证积分时间不能超过单片机的最大定时值,以免引起定时计数器的溢出。3 软件编程  整个工作过程的主要程序如下(该程序采用MCS51汇编语言编写)。除法子程序和20s延时子程序分别为:   (1)初始化主程序:4 结束语    上述所述,采用内部带模拟比较器的单片机加上少量的外国元件,并在程序上稍作处理,就能够构成一种新的A/D转换器,该方法可节约因扩展A/D而占用的大

温馨提示

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

评论

0/150

提交评论