喻璐,谭志文,邹望辉
(长沙理工大学物理与电子科学学院,湖南 长沙 410114)
作为工业上常用的有机溶剂,乙醇与丙酮在橡胶、纤维、制革等行业中得到了广泛应用。但乙醇和丙酮的化学性质比较活泼,不仅易燃、易挥发,而且具有一定的毒性,一旦发生泄漏,会严重损伤人的呼吸系统和神经系统,达到爆炸下限时,甚至可能发生剧烈爆炸,危及人体生命。因此,设计一种能应用于工业生产环境的、可以有效鉴别乙醇和丙酮的气体识别系统具有重要的意义。
电子鼻是一种模拟动物嗅觉器官开发的气体分析系统,主要通过对气味进行分析来实现对气体的种类区分和浓度测量。在工业生产方面,对检测的实时性和准确度要求很高,采用传统技术进行气体识别时,数据采集的实时性以及识别的精度都达不到要求。因此,该文设计了一种基于传感器阵列的电子鼻系统,通过STM32 与数字式万用表进行通信,实现阵列数据的采集,采用非线性支持向量机(Supported Vector Machine,SVM)模型来实现混合气体的分类,可以有效解决时效与精度问题。
根据实验要求,搭建了气体检测与分析系统,系统主要由采样气路模块、数据采集与显示模块和模式识别模块3 个部分组成[1]。标准气体通过质量流量控制器(Mass Flow Controller,MFC)由进气口进入气室,通过控制MFC 得到某一浓度下的单一气体(或混合气体),单一气体(或混合气体)与固定在气室中的传感器阵列模块板反应,使用安捷伦数字式万用表34450A 进行阵列数据读取,使用LabVIEW 与STM32 进行通信向传感器阵列板上的模拟多路复用芯片ADG1607 写入命令,实现阵列不同传感器之间的通道切换,同时,使用LabVIEW 与34450A 进行通信,实现阵列数据的实时显示与存储。对采集到的数据进行预处理和特征提取,将提取到的特征值作为输入进行模式识别[2],模式识别部分在MATLAB 平台中编程实现,识别结果在上位机输出。气体检测与分析系统结构图如图1 所示。
图1 气体检测与分析系统结构图
气体配置容器选用上海伟创标准气体分析技术有限公司配置的标准钢瓶,清洗气为以高纯氧气与氮气配比的高纯空气,其中高纯氧气和高纯氮气的浓度均为99.999%。乙醇和丙酮的配置浓度一致,均为200 ppm,采用高纯空气稀释。流量计选用北京七星华创流量计有限公司的CS200 系列产品,乙醇、丙酮和空气各使用一个MFC,通过设定不同的气体流速比例进行混合来达到改变气体浓度的目的。
常见的气体传感器类型有金属氧化物半导体型(Metal Oxide Semiconductor,MOS)、电化学型、表面声波型等[3]。其中MOS 型传感器具有成本低、灵敏度高等优势,在实际应用中使用最为广泛[4]。其敏感材料在空气中会发生对氧的吸附反应,导致电阻上升,在还原性气体中会发生氧化还原反应,导致电阻下降,以此实现对气体浓度的识别[5]。目前,在诸多敏感材料中,n 型氧化物如SnO2、In2O3、WO3、ZnO 和p型氧化物如CuO、NiO、Co3O4表现出显著的气体敏感特性[6],该设计中使用的均为MOS 型传感器,敏感材料为SnO2。
由于单一传感器存在交叉敏感性,可能对工业环境中的多种气体均敏感,导致识别的精度达不到预期。因此,构建传感器阵列来采集数据,使用阵列形成的响应谱进行分析,可以避免使用单一传感器采集数据带来的偶然性。根据工业生产中乙醇与丙酮浓度的特点,在市售的气体传感器产品中选择了4种不同的对乙醇和丙酮具有交叉敏感性的传感器组成阵列,传感器型号及检测浓度范围如表1 所示。
表1 传感器型号与检测浓度范围
依据气体组成和传感器性能构建了如表1 所示的传感器阵列后,为了实现阵列中不同传感器的通道切换,引入了模拟多路复用芯片ADG1607,并将传感器阵列与ADG1607 集成在一起,组成了传感器阵列模块。最后使用Altium Designer 20 绘制了阵列模块设计图并制作了实物,其中阵列模块设计图如图2所示,阵列模块实物图如图3 所示。
图2 阵列模块设计图
图3 阵列模块实物图(置于气室中间)
如图2 所示,TGS1-TGS4 对应4 个传感器,ADG1607 为模拟多路复用芯片,内置8 个差分通道,将根据3 位2 进制地址线(A0、A1 和A2)所确定的地址作为公共差分输出。
因为空气中存在的水汽及其他杂质气体会影响传感器对目标气体的响应特性,故反应气室应该严格密闭。依据要求,设计了不锈钢密闭气室,气室内壁光滑,可以减少气体吸附在气室表面导致实验误差的情况[7]。考虑到实验中检测的乙醇与丙酮浓度设定在0~200 ppm 之间,气室体积过大或者过小都会影响气体在气室内达到平衡的时间和与传感器充分响应的时间,又考虑到阵列电路板的大小和传感器的高度,最终设定气室的体积为500 mL。气室内壁嵌有两个四芯接头,用于阵列电路板信号线的连接。气室出气口连接一个挡板阀,采样过程中阀门关紧,使气体充满气室,与传感器充分反应,脱附过程中阀门打开,通过波纹管与真空泵相连,将废气排出至室外。
气体实验通常分为静态检测与动态检测两种类型,静态检测过程需要关闭气室,得到的是某一具体浓度下的响应曲线,动态检测过程不关闭气室,气室内气体的浓度随时变化,得到的是不同浓度的响应谱。相对于动态检测,静态检测过程中传感器的响应更稳定,因此,该文采用静态检测方式。整个实验过程中,上位机界面以波形图表形式实时显示传感器的阻值变化。
实验开始前需要对传感器和MFC 进行预热,传感器预热时间为2 h,MFC 预热时间为10~15 min。首先进行基线过程,去除气路中的杂质气体,时间为180 s。随后进行采样过程,使用MFC 控制配比浓度,同时通入空气和乙醇(丙酮),观察真空计,其示数达到1×105pa 时,关闭MFC,停止通气,静置一段时间等待传感器阻值平稳后打开真空泵进行脱附,真空计示数达到5 pa 及以下时,认为气室内已经达到真空状态,气体脱附过程结束。最后进行清洗过程,使传感器恢复到初始状态,等待下一次测量[8]。
该文针对乙醇与丙酮进行分析,分别获取了传感器TGS2620 以及传感器阵列随乙醇、丙酮浓度变化的阻值数据,共得到了398 组数据。其中TGS2620采集到的数据为158 组(乙醇88 组,丙酮70 组),传感器阵列采集到的数据为240 组(每个传感器60 组,乙醇30组,丙酮30组)。采取简单随机抽样的方法[9],将数据样本分为训练集与测试集,抽取270 组数据作为训练集,对SVM 模型进行训练,剩余128 组数据作为测试集,对训练得到的模型进行性能检验。
根据得到的数据对比发现,不同传感器之间的数据量级差别较大,需要进行归一化处理。同时,注意到当前提取的主要是原始曲线的几何特征[10],提取效果容易受操作误差的影响,因此选择采用分段拟合曲线的方式进行特征提取[11],将气体响应曲线分为采样部分和脱附部分,每个部分提取两个特征值,WSP2110在34 ppm 乙醇浓度下的响应曲线如图4所示。
图4 WSP2110在34 ppm乙醇浓度下的响应曲线
整个采样阶段,传感器响应可以等效为一阶线性模型,其传递函数为:
对输入(激励)函数做拉普拉斯变换后与传递函数相乘,可以得到输出函数的S域表达式为:
再对Y(S)作拉普拉斯逆变换,得到:
针对式(3),分别提取反应阶段与脱附阶段的幅值A和反应速率,得到的特征提取结果如图5 和图6 所示。
图5 TGS2620数据特征提取结果
图6 阵列数据特征提取结果
图5、图6 中,横坐标为特征向量维度,对应每条响应曲线提取的4 个特征值。纵坐标为实验次序,对应数据量。由图5 可知,TGS2620 对乙醇和丙酮的响应规律不同,对乙醇和丙酮的响应不够稳定,出现了个别差异大的特征值。由图6 可知,阵列不同,传感器之间遵循的响应规律就有明显差别,同一传感器同一气体条件下的特征值基本稳定,气体浓度变化时,传感器的特征值变化不大,阵列数据下特征提取的效果更好。该特征提取方式有效地削弱了气体浓度的影响,适用于气体定性分析实验。
支持向量机基于统计的方法[12],其核心思想是把输入向量映射到高维特征空间中,将在低维空间中线性不可分的问题转化为在高维空间中线性可分的问题[13]。应用该模型可以实现对线性可分样本和非线性可分样本的分类,针对非线性可分的情况,为了减少计算量,通常需要选择核函数。常用的核函数有线性核函数、多项式核函数、径向基函数(RBF)等[14]。其中线性核函数仅适用于线性可分问题,多项式核函数虽然适用于非线性特征映射,但是在训练中总共有3 个参数需要设置,而RBF 函数无论是应用在大样本还是小样本中都有较好的性能,且仅有一个可调参数[15-16]。因此该文采用RBF 函数作为核函数。该设计中基于SVM 的气体分类流程如图7所示。
图7 基于SVM的气体分类流程图
实验过程中,为了进行分段特征提取,需要将响应曲线分为采样与脱附两个部分。而实际实验过程中由于气体浓度、流速、气敏反应特性不同等原因,采样过程与脱附过程所持续的时间往往不是固定的,而是通过查看上位机界面判断阻值波形曲线是否平稳来决定的。为了精确地将每一次实验过程分为两个部分,需要提取出每一次实验的起点、临界点和终点,将响应曲线分为反应与脱附两个部分,分别进行特征提取后再进行模型训练与性能验证,基于TGS2620 数据和传感器阵列数据的SVM 模型分类结果如图8 和图9 所示。
图8 TGS2620数据气体分类结果
图9 传感器阵列数据气体分类结果
由图8 和图9 可以看出,在训练模型不变的情况下,单一传感器数据下的识别精度仅为77.1%,而传感器阵列数据下的识别精度提升至92.5%。其中乙醇样本标记为类别“1”,丙酮样本标记类别“2”。TGS2620 对乙醇气体的敏感性较好,27 帧测试数据中仅有1 帧分类错误。对丙酮的分类效果不佳,21帧测试数据中有10 帧分类错误。测试集的正确分类帧数仅为37/48,分类正确率较差。在传感器阵列数据下,以不同传感器对同一气体的响应情况作为气体响应谱,有效消除了单一传感器交叉敏感性的影响,乙醇正确分类帧数上升至39/40,丙酮正确分类帧数上升至35/40,测试集的正确分类帧数上升至74/80。几种电子鼻系统的性能比较如表2 所示。
表2 几种电子鼻系统的性能比较
该文设计并搭建了一种用于快速检测乙醇和丙酮气体的电子鼻系统。依据气体特性和传感器敏感特性构建了传感器阵列,通过实验获取了单一传感器与传感器阵列在不同乙醇(丙酮)气体浓度下的响应数据,通过分段提取特征结合SVM 对样本进行了分类。比较发现,传感器阵列数据条件下,分类正确率达到了92.5%,相比单一传感器来说性能更优,这表明采用传感器阵列对气体信息进行获取可以显著提升分类正确率。后续为了提升分类的精确度,将尝试更换不同的传感器组合,规范实验过程,进一步改进特征提取与模式识别方式。