文章编号:1007-757X(2011)09-0001-04基于Linux 和ARM9嵌入式农药残留检测仪的设计
舒陈林,张素,洪思迁,陈亚珠,朱仲英
摘要:为实现农药残留现场快速检测的要求,在基于嵌入式系统的电化学法农药检测仪的硬件基础上,针对其软件开发效率低、移植不够灵活,缺乏有效存储手段的不足,重新设计了应用软件。研究了嵌入式Linux 的移植和利用Qt4开发嵌入式软件的方法,设计基于RS232串口通信的上位机数据保存软件。仿真实验及对比分析结果表明,软件设计方法能够有效的提高应用程序的开发效率、移植性能和该检测仪使用的便利性。
关键词:农药残留检测;ARM ;Linux ;Qt4;串口通讯
中图分类号:TP212文献标志码:A
0引言
随着现代农业的发展,农药被广泛使用,农药检测的重
要性愈发凸显。基于乙酰胆碱酯酶传感器的农药残留检测方
法,是利用氨基甲酸酯和有机磷类农药对乙酰胆碱酯酶的抑
制程度来反映残留农药的浓度。因此,我们设计了基于嵌入
式系统的电化学法农药检测仪[1]。
本文在原检测仪[1]的硬件基础上,重新设计了应用软
件。首先,原检测软件中代码和硬件设备直接相关,导致应
用程序无法直接移植到新平台上(不利于使用新的平台提高
系统性能),移植性较差。其次,原设计的程序必须下载到
目标板上才能进行调试,无法在上位机中仿真,影响了开发
的效率。本文通过移植嵌入式Linux 操作系统,能够有效避
免程序与硬件的直接关联,提高程序的可移植性。采用Qt4
编程工具编写检测程序,可以在PC 开发环境中进行仿真,
开发效率大为提高。最后,为解决原检测软件无法保存检测
结果的问题,本文设计了基于RS232串口通信的上位机应
用软件,能够直接将检测结果保存到上位机中,提高了使用
的便捷性。1农药残留检测原理乙酰胆碱酯酶传感器由三电极体系构成,包括工作电极、对电极和参比电极。工作时,在工作电极和对电极之间加上恒定电压,之后将酶电极(乙酰胆碱酯酶传感器)插入含有乙酰硫代胆碱酯酶的底物溶液中,在酶电极上即可发生化学反应[2],产生电流。可在工作电极上测得该电流趋于稳定
时的数值;下一步,将酶电极取出,在其表面滴加待测溶液,等待一段时间后(具体时间视酶电极的性能而定),再次插入底物溶液中,可测得抑制后的电流值。最后计算出抑制率。根据抑制率和农药浓度之间的对应关系,即可估计出待测样品中残留农药的浓度。2农药残留检测仪硬件系统设计基于上述检测原理,如图1所示:A R M 控制系统电源酶电极上位机应用软件触摸屏检测电路图1农药残留检测仪系统结构系统的架构包括:三电极检测电路、ARM 控制与显示
系统以及上位机应用软件。检测电路为酶电极提供稳定的工
作电压,并将酶电极产生的电流信号转换为电压信号,送入
ARM 控制系统。利用ARM 控制系统中的检测软件,对该
电压信号进行分析处理和显示,并将检测结果通过RS232
通讯接口发送至上位机应用软件保存。
2.1农药残留仪微小电流三电极检测电路
酶电极上的电化学反应产生的微小电流为nA 级,因
此,设计了三电极检测电路[1],如图2所示:——————————————
作者简介:舒陈林,男,安徽,上海交通大学,硕士研究生,研究方向:嵌入式生物医疗仪器设计研究,上海,200030
张素,女,上海交通大学生物医学工程学院,副教授,硕士生导师,上海,200030
洪思迁,男,上海交通大学生命科学技术学院,硕士研究生,上海,3陈亚珠,女,上海交通大学生物医学工程学院,院士,教授,博士生导师,上海,3朱仲英,男,上海交通大学电子信息学院,教授,博士生导师,上海,320000
20000
20000
图2农药残留检测仪三电极检测电路[1]
运算放大器OP07CP(U10、U11)、7650(U13)与数字开关CD4051构成程控放大电路[1],Co_etrode和Ref_etrode两个引脚分别连接酶电极的辅助电极和参比电极,ICL7650的Work_etrode引脚连接酶电极的工作电极。V olt信号是ARM控制系统的输入信号。
酶电极工作时,需在工作电极与参比电极之间加恒定电压250mV,使之稳定在氧化电压,此时酶电极传感器灵敏度最高,因此设计了由电阻R5、R9、R7、TL431、运算放大器OP07CP(U9)构成的恒压工作电路[1],调节R7即可在工作电极与参比电极之间输出250mV电压。
电压转换芯片7660(U1、U3)和电容(C5、C6、C7、C10)构成供电电路,用来提供集成运算放大器需要的5V 和-5V双电源供电。采用ICL7660并联的作用是为了减小输出阻抗,增加电流驱动能力,两个ICL7660并联可将输出阻抗减小至25Ω。+5V输入电压由ARM控制系统提供。
2.2嵌入式控制与显示系统
是嵌入式控制与显示系统的结构图,如图3
所示:
图3农药残留检测仪控制与显示系统结构图
其中AMR9核心板采用广州天嵌计算机科技有限公司
的2440核心板。通过在外围扩展Jtag电路,3.3V供电电路,
复位电路,NON/NAND选择电路,RS232串口电路和接口
电路来构建最小系统。触摸屏用于显示数据和控制检测流
程。Jtag电路用来下载和调试程序,RS232串口电路用来和
上位机通信,接口电路主要用来连接电源并提供与三电极检
测电路连接的端口。
3农药残留检测仪的软件设计
本文的应用软件包括在ARM核心板上运行的嵌入式检
测程序和应用在PC机上用来保存检测结果的程序。
本文的软件设计流程,首先是Linux操作系统的移植;
其次是建立Qt4编译环境,并利用Qt4编写可以在上位机
上进行设计、调试仿真的嵌入式程序。最后利用VC++中的
串口通信控件MSComm,在MFC框架下实现检测结果的保
存。
本文设计的嵌入式检测软件,底层的硬件以及中断响
应,均由操作系统来管理,软件可以直接在上位机中进行调
试仿真。相对于原软件,提高了软件的开发效率、稳定性和
可移植性。上位机的保存软件,提高了使用的便捷性。
3.1Linux移植
相比较原程序,基于嵌入式操作系统的应用程序具有性
能稳定,剪裁性好,开发和使用都很容易,生成代码的质量
高,可靠性好等特点。在众多的操作系统中,Linux以其具
有的开放源代码,价格低廉,可以任意剪裁和修改等特点,
逐渐成为嵌入式操作系统的最佳选择。
3.1.1交叉开发环境的搭建
由于嵌入式设备的资源有限,一般采用“宿主机/目标
板”交叉开发方式。首先,在宿主机上搭建交叉编译环境,
用来开发和仿真目标板上运行的软件。然后将生成的镜像文
件下载到目标板上运行。本论文在预装Windows XP的PC
宿主机上使用VMware软件搭建虚拟的Linux开发环境,
Linux的安装版本是Fedora10。交叉编译器采用天嵌科技提
供的EABI4.3.3版本。
3.1.2移植过程的实现
嵌入式Linux系统移植,包括引导程序、内核和根文件
系统三部分的移植。
(1)引导程序移植
Bootloader是系统加电后运行的第一段代码,其作用是
初始化硬件设备,并为调用操作系统内核准备好正确的环
境。U-boot是遵循GPL条款的开放源码项目,并且已经成
为ARM平台事实上的标准Bootloader。选择好U-boot版本
后,需要对具体的目标板进行定制,最重要的是按照开发板
的内存分配情况,修改memsetups.s文件。之后应用make
命令生成.bin文件,通过Jtag接口下载到目标板上。
(2)内核移植
内核是操作系统的核心,用于初始化并控制大部分硬
件、管理设备、进程和文件存储。
首先,下载并解压内核,本系统中的用到的内核是
2.6.30.4版本,修改并保存Makefile文件如下:
ARCH=arm
CROSS_COMPILE=arm-linux-
修改平台的时钟频率为12MHz。
然后利用make menuconfig命令进入配置菜单界面进
行设置[3]。配置完成后,输入make zImage命令编译内核镜
像,利用U-boot将编译好的镜像烧写到目标,完成内核的
移植。
(3)根文件系统移植
本文采用Yaffs文件系统,该文件系统是专门为NAND 闪存设计的,性能优越,易于移植。已经成功应用于Linux、μClinux和Windows CE等嵌入式操作系统上。
首先,下载并解压busybox。本论文为busybox-1.13.0.tar.bz2,然后利用busybox创建出文件系统所需要的应用程序[3]。
创建好文件目录后,利用mkyaffs2image命令编译文件系统镜像,编译完成后将该镜像文件烧写到目标板上。
在成功移植了嵌入式Linux之后,开发人员便可以从复杂的底层硬件编程中解脱出来,只需专注于应用软件的设计,而且由于各种中断都由操作系统来管理,应用软件的稳定性也大为提高。但不可否认Linux的移植过程是件具有挑战性的工作,需要投入大量精力。
3.3GUI界面设计
Qt是嵌入式Linux主要的GUI开发工具之一,作为跨平台的C++应用程序框架,Qt良好的封装机制使其模块化程度非常高,可重用性好,对用户开发来说是非常方便的,Qt4是Qt的最新版本。Qt/Embedded是面向嵌入式系统的Qt版本。QtCreator是Qt的集成开发环境,可以简化Qt 应用程序的设计过程,提高开发效率[4]。
3.3.1Qt4开发环境的建立
在Fedroa10环境下建立Qt4开发环境的步骤如下:
(1)下载并解压qt4源码,源码采用广州天嵌计算机有限公司提供的源码;
(2)利用arm_qt4.5_build脚本文件,编译ARM板的Qt;
(3)下载文泉驿中文正黑体字库(用来在开发板上支持中文字体),并将字库移植到3.1.2节所述文件系统的lib目录下;
(4)下载QtCreator源码并安装,本论文采用如下版本:
qt-everywhere-opensource-src-4.7.0-beta2.tar(1).gz
(5)修改环境变量。
3.3.2Qt4应用程序的设计
应用Qt Creator开发Qt应用程序,首先要设置编译环境。对于设计在PC机上的仿真软件,选择基于PC版本的qmake工具;对于设计在开发板上运行的应用软件,选择基于ARM版本的qmake工具。
本论文设计的检测软件主要功能是实时监控电化学反应中电流的大小,将电流值变化曲线绘制出来,并提供人机交互的控制界面,软件工作流程如检测原理中所述,编程要点如下:
(1)绘制界面
QWidget是所有Qt GUI界面的基类,它接收鼠标、键盘以及其他窗口事件,并在显示器上绘制自己。本文中,所有的嵌入式检测界面均以QWidget为基类。
首先,新建一个Qt4GUI Applicationg工程,选择QWidget作为基类;然后利用Qt Creator的界面设计器,可以很方便设计出需要的界面。最后编写槽函数,调试代码,选择合适的q编译出可执行文件。
()定时器的使用
由于检测软件需要每个1秒读取一次A/D采样的数值,因此需要利用到Qt的定时器QTimer[5],关键代码如下:QTimer*timer=new QTimer(this);con-nect(timer,SIGNAL(timeout()),this,SLOT(timerf()));
Timer->start(1000);
qApp->exec();
(3)绘图
Qt绘图主要是通过重载paintEvent函数来实现具体的绘图,关键代码[5]如下:
QPainter painter(this);
QPen pen;
pen.setColor(QColor(255,0,0));
painter.drawLine(x1,y1,x2,y2);
……
update();
……
除此之外,还有数据的处理、从A/D口读数据、串口放送结果等函数,需要根据具体应用场合来确定。
3.3.3Qt4文件系统的制作
在前面制作完成的文件系统opt目录下,新建Qt4文件夹。然后复制前面编译成功的qt-4.5/_install/arm目录下的lib 目录和plugins/imageformats目录到Qt4目录下;在Qt4目录下新建bin文件夹,将刚刚编译好的检测软件复制到目录下,最后修改与启动相关的文件[6],重新编译文件镜像,烧写到开发板上,
即可完成开机启动检测软件。
原软件的设计调试,必须将更改的软件重新下载到开发板调试。利用Qt4,可以方便的完成界面的设计,可以在PC 机完成软件仿真,开发效率大为提升。
3.3VC串口通信
为了便于检测结果的保存和管理,本文还设计了一个基于RS232通讯接口的上位机应用软件,开发环境为WindowsXP系统下Microsoft Visual Studio2008。其中最重要的是对串口通讯控件MSComm的设置和使用,关键的设置程序为[7]:
CMSCommmyComm;
myComm.SetComport(4);
myComm.SetInputMode(1);
myComm.SetSetting(“11520,n,8,1”);
其它属性设置默认即可
在接收数据二进制数据时,要用到V ARIANT结构和COleSafeArray类,关键代码如下:
VARIANT input1;
BYTE rxdata[2048];
long len1,k;
COleSafeArray safearray1;
input1=myComm.GetInput();
len1=safearray1.GetOneDimSize();
for(k=0;k<len1;k++)
safearray1.GetElement(&k,rxdata+k);
make 2
检测人员在嵌入式是系统中完成检测后,只需点击触摸屏的发送按钮就可以数据发送到该存储软件中,数据以txt
文本形式保存。4农药残留检测仪系统性能的分析在完成系统的设计后,本文通过多次实验来验证系统的整体性能,并分析了Linux 环境下,利用Qt4设计嵌入式软件的优点。4.1抑制率指标测试抑制率是本文所讨论仪器的核心数据,抑制率的准确性最能反映系统的性能,因此本文设计了如下仿真实验,来检测系统的工作性能。由于本系统的自身性能指标与酶电极无关,为排除酶电极质量对系统性能的影响,实际测量时,通过在若干恒定
阻值的电阻两端加上250mV (U )的电压来模拟酶电极被抑
制前后产生的电流,从而评价系统的性能。即在抑制前电流
测量阶段,在工作电极与参比电极之间加以阻值为的电阻,
则通过的电流为;在抑制后电流测量阶段,工作电极与参
比电极之间加以阻值为(>)的电阻,则通过。根据抑制
抑制率公式,计算出抑制率Y 的理论值为Y=。
比较抑制率实际测量值和理论值的误差率,即可说明
系统自身的准确程度。
其中误差率为
:由于恒定工作电压是250mV ,酶电极的实际电流是nA
级,因此测试电阻的阻值应该为M Ω级,因此设计了如下实
验,测试结果如表1所示:
表1
农药残留检测仪系统系统性能测试结果相对误差均小于5%,引起该误差的主要因素包括电阻精度、连接线、系统噪声以及计算精度。4.2农药残留检测软件开发效率及移植性讨论1)原软件是直接控制硬件的[1],因此应用程序与底层硬件直接相关。对嵌入式软件开发人员来说,需要花费大量的精力来了掌握与底层硬件相关的内容,并且需要自己处理各种中断响应函数,导致程序的开发效率低下,性能不够稳定。本文设计的检测软件,移植了嵌入式Linux 操作系统,对底层硬件的控制均由操作系统来完成,应用程序与底层硬件相对独立。且各种中断均由操作系统管理,用户只要调用
相应的库函数,即可快速地完成软件的设计,因此开发效率
高。
2)原软件[1]只要修改软件(如修改数据、更改界面),则必须重新编译镜像文件并下载到目标板中,在目标板上进
行调试,每次下载都要耗费数十秒;而采用Qt4的设计方法
可以在PC 机上完设计和仿真,只需下载一次镜像文件,进
一步提高了开发效率。
3)原软件[1]只要更换嵌入式平台,则必须重新编写
程序,移植性较差。本文设计的软件,只要采用同一种Linux
linux内核设计与实现 pdf内核,便可以直接对应用程序进行移植。
因此相对于原软件,本文的软件设计方法具有开发效
率高,移植性好的特点。且本检测仪实质上是采用三电极体
系对微小电流进行检测,而该检测方法在电化学检测中是很
普遍的。因此,采用本文的设计方法,只需更改应用程序,
就可以很快地开发出用于电化学检测的其他应用程序。5结束语针对农药残留现场快速检测的需要,本文在基于嵌入式系统的电化学法农药检测仪的基础上,重新设计了应用软件。成功移植了嵌入式Linux 操作系统,利用Qt4设计了嵌入式检测软件,提高了嵌入式软件的开发效率、可移植性。利用RS232通讯接口将检测结果保存到上位机的专用软件中,提高了检测仪使用的便利性。实验表明,本文设计的仪器具有携带方便、操作简单、准确率高等特点,适合农药残
留现场检测的需求,但在检测精度、通讯手段和检测数据管
理等方面仍有待进一步提高。
参考文献:[1]洪思迁.基于嵌入式系统的电化学法农药检测仪器的研制[D].上海交通大学.2011.[2]唐祝昭.基于印刷电极和重组黑腹果蝇乙酰胆碱酯酶的
农药生物传感器检测技术及应用研究[D].上海交通大
学,2010.
[3]
基于天嵌科技的SKY2440/TQ2440的linux 系统移植[M/CD].广州天嵌计算机技术有限公司,2010.[4]张弘强,邓振生,苏心雨.基于Linux 和Qt4便携式医疗
仪器的开发方法[J].BEIJING BIOMEDICAL ENGI-
NEERING ,2011,30(2):191-194.[5]BLANCHETTE J,SUMMERFIELD M 著,闫锋欣,曾
泉人,张志强译.C++GUI Programming With Qt4
Second Edition[M].北京:电子工业出版社,2008.
[6]
基于SKY2440/TQ2440的Qt/Embedded 应用程序开完全手册[M/CD].广州天嵌计算机技术有限公司,2010.[7]李景峰,杨丽娜,潘恒.V isual C++串口通信技术详解
[M].北京:机械工业出版社,2011:51-70.
(收稿日期:6)2011.0.28

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。