NDIR红外探测器的嵌入式软件系统的开发
摘 要:催化燃烧式气体探测器具有选择性差、易中毒、使用寿命短等缺点,针对这种情况,设计了具有选择性好、不会中毒、使用寿命长等诸多优点的新型气体探测器——NDIR红外探测器。针对该探测器结合STM32单片机设计了相应的嵌入式软件系统,介绍了软件方面的整体框架和各模块的构成。重点描述了对通过放大器后的信号进行采样、滤波,再通过相应的算法对信号进行处理,并最终获得气体的浓度的过程。
关键词:STM32;NDIR红外探测器;嵌入式软件系统;浓度算法
中图分类号:TN92 文献标识码:B 文章编号:2095-1302(2015)01-00-04
0 引 言
在石油石化行业,碳氢类气体(甲烷、乙烷等)是最为常见的可燃性气体,油气管道和储罐的日常操作和设备的腐蚀老化等会导致此类气体的泄漏,石油石化的安全生产事故有很多都是可燃气体的燃烧爆炸引起的。因此,对这类气体进行在线探测、浓度预警和报警非常重要。传统的气体探测器如催化燃烧式探测器,其传感器易中毒,对气体的选择性差,使用寿命不长,平时维护的工作量大,也无法长期暴露在高浓度可燃气体中。而NDIR(Non-Dispersive Infrared)红外探测器则具有选择性好、使用寿命长、不会中毒、维护工作量小、响应时间快、能长期工作在高浓度气体中等诸多优点。因而开发这种新型的气体探测器,对确保石油石化安全生产意义重大,同时也减少了对相关进口产品的依赖。
1 基本原理
1.1 光谱吸收理论
光谱学研究表明当气体受到红外光束的照射时,气体分子会产生对红外光的吸收,将光能量转化为分子的振动与转动能量。在吸收过程中,气体分子只能吸收那些能量正好等于它的某两个能级之差的光子(ΔE=hv),所以不同分子结构的气体会吸收不同频率(能量)的光子,也就是说不同气体会对某个特定波段的红外光产生特征吸收。
1.2 NDIR探测器测量气体浓度原理
NDIR意为非分散红外光谱。NDIR探测器利用了不同气体在中红外波段(波长在2.5~25 μm间)的特征吸收原理。不同气体吸收红外光的强度与其本身的浓度有关,其吸收关系满足朗伯-比尔(Lambert-Beer)定律,具体表现形式如下:
I1=I0*e-aLC
式中,I0代表入射光强,I2是通过待测气体后的透射光强,L是光程,C是待测气体的浓度,α是吸收系数。当一定浓度的气体通过连续的中红外光谱时,由于气体对特定频率光的吸收,会使得传感器检测到该频率光强的减弱,而其他频率的光强不变,于是通过传感器得到的参考和测量通道的电信号,分别代表了原始光强和被待测气体吸收之后的光强,通过传感器的电信号,再经过后续的硬件与软件算法上的处理,我们最终便能得出气体的浓度。
2 探测器光路设计
在光路设计中我们选择了单光源、单探测器的对射式方式,具体结构如图1所示:
图1 整体光路设计
如图1所示,探测器的光路由红外光源、准直透镜、发射视窗、气室、接收视窗、接收透镜及PbSe探测器组成。红外光源发出的红外光经过准直透镜得到与气室平行的光线,红外光通过气室中,气室中的气体对红外光进行吸收,在接收端,通过接收透镜使光聚集成为一个光斑,在光斑打在热释电探测器上之前,需经过3~5 μm宽带滤光片,由此,通过探测器可以观察到两个信号的大小。
准直透镜使进入气室的光成为平行光,排除由于光路对测量造成的影响。在气室两端我们安装了视窗,视窗要求有足够高的透过率,视窗的作用是使气室与发射/接收端隔离,避免气体进入发射端/接收端,对光源/探测器造成影响,从而对测量结果造成影响。在接收端,接收透镜可以把打过来的平行光聚集成为一个光斑打在探测器上,这时要求探测器在透镜的中心轴上,探测器放置的位置在透镜的焦点附近得到最大的光强,同时在透镜和探测器中间放置一个3~5 μm的宽带滤波片,滤除可见光对探测结果造成的影响。
采用此种单光源对射式光路,有如下优点:(1)光路简单,可控性高,相比于双光源,不需要考虑光源同步性带来的误差,能更好地结合实际排除干扰的因素;(2)PbSe传感器相比传统的红外热释电探测器,灵敏度更高,响应速度更快,温漂很小,可以提高探测下限和测量精度。
3 基本硬件电路设计
红外气体探测器一般由以下几部分组成(如图2):光源驱动电路,探测器电路,信号处理电路,ADC采样以及MCU,输出电路构成。MCU控制光源发光,使测量光源和参考光源交替闪烁,使探测器可以在一个周期内得到测量信号和参考信号两个完整的信号。探测器得到的信号通信号处理模块进行放大和滤波。最后通过ADC进行采样并传入MCU进行数据处理得到浓度,并通过4~20 mA电路和RS 485电路对外输出。
3.1 光源驱动电路
光源由MCU定时器产生的方波进行驱动,方波的频率为2 Hz,占空比为50%(如图3)。
图3 光源驱动波形
在上位机上显示的AD采样波形图如图4所示,采样频率为2 kHz:
图4 测量信号
由图可以知道光源驱动频率和占空比的设置可以保证采到信号的最大最小值。
3.2 探测器接收电路
探测器方面我们选择的是PbSe探测器,这种探测器对于1~5 μm的红外信号有较宽的探测域,较快的响应速度,以及较好的温度特性,使其可以工作在室温的环境下。PbSe探测器的主要原理是光传导效应,是光打在探测器上,由于光传导效应使PbSe探测器的阻值发生变化,随着光强度增加,PbSe探测器的阻值会降低。
3.3 信号处理、采样与处理器
传感器的信号经前放电路、带通电路进行放大,然后用ADC对放大后的信号进行采样,给微处理器进行数据处理,微处理器将采集的数据进行软件滤波以及峰峰值的采集,并通过算法进行最后浓度的计算。微处理器对采样得到的信号进行处理,算法计算等工作,根据完成的功能要求等选择不同的单片机进行控制。
3.4 输出电路
输出电路我们选择了工业常用的4~20 mA输出电路,连接控制器,可以直观地显示计算出来的气体浓度;同时我们使用RS 485总线与PC通信,通过上位机对仪器参数进行更改,以及对采样数据进行观察。
4 软件设计
4.1 主处理器
NDIR主处理器为ST的32位单片机STM32F407VGT6, 主处理器在主板上的原理框图如图5所示。
4.2 嵌入式软件总体设计架构
本系统采用组件化编程,程序总体结构主要由以下3部分组成(如图6)。
图5 NDIR红外探测器主板原理框图
主控层:主要由系统初始化、系统自检及主流程控制模块组成。主体流程遵从:信号采集、信号处理、报警诊断、4~20mA输出。系统完成初始化及自检后,进入一套定义好的流程执行,即主流程。运行期间,前台处理程序:串口中断、定时器中断实时的执行,即只要发生中断,马上进入中断服务程序,若无中断的发生,则系统运行主流程(后台程序),见图中的MainProcess处理。应用层的流程图如图7所示。
图6 程序总体结构图
图7 应用层的流程图
组件层:主要是各个子模块组成,它们都是一个独立的功能模块,各模块之间不允许相互调用。组件层包含众多模块,各个模块又可以有多子模块组成。在模块划分上,按照实现功能的不同,来划分不同的模块,每个模块可以独立进行工作,也可以像搭积木一样和其他模块组合起来完成一个特定的功能。
Modbus通讯处理模块:实现接收、解析及发送通讯命令。
光源驱动管理模块:产生频率、占空比可调的PWM波形,驱动光源打开、关闭。
加热棒驱动管理模块:产生频率、占空比可调的PWM波形,驱动加热棒开启、关闭加热。
采样及数据处理模块:对信号采样、滤波处理后计算浓度,4~20 mA输出。
报警输出:报警判断,并输出自检、过程检测,及浓度、温度报警信息。
驱动层:主要提供一些底层驱动的API接口函数,供组件层的各个模块调用。驱动层又可以分为两级:
底层驱动(芯片级):项目所需的芯片级驱动。底层驱动(芯片级)又可以划分为单片机片内驱动和单片机片外驱动。片内驱动主要有内部Flash驱动、内部ADC驱动、内部DAC驱动、内部定时器驱动、SCI串口驱动等。片外驱动主要EEPROM驱动、AD7689、DAC121S101。底层驱动的特点是通用性,可在各个项目中共享。
底层驱动(项目级): 底层驱动(项目级)直接面向组件层的各个组件,完成项目功能的芯片级驱动的封装和扩展。在NDIR原型机项目中,项目级驱动主要包括:光源驱动、加热棒驱动。一般而言,底层驱动(项目级)与项目相关性比较大。
5 信号处理算法
信号处理算法的关键是提高信噪比,提高检测精度,本项目采用了滑动平均算法。
5.1 算法说明
对输入的数据进行滑动滤波处理,显示的数据不会出现剧烈跳变。缓冲区大小不变,每采样一次,数据向左滑动一个,先入先出,之后数据取均值。如图8所示。
图8 数据滑动示意图
5.2 算法评估
算法时间与所采用的滤波缓冲N大小有关,一般会采用10个缓冲。
5.3 算法实现
首先,多个波形周期滑动平均,滑动的是一个或几个相邻的波形周期。然后,对求出的浓度再次滑动或累加平均。具体流程如下:
采样原始波形,采集n个信号周期。
在采集第n+1个波形的同时,将波形[0~n]做累加平均,求出第一个滑动平均后的波形数据。
在采集第n+2个波形的同时,则将波形[1,n+1]做累加平均。
正常情况下,持续采集波形数据,然后滑动平均,在采集新波形的同时,就会流水输出滑动平均后的波形数据。
在滑动平均后的第一个波形数据中,计算出Im1,Ir1;
之后,每过一个采集周期,在新流水输出的滑动平均后的波形数据中,计算出Imn,Im。
1 s/2 s/3 s/4 s时间后,计算Im=(Im1+Im2+…+Imn)/n;Ir=(Ir1+Ir2+…+Irn)/n;Im/Ir,并计算浓度C1平均次数n = T/T1;(T为浓度输出间隔时间,T1为信号周期)
1 s/2 s/3 s/4 s时间后,计算浓度C2;
依次重复此过程。
6 甲烷浓度计算算法
光强和气体浓度的关系符合Lbert-Beer定律:
Im=I1e-k1Cl
Ir=I2e-k2Cl (2)
其中:I1和I2分别为测量光和参考光的出射光强;Im和Ir分别为产生吸收后,在接收侧接收到的测量光强和参考光;k1和k2分别为测量光波长和参考光波长的吸收系数;C为气室内的待测气体浓度;l为气室长度;为消除光源变化和部分温度变化的影响,由式(1),式(2)可得:
C = a*In(Im/Ir) – a*In b (3)
其中:a =1/[1(k2-k1)];b =I1/I2
根据式(3):
调零时(C=0%LEL),有:
In(Im0/Ir0)= In b (4)
标定时(C=50%LEL),有:
50%LEL =a*In(Im1/Ir1) – a*In b (5)
根据式(4)和(5),即可求得a和b。
由理论公式可知,浓度C是关于Imcalib/Ircalib的关系式,即C(Imcalib/Ircalib),则其一阶关系是关于Imcalib/Ircalib的一次式。如图9所示。
图9 浓度C与Imcalib/Ircalib关系的具体示图
一次函数只有两个未知系数,只需调零和标定一次即可确定所有参数。调零后确定b值:
b = Imzero/Irzero
标定后确定K值:
这样我们便得到最终的浓度值。
7 通气测试结果
NDIR探测器最终通气结果如表1所示。
8 结 语
通过试验可知,NDIR探测器能准确探测气体浓度,符合预期,能够适应市场需求,本设计是基于气体红外光谱吸收原理的一种单光源单探测器的甲烷气体检测装置,相较于传统的电化学,催化燃烧探测器,该设计具有响应快、精度高,使用寿命长等优点,在环保、化工、以及放置气体泄漏等领域将会有较好的应用,具有广阔的市场前景。
参考文献
[1] STMicroelectronics Ltd. Cortex-M4 programming manual:STM32F4xxx[S].2012.
[2] STMicroelectronics Ltd. Reference manual:STM32F4xxx[S].2012
[3]刘火良,杨森.STM32库开发实战指南[M].北京:机械工业出版社,2013.
[4]王汝琳,王咏涛.红外检测技术[M].北京:化学工业出版社,2006.
[5] Joseph Cortex-M3 权威指南[M].宋岩,译.北京:北京航空航天大学出版社,2014.