夏曙光,严达利,李申予,郑子朝
(1.天津师范大学物理与材料科学学院,天津 300387;2.河北工业大学化学工程学院,天津 300401)
重工业的发展使得环境污染日益严重,大气污染造成的危害已经引起了广泛重视,人们对于居住环境和空气质量的要求不断提高,因此,对有害气体的检测和控制非常重要[1-2].气敏传感器对于环境保护和安全监督起着极其重要的作用,它可以检测气体的种类、成分和浓度等指标[3].气敏传感器可以将被测气体的浓度转换为与其成一定关系的电量输出,利用各种气体的物理性能和化学性能将环境中被测气体的变化过程转化为相对容易处理的电信号.气敏传感器的种类包括半导体气敏传感器、电化学气体传感器、红外线气体传感器、固体电解质气体传感器和热导式气体传感器等[4-5].
目前市场上使用较多的是半导体气敏传感器,在过去几十年里,半导体气敏传感器由于高灵敏度、低成本、易集成等优点引起了人们的广泛关注.同时,半导体气敏传感器还存在选择性和湿度依赖性等一些目前难以解决的问题.多孔硅(PS)是一种在硅片表面腐蚀形成的孔径尺寸可控且具有一定孔隙率的多孔性结构材料,因其具有极大的表面积、良好的发光性能和与硅基技术的兼容性而引起了极大关注[6-12].利用多孔硅可以制成表面电阻式气敏传感器,多孔硅在接触气体的时候,其表面与气体产生化学反应,导致其电阻值发生变化[9-12],利用电阻值的变化可以检测出气体的成分和浓度.气敏传感器的性能常用灵敏度、选择性、响应/恢复时间、稳定性和寿命来表征[13].
本文采用Arduino 单片机结合LabVIEW 图形化编程语言设计制作了一套多孔硅气敏传感器响应时间测试系统,该系统组装简单、操作方便、成本低,并且可与计算机实时通信,导出数据和相关指标变化曲线的图像.
系统由气体注入室、硬件电路、下位机(Arduino板)和上位机4 部分组成.气体注入室由400mm×400 mm ×400 mm 的有机玻璃制成,其一侧装有可移动门,方便放置样品和排气,气室内部安装加热板、探针和风扇,外部接有排气泵.中间部分的硬件电路由稳压源、可调电阻箱和气敏传感器构成.下位机采用Arduino Uno R3 型单片机,Arduino 板与计算机相连,并通过数据接口连接外部电子装置,如热敏传感器、光敏传感器、发光二极管和麦克风等,直接用计算机可对Arduino单片机编码进行控制,也可脱离计算机进行独立控制.上位机是一台装有LabVIEW 软件的电脑,它通过数据线与Arduino 板进行通信,对Arduino 板传输的数据进行分析处理,将相关数值显示在前面板上,并根据数据绘制出相应的波形图,以反映传感器电阻的变化趋势.系统的整体框架如图1 所示.
图1 系统的整体框架Fig.1 Overall framework of the system
用一个可变电阻箱(阻值为R)与气敏传感器(阻值为RS)串联组成一个闭合回路,输入一个直流稳恒电压U0,在可变电阻箱两端加一个电压信号的采集装置(Arduino 板),用来记录变化的电压值[14],采集到的电压信号记为U,电路原理如图2 所示.根据欧姆定律,多孔硅气敏传感器阻值的计算公式为RS=(U0-U)R/U.气敏传感器的阻值经过上位机的接收处理可以绘制出其随时间变化的曲线图像.
图2 电路原理图Fig.2 Circuit principle diagram
LabVIEW 与 Arduino 的连接方式有 LabVIEW Interface for Arduino、串口控制方式、无线串口方式和Ethernet 方式等,本系统程序采用LabVIEW Interface for Arduino 的方式,这种方式需要使用VISA 插件实现串口编程,这种方式的优点在于LabVIEW 软件内置有数十个NI 公司开发的库函数方便使用.LabVIEW程序的前面板如图3 所示.
图3 LabVIEW 前面板Fig.3 Front panel of LabVIEW
前面板上设置了5 个按键,分别为模拟输入引脚(pin selection)、采样速率(sampling rate)、串口号(serial port number)、气体种类(gas species)和开关键(switch).首先通过模拟输入引脚选择Arduino 板上面的输入信号源,选择下位机对应的串口号,并输入注入的气体种类,然后点击LabVIEW 程序菜单栏的“运行”按键,程序开始运行,开关键用来控制数据采集的开始和停止.
LabVIEW 程序框图如图4 所示.框图表面上类似于计算机程序流程图,与文本编程语言中的文本行相对应,是实际的可执行代码.LabVIEW 程序框图的组件包括节点(nodes)、端子(terminals)和连线(wires).节点是程序中的功能模块和函数,端子是这些模块、函数与其他模块、函数交换数据的端口,相当于C 程序中函数的参数,连线用来表示数据的传递方式[15].
LabVIEW 程序主要包括采样速率(sampling rate)模块、模拟管脚(analog pins)模块、VISA 串口号(serial port number)模块、初始化(initialization)模块、采样(sampling)模块、连续采样(continuous sampling)模块、公式模块(formula)、波形图表(waveform chart)生成模块、错误数据(error)模块、布尔变量(Boer)和气体种类(gas species)选项.首先通过选择串口号与Arduino Uno 板建立连接,然后通过模拟输入引脚(A0~A5)进行数据采样,利用While 循环不断调用函数节点达到连续采样的目的.程序采集的是图2 中电阻箱的电压,该电压值记为X1,一路经过公式X1=X1输出到波形图表(定值电阻分压随时间的变化),另一路经过公式RS=(4-X1)R/X1,将计算结果显示在波形图表上(气敏电阻随时间的变化),即完成一次采集,使用While循环进行连续采样,直到给计算机一个指令,程序停止采样.LabVIEW 程序流程图如图5 所示.
图4 LabVIEW 程序框图Fig.4 Program chart of LabVIEW
图5 LabVIEW 程序流程图Fig.5 Flow chart of LabVIEW
以实验室制备的一种多孔硅气敏传感器(n 型)为例,测试它在不同浓度NH3和NO2气体下的响应/恢复时间.首先将下位机(Arduino 板)、硬件电路、气体注入室、上位机按照图1 连接起来,电路检查无误后,打开设计好的LabVIEW 程序,运行程序,点击“开关”进行数据采集.待气敏传感器的阻值达到稳定时,注入0.64 mL NH3(对应体积分数为0.001%),观察采集电压及电阻的变化,待其数值趋于平稳,且示数不再发生变化时,开始放气,放气过程中图像和示数会再一次发生变化,待其不再发生变化时,再次注入1.28 mL NH3(对应体积分数为0.002%).依照上述步骤再次注入3.20 mL NH3(对应体积分数为0.005%).待实验结束,将得到的数据导出至Excel 中,使用Origin 处理数据,计算得到响应/恢复时间,也可将测得的简化图像直接导出.图6 为将原始数据导入Origin 处理得到的气敏电阻阻值随时间变化的曲线.表1为气敏传感器在不同浓度NH3下的响应和恢复时间.
图6 多孔硅气敏传感器阻值在不同NH3 浓度下随时间变化的曲线Fig.6 Curve of resistance value of porous silicon gas sensor over time at different NH3 concentrations
表1 多孔硅气敏传感器对不同NH3 浓度的响应、恢复时间Tab.1 Response and recovery time of porous silicon gas sensor at different NH3 concentrations
关于NO2气体的实验步骤与NH3相同,依次注入 0.64、1.28、3.20 mL NO2.图 7 为将原始数据导入Origin 处理得到的气敏电阻阻值随时间变化的曲线.表2 为气敏传感器在不同浓度NO2下的响应和恢复时间.
图7 多孔硅气敏传感器阻值在不同NO2 浓度下随时间变化的曲线Fig.7 Curve of resistance value of porous silicon gas sensor over time at different NO2 concentrations
表2 多孔硅气敏传感器对不同NO2 浓度的响应、恢复时间Tab.2 Response and recovery time of porous silicon gas sensor at different NO2 concentrations
以上关于2 种气体的测试结果显示,对于不同的气体浓度,多孔硅气敏传感器的阻值发生了不同变化,设计的系统完成了气敏数据的采集,这为今后其他气体的测试及相关性能指标的处理打下良好基础.
采用Arduino 下位机与LabVIEW 语言相结合设计了一套多孔硅气敏传感器测试系统.该系统界面简洁,电路系统易组装、性能稳定,操作方法简单,可导出数据至剪切板或相关处理软件.虽然Arduino 单片机的ADC 精度不够理想,但系统可以实现低速、低成本的气敏数据采集,具有一定的实用价值和应用前景.