- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于LabView编程实现的胎儿心电 仪系统
虚拟仪器是机技术与仪器相结合产生的一种新型仪器模块,它通常是由计算机、模块化的功能硬件与带有数据处理、过程控制的可视化软件构成。本系统使用NI公司出品的LabView6.1图形语言编程实现。LabView采用图标代替传统的文字代码实现编程,图标代表的程序模块都是NI公司开发的成熟程序模块,因此,采用LabView编程可以大大提高系统开发效率。
胎儿监护及围产期监护是产科中一项重要的监护措施。常用的胎儿监护方法有:超声多普勒监护、胎心音监护和胎心电监护。其中,胎儿心电监护因其从母体腹部提取胎儿心电信号,对母体和胎儿无创,特别是能同时观察胎儿心电图,其优点明显,是产科常用的诊断方法。
虽然腹部心电信号拾取方便,但是,母体腹部信号复杂,信噪比低,特别是一般母体心电信号比胎儿心电信号大10-20倍,而且胎儿心电约有10%-30%与母体心电重合,形成复杂的QRS波群,并且胎儿心电的频谱与母体心电的频谱重叠。这些因素给胎儿心电的检测带来了比较大的困难。学者们探索了一系列的信号处理方法解决这个,包括:匹配滤波法、自适应滤波法等。本系统采用比较常用的匹配滤波法。
2 系统的实现
2.1系统概要
本系统由硬件数据采集器和普通PC机两部分组成,通过RS-232口连接。PC机上的应用程序采用图形化编程语言LabView6.1实现。硬件数据采集器采样获得的数据以串行通信的方式发送给PC机,PC机上的软件通过RS-232接口模块读入波形数据,并送预处理模块,工频陷波和抑制基线漂移后,进行匹配滤波去除母亲心电的干扰,最终在显示器上显示胎儿心电信号的波形。另外,PC机也可以串行通信方式控制硬件数据采集器的工作状态,如调整增益、时间常数等。
2.2 硬件信号采集系统
系统硬件由前置放大、工频陷波、主放大器、单片机系统等几部分组成。前置放大器将导联传人的信号适当放大后,送工频陷波器陷波,以防止可能出现的过强工频干扰阻塞系统放大通道。随后,信号经过主放大器和末级放大器几万倍放大之后,单片机控制的A/D对其进行400×12 bits/s采样,数据经RS-232接口送PC机处理。硬件部分是PIC单片机控制的高精度心电信号采集系统。该系统内部采用12位高精度串行输出A/D转换器AD7895。采样得到的数据通过单片机处理后将按照下面的帧格式通过串口发给PC机。系统采样率为400Hz,数据传输速率为19.2kbps。该系统以低功耗为主要设计思想,其工作电流小于3mA,可以采用串口供电,无须外接电源。
其中,12个X表示12位A/D采样得到的数据;00、11为标志位,00代表高6位,11代表低6位。另外,硬件部分也接收PC机的控制字。
2.3 软件部分
软件部分分为RS-232接口模块、信号预处理、匹配滤波算法3部分,其中匹配滤波又包括相关检测和波形对消2个部分。
2.3.1 RS-232接口模块
(1)串口供电。由于硬件数据采集器工作电流比较小,本系统使用RS-232中空闲的握手信号线制成电源,使其工作因此,在主程序打开串口读人数据前,必须对硬件数据采集器加电,使其处于工作状态。在LabView中采用Serial Line Ctrl.Vi模块,将RTS和DTR置相应电子;(2)串口读写。由于硬件数据采集器在整个工作期间,以19.2kbps的速率连续向外发送数据,为了数据处理方便,采用了Serial Read With Time-out FT.vi模块,以保证每次从串口缓存中读出等量偶数个数据。用Serial Port Write.vi模块发送控制字给硬件模块。控制字的发送采用了LabView6.1中新增的事件驱动功能。
2.3.2信号预处理
主要功能是滤除工频干扰和抑制基线漂移。
由于硬件系统采用串口供电,采集的信号中常混入50Hz的工频干扰,必须加以抑制。抑制工频干扰的可以从硬件和软件2个方面来实现。在硬件方面,工频干扰是一种共模信号,可以设计高质量的前置放大器和良好的屏蔽以及优秀的电源模块减弱工频干扰对系统的。在软件方面,使用50Hz的数字陷波的方法。本系统的数字陷波器采用Lab-View6.1 Signal Processing Toolbox中的Equi-Ripple Band-Stop PtByPt.vi控件实现。
基线漂移的原因有多种,其中由于运动造成体表电极与皮肤之间细微的滑动和硬件元件热效应造成参数变化是主要原因。本系统采用非线性高通滤波的方法抑制基线漂移。具体方法是将腹部电信号通过中值滤波得到基线信号,并与原腹部信号相减。本系统采用的是Median Filter PtByPt.vi控件。显示了实际处理效果,A为原始腹部信号;B为经过中值滤波后的基线信号;C为抑制基线漂移后的腹部信号。
2.4 匹配滤波算法
2.4.1 数据队列的生成
队列是一种常用的数据结构,本系统使用这种数据结构进行匹配滤波。但是LabView6.1已有的队列控件queue,并不能满足使用要求,必须重新创建一个。这里采用与C语言中类似的作法,创建一个N个元素的数组变量main Buffer,将数据不断从尾部移动到首部。是用LabView编程实现的长对为1000的双精度浮点数队列,与C语言实现不同之处在于队列中数据移动的次数是1000,而不是999,这是因为LabView初始化与C语言不同所致。在LabView中,如果数组某个单元没有被附值,那么,该单元不被初始化。
因此,如果N=999,则第998个单元将被初始化,第999个单元因为是读,而没有被初始化,而致使后面的新数据输入操作无效。
2.4.2 相关检测算法
信号与检测模板的互相关运算,其中:S表不经过抑制基线操移和去除工频干扰的腹部电信号;T表示系统内部的检测模板。经过互相关运算后就可以进行R峰检测了。互相关运算采用Signal Processing Toolbox中的ColssCorrelation.vi控件。
R峰检测实际上是对互相关运算的结果进行峰值检测,以求得母亲心电R峰的精确位置。用LabView系统自带的峰值检测控件Threshold Peak Deicer PtByPt.vi进行检测。
2.4.3 波形对消算法
波形对消算法的基本思想是把当前母亲心电QRS波群与先前求得的QRS波群模板进行加权平均,出新的QRS波群模板,并与当前QRS波群相减,滤除母亲心电。临床实验独立于主程序之外的定时中断服务子程序完成显示功能,程序设计思路简单清晰、可读性强。系统所用的24C01C操作简单,3个管脚外,其余管脚接地即可。
3 系统软件
系统软件由主程序、显示数字中断服务子程序、功率控制中断服务子程序、计时中断服务子程序以及故障处理子程序组成。人眼视觉暂留时间为20ms,每位显示时间间隔必须小于20ms。显示中断每次中断间隔9ms,轮流切换显示3位LED,每位数字的显示时间间隔为18ms(<20ms),可以达到稳定的视觉效果。计时中断服务子程序包括正计时和倒计时,其中倒计时又分为以min为单位计时和以s为单位计时。故障处理子程序完成的功能是关闭系统中断、关闭加热输出、根据采样温度判断并显示故障的类型(短路、断路以及温度超标)、发出报警以及等待用户确认故障信息后程序自动复位等功能。为了编程方便,本系统具体编制了按键检测确认子程序、从D转换子程序、电压\温度转换子程序、读EEPROM以及写EEPROM等子程序。
4 结束语
自动煎药机以其突出的优越性受到了各大与制药厂家的欢迎,当然它也存在一些需要解决的,即:如何解决先煎、后下问题,增加浓缩功能等。这些问题有待于在进一步的实践中不断完善。过程中发现传统的模板更新对母亲心电QRS波群变化的跟踪能力不强,某些情况下不能彻底滤除母亲心电QRS波群,本系统改进了该方法。系统初始化时建立一个容量为N的模板库,将检测到的母亲心电QRS波群存入该库中,替换最初入库的母亲心电QRS波群,即构建一个母亲心电QRS波群队列,随后按照新高旧低的优先级原则进行加权平均。各母亲心电QRS波群的权系数。
用信号流图的形式表示该算法。展示了系统对腹部电信号进行匹配滤波处理后的效果,A为从腹部提取的电信号;B为改进模板更新方法后的胎儿心电信号;C为采用传统模板更新方法的胎儿心电信号,*表示母亲心电的残余。
5 结论
本系统硬件无须另配电源,系统结构更简单。软件采用LabView6.1进行图形化编程,直接使用NI公司提供的多种成熟的软件模块,因而大大节省系统开发时间和成本。本系统具有信号基线校正功能,改进了传统匹配滤波模板更新的方法,经过近20例临床测试,均取得良好效果。本系统在胎儿心电波群的识别上仍有改进的空间。