张延军,刘敬彪,蔡 强,方向生,吴文娟,刘 锐,王彦闯
1.杭州电子科技大学电子信息学院,杭州 310018;
2.浙江清华长三角研究院,浙江 嘉兴 314006
电子鼻是由多个气敏传感器及其信号处理电路和适当模式识别方法所组成的装置,能定性定量识别气味。在环境质量检测[1]、疾病诊断、化妆品香型的判断、农产品品质监测和评定、食品生产加工、海关等方面已有应用性研究。目前,已有商品化的电子鼻,如:FOX 4000等,但这些系统的分析软件都是运行于PC平台,成本高,体积大,只适用于实验室分析,无法满足现场实时监测。因此本文研制了一种基于ARM 7和嵌入式实时操作系统μC/OS Ⅱ的电子鼻系统,以较小系统体积和硬件开销,实现便携的电子鼻分析功能。
食品品质的监测已经从生产过程的监测扩展到对原材料、产品的全过程监测;其中食品材料物流过程(仓储、运输和货架)中品质的监测,要求检测设备便于携带,能实时动态测量。本文研制的便携式电子鼻系统,由传感器阵列、信号调理模块、嵌入式系统3部分组成[2]。传感器阵列由不同的气敏传感器组成,并置于密闭气室内。信号调理模块将气味的信息转换为电信号,并进行预处理, A/D转换,数字信号的简单滤波和数据传输;嵌入式系统由ARM7架构的MCU、嵌入式操作系统、SD卡和触摸屏组成,完成数据存储、曲线显示和气味识别。图1为系统的整体框图。
图1 系统整体结构图
系统硬件电路主要包括两部分,分别为基于MSP430F149信号调理电路和嵌入式系统硬件电路。
硬件电路框图如图 2 所示。本文选用的MSP430F149[3]是16 bit RISC结构单片机,片上资源主要包括 60KB的 FLASH和 2KB RAM, 8 路12 bit的200 kbit/s的高速ADC,两个串行通信接口(UART模式, SPI模式, I2C模式)等。系统程序驻留于MSP430F149的内部存储器,采用片内12 bit高速A/D采集信号。由于半导体气敏传感器的电阻变化量与气体浓度相关,变化范围在1 kΩ~1 MΩ之间。本文通过串联负载电阻,并测试负载电阻的分压值来检出传感器响应信号。负载电阻阻值依据传感器在纯净空气中静态时阻值的大小而定。检出的电压信号通过低通滤波器和次级放大器,进入AD转换器。低通滤波器截止频率为1 kHz;片内A/D的参考电压设置为0 ~2.5 V, 传感器信号放大到0 ~2.5 V以内。不同的温湿度环境会影响气敏传感器的响应特性,本文采用SHT11数字温湿度变送器采集温湿度信息,补偿传感器信号。湿度测量范围:0 to 100% RH,分辨率:0.03% RH。温度测量范围:-40 ~+123.8 ℃,分辨率:0.01 ℃。本系统在通信上采用光耦隔离RS485传输数据, RS485的通信速率设定为9 600 bit/s。
图2 信号采集电路框图
嵌入式系统硬件电路主要包括MCU、SD卡及其相关电路、液晶显示、按键、串口通信电路和电源电路。系统结构框图如图3 所示。其中 MCU为LPC2214[4], 为 16/32 bit ARM7 架 构, 片 内 有 16 kbyte RAM和256 kbyte ROM, 2个UART, 1个高速I2C, 2个SPI接口,最高运行频率60 MHz。该芯片可运行嵌入式操作系统,程序编写时基本无需扩展存储。由于SD卡[5]是容量大、体积小,本系统选作本地存储卡。因LPC2214有标准SPI接口, SD卡选用SPI通信模式,并根据MCU时钟频率和外围模块时钟频率,设置SPI的时钟频率为5.529 6 MHz。液晶模块选用TFT6758,屏幕大小为2.2 inch,点像素为240×320, 26 万色真彩屏,用于显示数据曲线和识别结果。按键为4×4阵列,采用ZLG7290 驱动器, ZLG7290通过I2C接口与MCU通信。
图3 嵌入式系统硬件电路框图
系统功耗主要包括嵌入式电路功耗、调理模块功耗和传感器功耗。传感器功耗一般较大,如:一只TGS系列的半导体气敏传感器功耗在700 mW左右;因此,系统的整体功耗和连接的传感器的数量有密切的联系。当本系统安装4 个TGS系列的半导体气敏传感器时最大功耗在5 W左右。
软件包括信号采集程序和系统应用程序。信号采集程序运行在MSP430F149中,用于信号处理电路的初始化、数据采集与预处理和数据传输。系统应用程序运行于LPC2214的嵌入式电路板,功能是μC/OS-Ⅱ任务及驱动程序的调度,包括数据存储、实时曲线显示、按键响应和模式识别。
信号采集模块程序在IAR Embended workbench V4.11B开发环境下由C语言开发,包括上电初始化、数据处理和传输等功能。上电初始化完成系统上电后系统时钟频率初始化、通用I/O初始化、A/D模块初始化、串口通信初始化和数字式温湿度变送器初始化。其中A/D模块的采样频率设置为1 Hz。数据传输则把传输到基于ARM7的嵌入式系统中。
数据处理则将采集来的传感器信息存入全局数组,等待查询命令并上传数据。若没有查询命令则全局数组每秒更新1次。数据处理方法采用加权平滑处理,降低脉冲干扰的影响。方法为:每个传感器建立长度为8的全局数组,每次采样后更新数组,并对数据进行由小到大排序,排序后依式(1)进行加权平均:
式中X为处理后的数据;ai为采集上来放入全局数组内的原始数据;fi为权值。温湿度传感器的测量值用于补偿传感器信号,补偿过程依式(2):
式中s为补偿后的值;s0为补偿前的值;c1, c2为系数,由传感器特性而定;T0=20 ℃;T1为温湿度传感器测得的环境温度;H0=65%;H1为温湿度传感器测得的环境湿度;
图4 信号采集模块程序流程图
嵌入式系统程序在ARM Developer Suite V 1.2集成开发环境中编写,其中大部分用C语言编写,少部分处理器架构级代码用ARMV4[6]汇编语言编写。因为μC/OC-Ⅱ[7]是可移植、固化、实时性,对RAM、ROM要求较少,本系统选择μC/OS-Ⅱ做为OS。大部分代码用ANSIC语言编写,部分处理器架构级采用汇编代码并,并选择μC/FS作为文件的组织形式。程序主要包括:μC/OS-Ⅱ、μC/FS文件系统的移植、任务编写以及驱动程序(见图5)。
图5 嵌入式系统程序结构图
其中,上电初始化指系统上电后的板级初始化,CPU和外围电路达到适合操作系统运行的状态,主要包括:存储器映射和设置系统各部分时钟;初始化UART0;初始化定时器0;用于操作系统时钟节拍;初始化实时时钟;中断向量表初始化;初始化I2C接口。相应的函数分别为 TargetResetInit(void),UART0Init(uint32 bit/s), Timer0Init(void), RTCInit(void), VICInit(void), I2cInit(uint32 FI2c)。SD卡驱动程序和文件系统包括SD卡上电初始化程序、读写SD卡的API函数等,用于系统读/写数据时根据文件系统的要求读/写SD卡。液晶显示模块TFT6758内带液晶控制器HD66781 和液晶驱动器HD66783, 驱动程序[8]主要是对HD66781 的控制,使液晶达到显示状态,还包括FillSCR()填充屏幕、ClearSCR()清屏、Point()画点、H line()画水平线、Vline()画垂直线等API[9]函数。
在应用层共涉及了 5 个任务[10], 分别为:Keytask(), Uart0task(), Sdfstask(), Guitask(),Bptask()。 Keytask()用于不同按键按下时的处理;Uart0task()主要用于处理数据通信;Sdfstask()用于读写卡内存储为文本格式的数据;Guitask()用于实时曲线显示和识别结果显示。Bptask()用于模式识别,识别算法采用BP人工神经网络[11],
BP神经网络是单向传输的多层前向网络,网络包括输入层、一层或多层隐含层和一层输出层,同一层中节点没有联系。该网络通过层间权重对输入模式进行线性加权而形成超维决策平面, 并通过Sigmoid非线性函数(如f(x)=1/[ 1+e-x] )形成分类决策区域。网络的学习过程包括信息的正向传播和误差的反向传播两个反复交替的过程。误差反向传播过程是从输出层到输入层向后传播并修正相应网络参数的过程,主要是调整权向量和阈值,使误差值达到最小。上述BP网络的学习过程在PC机上进行,待训练完成后将网络结构参数植入嵌入式系统。
信息的正向传播过程就是模式识别算法,各神经元的输出可表示为式(3):
式(3)中wij为输入节点与隐含层之间的联接权重;θ为阈值;vjk为隐含层与输出层之间的联接权重;f(x)为神经元模型中的传递函数。
实验选用猪肉[12]作为测试对像,用本系统测试猪肉5 ℃贮藏过程中品质变化,并辅以测试挥发性盐基氮[13](TVB-N)在猪肉中的含量,来对比系统测试结果。实验中选用4 个TGS系列半导体气敏传感器, 分 别 为:TGS822, TGS826, TGS800, TGS825。实验共6次,测试猪肉在5 ℃贮藏8 d的品质变化,每天测试10个样本,猪肉为新鲜猪后腿肉。系统测试周期7 ~9 min,包括5 ~7 min的传感器恢复时间和1 min的进气和检测时间。
前三次实验的数据用于BP神经网络的训练,BP网络为单隐层,包括4个输入神经元, 1个输出神经元,变换函数选用Sigmoid函数,神经元的输出范围为0 ~1,隐层神经元的数量为6;BP网络经PC机训练后移植到嵌入式系统;对原始数据的处理采用梯形隶属度函数进行归一化;后三次实验主要用本系统识别,并与TVB-N结果对比。图6,图7为测试过程中部分结果图。
图6 实验中TVB-N测试结果
图7 测试中液晶屏显示效果
表1给出了第2次和第4次的实验数据,表中数据表示每天每个传感器的响应平均值。由表中数据可以看出,对于不同批次的实验,传感器具有较稳定的输出。表2给出了整个测试中系统的识别正确率。
由图7可以看出, 5 ℃贮藏时猪肉在购回第5天其挥发性盐基氮的含量超过国标(15mg/100g GB2707-2005)。由表1可以看出,第1、2、3和第6、7天,识别率均大于90%。第4 天,第5天时,系统识别率低于90%,这是因为国标只规定猪肉有变质和未变质两种状态,对猪肉变质的临界状态难以对其准确归类。然而在猪肉完全变质和完全没有变质的情况下系统的识别效果令人满意的,表明系统具有一定的可靠性。
表1 传感器响应值
表2 系统识别结果
本文实现了一款基于ARM 7和μC/OS Ⅱ的电子鼻系统。系统主要功能在于实现了多路传感器检测、温湿度补偿、模式识别;特点在于功耗较低,体积小,便于携带。实验研究表明,对猪肉品质检测中整体正确率达到90.9%,说明系统有较高的可靠性。
[ 1] 唐月明,王俊.农机化研究[ J] .《电子鼻技术在食品检测中的应用》, 2006, (10):169-172.
[ 2] 白福铭,黄品文.农业机械学报[ J] .《基于ARM9的电子鼻系统设计与应用》, 2009, 40(增刊):138-142.
[ 3] 沈建华,杨艳琴.《MSP430系列16位超低功耗单片机原理与应用》[ M] .第1版第4次印刷,清华大学出版社, 2006, 20-24.
[ 4]http://pdf1.alldatasheet.com/datasheet-pdf/view/94391/PHILIPS/LPC 2214.html[EB/OL].
[ 5] 周立功.《ARM嵌入式系统软件开发实例》[ M] .第2卷,第1版第2次印刷,北京航空航天大学出版社, 2005, 275-298.
[ 6] 周立功.《ARM嵌入式系统基础教程》[ M] .第1板第11次印刷,北京航空航天大学出版社, 2008, 73-129.
[ 7] Jean JLabrosse.《嵌入式实时操作系统μC/OS-Ⅱ》[ M] .第2版第7次印刷,北京航空航天大学出版社, 2007, 7-12.
[ 8] 周立功.《ARM嵌入式系统软件开发实例》[M].第1卷,第1版第2次印刷,北京航空航天大学出版社, 2005, 529-541.
[ 9] 孙俊喜.《LCD驱动电路、驱动程序设计及典型应用》[ M] .第1版第1次印刷,人民邮电出版社, 2009, 255-273.
[ 10] 周航慈,吴光文.《基于嵌入式实时操作系统的程序设计技术》[M].北京航空航天大学出版社, 第 1 版第 2 次印刷,2008, 16-26.
[ 11] 方向生.浙江大学博士学位论文[ D] .《基于电子鼻技术的电气火灾预警系统研究》, 2007, 98-103.
[ 12] MahdiGhasemi-Varnamkhasti, Seyed Saeid Mohtasebi, Sensors J,Meat Quality Assessment by Electronic Nose(Machine O lfaction Technology), 2009, 6058-6083.
[ 13] 王天佑,王玉娟.猪肉挥发性盐基氮值指标与其感官指标的差异研究[ J] .2007, (12), 124-126.