基于LabVIEW串口的心电信号传输

2022-04-11 09:23:24 | 浏览次数:

摘 要:心电信号能够反映心脏的受损程度,对各种常见心脏病的诊断有重要参考意义。随着技术的发展,各种模块化的心电信号采集装置陆续推出,有助于快速搭建心电监护系统。本研究使用AD8232模块采集心电信号,通过Arduino进行模数转换,最后使用LabVIEW软件从串口读取采集到的心电信号,并将心电信号展示出来。整个系统模块清晰、成本低廉、信号清晰,有较强的实用性。

关键词:LabVIEW;串口通信;心电

中图分类号:TN919 文献标志码:A 文章编号:2095-2945(2019)02-0032-02

Abstract: ECG signals can reflect the degree of heart damage, and have important reference significance for the diagnosis of various common heart diseases. With the development of technology, a variety of modular ECG acquisition devices have been introduced, which is conducive to the rapid construction of ECG monitoring system. In this study, AD8232 module is used to collect ECG signal, and analog-to-digital conversion is carried out through Arduino. Finally, LabVIEW software is used to read the collected ECG signal from the serial port and display the ECG signal. The module of the whole system is clear, the cost is low, the signal is clear, and it has strong practicability.

Keywords: LabVIEW; serial communication; ECG

引言

心肌细胞收缩时产生的电信号可以传导到体表的任何部位,在人体皮肤的某个部位放上测量电极,然后通过测量电极可以记录被测者的心脏电变化曲线,这就是临床意义上的心电图(Electrocardiogram,ECG)[1]。心电图的采集和分析,对心脏疾病的监测和诊断,有重要的研究意义,通常认为,心电信号对心律失常、心肌梗死等病症具有重要的参考价值。

心电信号是较早应用于医学研究的人体生物电信号,心电信号的采集和分析,是生物医学工程专业教学中的一个重要内容[2]。以往的教学安排中,模拟放大电路、单片机的采样和数字信号处理,会在不同的专业课中讲授,缺乏连贯和一致性。本文依托中南民族大学实验室开放与技改项目,建立一个基于虚拟仪器的心电采集分析平台。

为了尽可能让大部分学生熟悉心电的采集分析流程,整个平台需要具有模块化、信号精度可靠、简单易用、成本低廉等特点。基于此,本文设计出一款基于AD8282心电采集模块,Arduino开发板和LabVIEW的心电监测系统。该系统中,AD8232实现心电放大,Arduino实现模数转换,LabVIEW通过串口读取最终的心电信号并显示。

1 AD8232心电采集模块

AD8232是美国ADI公司出产的一款单导联心电采集芯片,尺寸小、成本低廉,共模抑制比80dB,能用于运动心率监护、便携式心电装置开发等[3]。在该芯片的基础上构建的心电采集模块,包括运算放大、右腿驱动、导联脱落监测等电路。

AD8232模块的实物图如图1所示,从图中可以看到,其主要接口包括接地(GND),接电源(3.3V),信号输出(OUTPUT),导联脱落监测(LO+和LO-)和停机检测(ISDN)。进行心电采集时,将三个电极分别粘贴在左手手腕、右手手腕和右脚脚踝处,并与导联线连接。心电信号通過导联线从右侧的3.5毫米连接线头子接入采集模块,经过放大后的模拟心电信号,可以从“信号输出(OUTPUT)”端口获取。

2 Arduino实现模数转换

为了将心电模拟信号转换为数字信号,我们使用了Arduino开发板。Arduino是一款以ATmega单片机为控制核心的开发板,包含ATmega最小系统、稳压、USB转串口等电路,是一种价格低廉、开发库丰富的微控制器平台[4]。

我们使用Arduino的A0通道进行心电信号的模数转换(与AD8232模块的OUTPUT端相连),A10和A11通道作为电极脱落监测通道(与AD8232模块的LO+与LO-相连),Arduino上的3.3V与GND与AD8232模块上对应的端口相连。

在Arduino上,编写模数转换程序如下所示。通过这个程序,设定串口传输的波特率为9600,从A10和A11读入电极脱落信号,从A0读入心电模拟信号,再从串口将数字化后的心电信号传送出去。

void setup() {

Serial.begin(9600);//设置串口波特率

pinMode(10, INPUT); // 电极脱落监测+

pinMode(11, INPUT); // 电极脱落监测-}

void loop() {

if((digitalRead(10) == 1)||(digitalRead(11) == 1)){

Serial.println("!");//如果监测到电极脱落,输出感叹号 }

else{

Serial.println(analogRead(A0));//从A0口读入当前电压值 }

delay(1);//延时等待}

3 LabVIEW从串口获取数据

串口通信(Serial Communication),是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度较低。生物医学信号通常为低频信号,数据量不太大,因此,串口通信协议在生物医学信号的传输中很常见。

LabVIEW是实验室虚拟仪器集成环境(Laboratory Virtual Instrument Engineering Workbench)的简称,是一种图形化的编程语言和开发环境,具有测试方便、开发速度快等特点。LabVIEW依靠VISA(Virtual Instrument Software Architecture)库来实现串口的通讯[5]。VISA库是仪器编程的标准函数库,支持串口、GPIB、USB、以太网等多种不同的通讯协议。在串口通讯时,常用的函数有“VISA配置串口”、“VISA打开”、“VISA读取”、“VISA写入”、“VISA设备清零”、“VISA查找资源”、“VISA解锁”、“VISA关闭”等。

我们这里仅涉及到从串口中读取数据,用到了“VISA配置串口”、“VISA读取”和“VISA关闭”这三个VISA函数。如图2所示,给出了从串口读取心电数据的程序框图。从图2中可以看到,为了LabVIEW能顺利从串口中读取出数据,需要选定当前数据传输串口号(如果不确定,可以在计算机的设备管理器中查看)。该程序使用了一个属性节点(Bytes at Port),这个属性节点能够获取串口缓冲区的剩余字节量,将这个值作为参数传给“VISA读取”函数,可以一次性将串口中的数据全部读出。LabVIEW从串口读出的数据是字符串格式,可以直接创建一个字符串控件“读取缓冲区”查看读取出的数据,也可以使用字符串选板的“十进制符串至数值转换”函数转换为数值,再在波形图表中显示出来。程序如果被手动停止或出错,将终止循环,并关闭串口。为了和传入的数据频率保持一致,这里设定循环延时为1毫秒。

最后,在前面板查看到,获取的心电信号波形如图3所示,从图中能够清晰地看到心电信号的特征波形。

4 结束语

本文实现了基于LabVIEW串口的心电信号传输,搭建了一个模块化、低成本、精度满意的实时心电监测平台,适合作为生物医学工程专业的实验平台。本文的工作还可以从以下兩个方面深入改进,一是Arduino与计算机连接最好可以采用无线的方式,降低导线的约束;二是计算机获取心电信号后,还需要对信号进行进一步分析和处理,实时监测心率变化,对异常心率给出报警。

参考文献:

[1]李中健,井艳,李世锋,等.心电图波形特征分析[J].临床心血管病杂志,2008(03):195-197.

[2]王昌,秦鑫,岳小萍.基于心电的生物医学工程教学系统开发[J].数字技术与应用,2014(09):146.

[3]陈嘉绪,周颖.基于AD8232的心电实时监测及分析系统设计[J].计算机测量与控制,2017,25(02):26-31.

[4]付久强.基于Arduino平台的智能硬件设计研究[J].包装工程,2015,36(10):76-79+100.

[5]魏义虎,陈雷.基于LabVIEW-VISA方式的串口通信研究[J].电子设计工程,2015,23(24):129-131.

推荐访问: 串口 传输 心电 信号 Labview