您现在的位置是:首页 > 单片机

基于LM331和单片机的压力数据采集

2020-08-15 05:01:04

1 引言
   
A/D转换器广泛应用于单片机控制数据采集的模拟信号转换。而对于长距离数据传输,高精确度应用,使用一般A/D转换器则存在诸多缺点,可使用V/F转换器代替A/D转换器。V/F转换器与单片机的接口只需一个I/O端口,输入频率信号,且接口简单,占用硬件资源少。以单片机和V/F转换器为核心的数据采集系统,能够实时测量由传感器检测的压力,并满足系统测量精度要求。

2 系统基本原理结构
   
压力传感器将被测压力转换为电压信号,通过V/F转换器把传感器输出的电压信号转换成相对应的频率信号,采用光电耦合器将频率信号传输到单片机,利用单片机内部的定时/计数器测量信号频率,采用单片机强运算功能,根据电压与频率的线性关系计算压力值。图1为系统结构图。


3 系统硬件设计

3.1 压力传感器MPXV50014G模块
   
集成硅压力传感器MPXV5004G内部除传感单元外,还包含信号调理器、温度补偿器和压力修正电路,特别适用于由单片机构成的检测系统。MPXV5004G压力传感器采用额定5 V供电电压,最大测量压差为3.92 kPa,最大耐受压力为16 kPa,温度补偿范围为一30℃~100℃。在工作温度为10℃~60℃,压力范围为0~4 kPa时,该压力传感器具有良好的线性,输出关系:


   
式中:VOUT是输出电压,VS是工作电压,P是压力值,误差为0.045 V。
   
使用该传感器时,要在供电与地之间加去耦电容,滤除器件本身产生和电源所含的高频信号干扰;在信号输出与地之间加去耦电容,滤除输出信号的噪声成分。图2为去耦电容配置。



应用中,考虑到压力传感器因温度变化或器件老化等导致的零点漂移,必须通过校正零点,修正输出值,以使其输出值在较长工作时间内都能保持足够的正确性和精确度。

3.2 V/F转换器LM331模块
   
LM331是通用型V/F转换器,频率范围为1~100 kHz,最大非线性误差为0.01%,最大温漂为50 ppm/℃,电源范围为4~40 V,输入电压范围为一2.O V~VS。当4.5 V≤VS≤10 V时.电源电压对增益的影响为0.1%V;当10 V≤VS≤40 V时,电源电压对增益的影响为0.06%V。LM331的V/F转换外部电路,如图3所示。



图3中,输出频率fout=KVIN,其中K=Rs/(2.09RtCtRL)。选用典型值Rt=6.8 kΩ,RL=100 kΩ,Ct=0.0lμF。系统中,取K=1000,故Rs=14.212 kΩ。电路中Rs用一只12 kΩ的固定电阻和一只5 kΩ的可调电阻串联组成,用于调整LM33l的增益偏差和RL,Rt,Ct所引起的偏差。CIN为滤波电容,一般取在0.01~0.1μF,在滤波效果较好的情况下,CIN采用lμF的电容。为了提高精度及稳定性,以上阻容元件选用低温度系数的器件,最好是金属膜电阻和聚苯乙烯或聚丙稀电容器。

3.3  V/F转换器和单片机的接口(光电耦合器6N137)
   
在采用两点以上接地的检测或控制系统中,为了抑制地电位差形成的干扰,运用隔离技术切断环路电流是非常有效的方法。从原理上,隔离技术可分为电磁隔离和光电隔离。光电隔离是在两个电路问加入一个光电耦合器,光电耦合器的线性范围有限,用于数字信号传输。同时,光电耦合器的体积小,转换速度快,因而广泛应用于由微机构成的检测或控制系统。采用光电耦合器隔离V/F转换器与单片机,增强系统的抗于扰能力,防止因外部环境恶劣而导致的单片机死机或程序跑飞,同时对单片机也起到电气保护作用。这里选用TOSHIBA的6N137型光电耦合器。图4为6N137的典型应用电路。



6N137的引脚2为信号输入端,当输入信号为高电平时,发光二极管发光,反向偏置的光敏管光照后被导通,经电流一电压转换送到与门,与门的另一输入端(引脚7)为使能端,当使能端为高电平时,信号输出端(引脚6)输出低电平。当输入信号为低电平时,输出为高电平。Vcc(引脚8)和地(引脚5)之间必须接一只O.1μF高频特性良好的电容,且应尽量靠近引脚8和引脚5放置。发光二极管正向压降1.2~1.7 V,正向电流6.5~15 mA,所以在引脚3和地之间必须加470Ω限流电阻。

3.4 单片机AT89C51模块
   
该系统设计需用单片机的一个中断.一个定时器。一个计数器。这里选用AT89C51,其包含2个16位定时/计数器和5个中断。当MCS-51内部的定时/计数器选定为定时模式时,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器加l;一个机器周期为外部时钟振荡频率的1/12,采用12 MHz的晶体振荡器,机器周期为1μs。当内部定时/计数器被选定为计数模式时计数脉冲来自外部输入引脚P3.4(T0)或P3.5(T1)。输入信号产生由1到O的负跳变时,计数器加1。由于一次负跳变要用两个机器周期,所以选用12MHz晶体振荡器时,为确保电平在变化之前被采样一次,外部计数输入信号不能超过500 kHz。16位定时/计数器的最高计数值为65 535,在这里已满足设计需要。系统设置AT89C51的T0为定时器,T1为计数器,当单片机接收到中断信号时,定时、计数同时开始,定时结束,计数也随之结束。再利用单片机的运算功能将计数值除以定时值,就能得到所测信号的频率。通过频率与电压,电压与所测压力的线性关系,即可得到相应的压力值。

4 系统软件设计
   
系统软件设计采用Keil C51语言编写,应用模块化设计,主要包括测量函数,中断子程序,控制函数。主程序流程图如图5所示。



设定TO为定时器,基本定时时间为50 ms,Tl为计数器。IE=Ox8a,TMOD=Ox51。当P3.2口为低电平时,状态标志位flag变为O,开始测量,利用中断,每当定时满500 ms时,计数器停止计数,完成测量,状态标志位flag变为1,读取计数值,以计算频率,并通过频率求得压力。当P3.2口为高电平时,进入依据测量所得压力值而进行的对传感器监测对象的控制阶段。以下给出测量函数的程序代码和T0中断子程序:



5 结语
   
该测量系统设计应用广泛,如汽车电子控制、工业生产监控、安全防护以及家用电器等;结构简单,精确度高,性能稳定,适合那些对测量精度要求准确,并有一定抗干扰能力的场合。