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)积分电容应采用漏电小的聚丙烯电容,基准分压电阻和积分电阻应采用温度系数和噪声较小的电阻。 责任编辑:gt (责任编辑:admin) |