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

2009-08-10 10:00:48 来源:《半导体器件应用》2009年8月刊

1  引言
A/D转换器广泛应用于单片机控制数据采集的模拟信号转换。而对于长距离数据传输,高精确度应用,使用一般A/D转换器则存在诸多缺点,可使用V/F转换器代替A/D转换器。V/F转换器与单片机的接口只需一个I/O端口,输入频率信号,且接口简单,占用硬件资源少。以单片机和V/F转换器为核心的数据采集系统,能够实时测量由传感器检测的压力,并满足系统测量精度要求[1]。
2  系统基本原理结构
压力传感器将被测压力转换为电压信号,通过V/F转换器把传感器输出的电压信号转换成相对应的频率信号,采用光电耦合器将频率信号传输到单片机,利用单片机内部的定时/计数器测量信号频率,采用单片机强运算功能,根据电压与频率的线性关系计算压力值。图1为系统结构框图。
3 系统硬件设计
3.1 压力传感器MPXV5004G模块
集成硅压力传感器MPXV5004内部除传感单元外,还包含信号调理器、温度补偿器和压力修正电路,特别适用于由单片机构成的检测系统。MPXV5004G压力传感器采用额定5V供电电压,最大测量压差为3.92kPa,最大耐受压力为16kPa,温度补偿范围为-30℃~100℃。在工作温度为10℃~60℃,压力范围为0~4kPa时,该压力传感器具有良好的线性,输出关系如下式:
VOUT=VS(0.2P+0.2)±0.045V                    (1)
式中:VOUT是输出电压,VS是工作电压,P是压力值,误差为0.045V。
使用该传感器时,要在供电与地之间加去耦电容,滤除器件本身产生和电源所含的高频信号干扰;在信号输出与地之间加去耦电容,滤除输出信号的噪声成分[2]。图2为去耦电容配置。
应用中,考虑到压力传感器因温度变化或器件老化等导致的零点漂移,必须通过校正零点,修正输出值,以使其输出值在较长工作时间内都能保持足够的正确性和精确度[3]。
3.2 V/F转换器LM331模块
LM331是通用型V/F转换器,频率范围为(1~100)kHz,最大非线性误差为0.01%,最大温漂为50ppm/℃,电源范围为4V~40V,输入电压范围为-2.0V~Vs。当4.5V≤Vs≤10V时,电源电压对增益的影响为0.1%V;当10V≤Vs≤40V时,电源电压对增益的影响为0.06%V。LM331的V/F转换外部电路如图3所示。
图3中,输出频率fout=KVIN,其中K=RS/(2.09RtCtRL)。选用典型值Rt=6.8kΩ,RL=100kΩ,Ct=0.01μF。系统中,取K=1000,故RS=14.212kΩ。电路中RS用一只12kΩ的固定电阻和一只5kΩ的可调电阻串联组成,用于调整LM331的增益偏差和RL,Rt,Ct所引起的偏差。CIN为滤波电容,一般取在0.01μF~0.1μF,在滤波效果较好的情况下,CIN采用1μF的电容。为了提高精度及稳定性,以上阻容元件选用低温度系数的器件,最好是金属膜电阻和聚苯乙烯或聚丙稀电容器[4]。
3.3 V/F转换器和单片机的接口(光电耦合器6N137)
在采用两点以上接地的检测或控制系统中,为了抑制地电位差形成的干扰,运用隔离技术切断环路电流是非常有效的方法。从原理上,隔离技术可分为电磁隔离和光电隔离。光电隔离是在两个电路间加入一个光电耦合器,光电耦合器的线性范围有限,用于数字信号传输。同时,光电耦合器的体积小,转换速度快,因而广泛应用于由微机构成的检测或控制系统[5]。采用电耦合器隔离V/F转换器与单片机,增强系统的抗干扰能力,防止因外部环境恶劣而导致的单片机死机或程序跑飞,同时对单片机也起到电气保护作用。这里选用TOSHIBA的6N137型光电耦合器[6]。图4为6N137的典型应用电路。
6N137的引脚2为信号输入端,当输入信号为高电平时,发光二极管发光,反向偏置的光敏管光照后被导通,经电流-电压转换送到与门,与门的另一输入端(引脚7)为使能端,当使能端为高电平时,信号输出端(引脚6)输出低电平。当输入信号为低电平时,输出为高电平。Vcc(引脚8)和地(引脚5)之间必须接一只0.1μF高频特性良好的电容,且应尽量靠近引脚8和引脚5放置。发光二极管正向压降1.2V~1.7V,正向电流6.5mA~15mA,所以在引脚3和地之间必须加470Ω限流电阻。
3.4单片机AT89C51模块
该系统设计需用单片机的一个中断,一个定时器,一个计数器。这里选用AT89C51,其包含2个16位定时/计数器和5个中断。当MCS-51内部的定时/计数器选定时模式时,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器加1;一个机器周期为外部时钟振荡频率的1/12,采用12MHz的晶体振荡器,机器周期为1μs。当内部定时/计数器被选定为计数模式时计数脉冲来自外部输入引脚P3.4(T0)或P3.5(T1)。输入信号产生由1到0的负跳变时,计数器加1。由于一次负跳变要用两个机器周期,所以选用12MHz晶体振荡器时,为确保电平在变化之前被采样一次,外部计数输入信号不能超过500kHz。16位定时/计数器的最高计数值65535,在这里已满足设计需要。系统设置AT89C51的T0为定时器,T1为计数器,当单片机接收到中断信号时,定时、计数同时开始,定时结束,计数也随之结束。再利用单片机的运算功能将计数值除以定时值,就能得到所测信号的频率。通过频率与电压,电压与所测压力的线性关系,即可得到相应的压力值。
4系统软件设计[7-8]
系统软件设计采用keil C51语言编写,应用模块化设计,主要包括测量函数,中断子程序,控制函数。主程序流程图如图5所示。
设定T0为定时器,基于定时时间为50ms,T1为计数器。IE=0x8a,TMOD=0x51。当P3.2口为低电平时,状态标志位flag变为0,开始测量,利用中断,每当定时满500ms时,计数器停止计数,完成测量。状态标志位flag变为1,读取计数值,以计算频率,并通过频率求得压力。当P3.2口为高电平时,进入依据测量所得压力值而进行的对传感器监测对象的控制阶段。以下给出测量函数的程序代码和T0中断子程序:
//测量函数
void measure( )
{     Controll=0xff; //关闭控制端口
  IE=0x8a; //启动T0, T1
  TMOD=0x51; //设定工作方式
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256; //基本定时时间
  TH1=0, TL1=0; //计数器归零
  TR0=1, TR1=1; //启动T0, T1
  }
  //T0中断子程序
  void Timer0( ) interrupt 1
  {     TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    if(++times==10)   //达到500ms
    {       times=0;    //重新计数
      flag=1;    //完成测量
      TR1=0, TR0=0;    //关闭定时/计数器T1, T0
      DPL=TL1;
      DPH=TH1;
      count=DPTR;    //计数量放入count变量
      freq=2*count;    //求得频率
      pressure=freq-1000;    //求得压力值
      …………
       …………
     }
5 结语
该汤匙系统设计应用广泛,如汽车电子控制、工业生产监控、安全防护以及家用电器等;结构简单,精确度高,性能稳定,适合那些对测量精度要求准确,并有一定抗干扰能力的场合。
参考文献
[1] 张毅刚, 彭喜元, 姜守达, 等. 新编MCS-51单片机应用设计[M]. 2版. 哈尔滨: 哈尔滨工业大学出版社,2003.
[2] Freescale Semiconductor. MPXV5004G Data sheet.[DB/OL]. 2008. http://www.dzsc.com/icstock/204/MPXV5004G.html.
[3] 林轶. 飞思卡尔典型传感器的应用[J]. 单片机与嵌入式系统应用, 2008(5): 78-79.
[4] 沈绍祥, 胡爱华. 基于单片机控制的数字气压计设计与实现[J]. 国外电子元器件, 2004(7): 66-69.
[5] 陈书旺, 张秀清, 董建彬. 传感器应用及电路设计[M]. 北京: 化学工业出版社, 2008.
[6] TOSHIBA Photocoupler. 6N137 Data sheet [DB/OL]. 2008. http://www.laogu.com/chip_168981.htm.
[7] 张义和, 王敏男, 许宏昌, 等. 例说51单片机(C语言版)[M]. 北京:人民邮电出版社,2008.
[8] 郝建国, 刘立新, 党建华. 基于单片机的频率计设计[J]. 西安邮电学报, 2003, 8(3):31-34.

转载自《电子设计工程》2009年第3期

本文为哔哥哔特资讯原创文章,未经允许和授权,不得转载,否则将严格追究法律责任;
Big-Bit 商务网

请使用微信扫码登陆

x
凌鸥学园天地 广告