摘 要:介绍用51单片机和通用分立器件构成的双积分a/d转换器,文中给出了详细的源程序清单。
关键词:双积分a/d转换器;单片机;定时器
doubleintegral a/d converter with reasonable price and practi cal character
lin haoshun
(land and resources information center of fujian province, fuzhou 350 001, china)
abstract: the essay mainly introduces how to make reasonable pri ce of doubleintegral highaccuracy a/d converter with 51 mcu and discrete dev ices in common use, presents program list.
key words: doubleintegral a/d converters; mcu; timer
1原理
51系列单片机具有两个以上16位双通道定时器(time0和time1),每个通道可选择为输入捕获方式来测量脉宽。我们用片内16位的定时器外接运放、比较器实现双积分a/d转换。原理图如图1所示(电源和5l单片机外围电路同常规电路),tl082是jfetinput运放;lm358作为比较器;mc4066是多路开关。51单片机p1口的p10、p11、p12作为输出,控制mc4066多路开关的输入选择;int0作为中断输入口,捕捉lm358比较器的输出电平跳变。c1为积分电容,常取0.22μf左右的聚丙烯电容,r2为积分电阻,可取500k左右,u2a为积分运放,u2a、c1、r2构成了积分器,u2b是过零检测运放。vin为输入电压,vref为基准电压,agnd为转换器的参考零点。vref和参考零点以r9、r10、r11分压产生。
测量前,tk3=1、tk2=0、tk1=0,打开u1c、u1d模拟开关,使积分器输入等于agnd,进入调零阶段,第一次启动转换的时间为300ms;启动以后调零时间为40ms。开始转换时,tk3=0、tk2=0、tk1=1,积分器输入接至输入电压,使vin通过积分电阻r2向c1充电,设积分时间为t。然后,将tk3=0、tk2=1、tk1=0,即积分器输入接至基准电压vref,电容c1开始通过r2向vref逆向放电。当运放的输出低于c2电容电压时,比较器输出反转。然后,tk3=1、tk2=0、tk1=0,打开u1c、u1d模拟开关,又进入调零阶段。设逆向充电的时间为t,则有
上式中vin是被测电压,t是正向积分时间,t是反向积分时间,vref是基准参考电压,agnd是转换器的参考零点。积分器输出波形如图2所示。
2软件结构
程序由初始化程序、输入捕捉中断服务程序、time0中断服务程序和调用该程序模块的接口程序组成。
程序初始化时,置tk3=1、tk2=0、tk1=0,软件300ms延时,进行初始调零;进行正向积分时,关闭int0,置tk3=0、tk2=0、tk1=1,开time0(设置time0工作在定时方式),进行定时正向积分;正向积分完毕,设置定时time0工作在输入捕获方式,打开int0,置tk3=0、tk2=1、tk1=0,进行反向积分,time0进行计时,利用另一个寄存器来计数定时器溢出次数;当比较器输出反转、int0中断产生时,单片机自动关断time0,完成一次双积分a/d转换。ad值(hex)=寄存器计数值*100+time0。
源程序清单如下:
3工艺上应注意的问题
(1)充放电时间(t和t)一般不能超过2rc。超过时线性误差会增大。
(2)pcb板设计时模数电源的地要分开,单点相接;ad转换部分元件连线尽可能短,这部分元件应与数字部分元件分开;pcb板应采用较厚铜箔的板材。
(3)保持pcb板和元件的清洁,模拟部分应涂上防水胶。
(4)积分电容应采用漏电小的聚丙烯电容,基准分压电阻和积分电阻应采用温度系数和噪声较小的电阻。