赵瑞卿,陈小惠,林圣东
(南京邮电大学, 210046)
电解质分析仪在临床医学中主要用于各种离子浓度的检测,是现在医院中的必备设备。本文介绍的一种基于USB数据采集系统的新型电解质分析仪,具有高输入阻抗与高分辨率的特点,能够与多种离子选择电极进行配套使用,可测量K、Na、Cl、Ca等离子浓度。
在基于USB的电解质分析仪的设计中,我们使用了Cypress公司的EZ-USB FX2LP系列芯片CY7C68013A,CY7C68013A是一种集成了USB协议的增强型51单片机,电路设计相对简单,系统集成度高。通用串行总线USB接口与传统计算机接口如RS232、PCI接口和PS/2接口等相比,具有速度快,可靠性高,体积小,成本低,连接方便,支持热插拔,兼容性高,可扩展性好等优点。与传统电解质分析仪不同,我们使用USB协议将采集到的数据传输到计算机中,使测量结果的处理、显示与存储变的更加简单,对于临床的操作与使用来说更加方便。在AD转换部分,选择了16位的高精度AD转换芯片,保证了信号精度的要求。在进样模块的步进电机控制部分,使用单片机与光电开关进行联合控制,提高了仪器的可靠性。
在进样与传感器模块中采集过来的微小信号,经过调理电路对信号进行处理与放大,再经选通后进入AD转换芯片,将模拟信号转换成数字信号,再经集成有USB协议的微处理器通过USB接口控制传输至上位机,由上位机软件进行处理和显示;同时,上位机软件通过微处理器,能够对仪器的整个运作流程进行控制,实现相应的功能。实际电路中主要使用的芯片有CD4051BE、AD7715和CY7C68013A等。固件程序采用KeilC51编写,上位机程序采用VC++编写,并运用多线程技术,使数据采集与用户界面控制互不干扰。各模块都有各自分工,并且模块之间相互协作,最终实现本仪器的整体功能。整个系统框图如图1所示。
图1 系统整体设计框图
目前国内外电解质分析系统主流的检测方法一般为离子选择电极法(ion selective electrode,ISE),它是通过检测离子选择电极和参比电极输出之间的电压差来得到待测离子活度的。离子选择电极是一类化学传感器,它的电位对溶液中给定的离子活度的对数呈线性关系,它符合能斯特方程。
由于外界因素如温度、液体电位等因素的影响,所以在仪器的长时间间隔的测量中,要对电极进行两点定标。设A标液与B标液的质量分数分别为aA和aB,电位分别是EA和EB,A标液和B标液的电位差为ΔE标,有:
得到电极斜率K为:
上式中ΔE标测量可得,aA和aB已知,故能求出K。
因此,由下式可以测定液体中特定离子的浓度:
K由两点定标时式(2)求得,ΔEX测量可得,aA已知,故可求出aX。
本模块主要实现使被测液进入系统与传感器进行反应这一过程中具体硬件电路的设计,传感器获得的信号为模拟数据,具体体现为高阻、微弱的电信号。在设计中,使用光电开关用来作为逻辑控制与检测,用步进电机实现被测液的选择与抽取。相对于传统的缓冲寄存器、环形分配器控制逻辑以及正反转控门组成的步进电机控制器,使用单片机和ULN2003对步进电机进行控制,这使得电路变的更加简单,控制更加灵活。
在具体的设计中,我们使用了两个步进电机,其中一个步进电机作为配液阀,用来选择吸取用于定标的A标液与B标液或清洗用的空气,另一个步进电机用来吸取被测液或空气。步进电机再配以光电开关,可以很方便的使用单片机对其进行控制,实现功能,具体控制流程见上位机软件部分。
USB的控制器芯片一般分为两种:一种是内部不集成CPU的USB接口芯片,另一种是控制器内带有通用功能CPU的芯片。因此,对于第一种芯片我们可以与普通的单片机共同使用,USB芯片只负责与USB相关的通信工作,使用单片机进行主控。对于使用这种芯片的方法硬件电路相对复杂,不利于设计和维护。而对于自带CPU的USB控制器芯片,本身就是一个带有USB功能的增强型单片机,使用方便,开发相对简单,产品集成度高。
设计基于USB2.0规范的USB设备接口时,USB接口芯片选用了具有微控制器的Cypress公司的EZ-USB FX2LP系列芯片CY7C68013A。该芯片包括1个增强型8051、串行引擎(SIE)、1个USB2.0收发器、8.5KB的RAM、4KB的FIFO、I/O口、数据总线、地址总线及1个通用可编程接口。
多路传感器采集到信号之后,经过信号调理电路对模拟信号进行放大与处理后,通过CD4051BE芯片进行选通控制。CD4051BE芯片相当于一个单刀8掷开关,有8路输入,1路输出,通道选择功能由3条地址线ABC进行控制。
AD芯片选择的是AD7715芯片。AD7715片内有4个寄存器,分别是通讯寄存器、设定寄存器、测试寄存器和数据寄存器。在实际设计中我们通过对寄存器进行读写设置来实现所需的模数转换功能。
图2 选通与AD转换电路
Cypress公司提供了一个完整的固件程序框架,我们可以直接基于此框架开发我们的固件程序,用以简化开发难度,提高开发效率。固件开发我们采用Keil公司的C51编译器,集成开发环境为uVision2。固件程序的结构框架如图3所示。我们在文件periph.c中的DR_VendorCmnd函数中添加自定义的控制命令代码,代码会在CY7C68013A芯片的8051内核中运行,最终实现对芯片的控制。
图3 固件程序结构框架
固件程序可以有两种存储方式。第一种固件程序存放于主机中,每次USB芯片上电后,USB主机会将程序下载到片内的RAM中,USB芯片掉电后,RAM中的程序和数据都将丢失。第二种存储方式是将固件程序固化到与USB芯片的IIC总线相连的片外部存储器如EEPROM中,这样每次USB芯片上电后会自动将固件程序从EEPROM中加载到片内RAM中,接着USB主机复位EZ-USB,并执行固件代码。在实际中使用的是第二种方式。
上位机程序主要实现以下功能:读取并处理采集到的数据;对处理后的数据进行准确显示;实现用户对整个系统的控制。总之,上位机程序的编写要做到数据处理的精确性,与人机交互界面的易操作性。在Windows下,VC++下的MFC应用程序框架正适合我们的需求。Cypress公司提供了在VC++开发中所需要的API函数,要实现对CY7C68013A的控制,只需要将提供的动态链接库加入工程并调用相应的函数即可。
在应用程序的编写中,考虑到,由于数据采集和处理过程是需要一定时间的,为了防止在这段时间内数据采集与用户控制界面互相干扰,采用了多线程技术。程序的主线程是用户控制界面,新建一个辅助线程进行数据采集和处理,这样就把数据采集和处理放在了程序的后台,不会影响用户控制界面。在程序的开始我们就创建出自动重置的事件对象以及数据采集和处理的线程,并用事件对象将此线程暂停,在用户按下主界面的相应按钮之后,在其消息响应函数中使用SetEvent函数解放辅助线程,执行数据采集和处理,实际效果如图4所示。
图4 用户控制界面实际效果图
仪器实际测量过程中主要有进样、一点定标、两点定标和数据采集等步骤。进样是仪器的准备阶段,主要用来将标准液吸入管道,排除仪器管道中残留的空气。两点定标主要用来确定电极斜率K的值,一点定标用来确定EA的值。由于EA变化比K值受外界影响变化快,再结合实际使用情况,两点定标可每天测一次,一点定标可每三十分钟一次。在定标结束后就可用采集数据按钮测定待测液的浓度了。两点定标的流程图如图5所示。
图5 两点定标流程图
基于USB的电解质分析仪,设计了硬件电路,并编写了相应的系统软件,通过USB协议与计算机相连,实现了高精度的特定离子浓度采集和数据的实时显示,同时又可以通过上位机软件对整个仪器进行控制,用户界面友好,并且即插即用,可移植性强。
[1]徐建丽.高精度多路数据采集系统的设计[J].现代电子技术,2010(3):99-101.
[2]武建卫,赵英凯.应用于电解质分析仪的信号调理电路的设计[J].传感器与微系统,2009(28):101-105.
[3]Cypress Semiconductor.EZ-USB FX2LP(TM) USB Microcontroller High-Speed USB Peripheral Controller Cypress Semiconductor,2008.
[4]宋成艳.基于USB接口通讯的多传感器数据采集系统[J].仪表技术与传感器,2008(11):101-103.
[5]龚志勇.USB及其在水质监测系统中的开发与应用[D].武汉:华中科技大学,2005.
[6]薛园园.USB应用开发技术大全[M].北京:人民邮电出版社,2007.
[7]王铁流,李宗芳,陈东升.基于STM32的USB数据采集模块的设计与实现[J].测控技术,2009(8):37-40.
[8]孙鑫,余安萍.VC++深入讲解[M].北京:电子工业出版社,2006.