基于虚拟仪器的心率监测系统设计
2016-12-15王璠高云红赵浩杰郭鹏程张庆新
王璠+高云红+赵浩杰+郭鹏程+张庆新
摘要:设计了一种基于虚拟仪器的心率监测系统。该系统由STC12C5A60S2单片机最小系统、心率传感器与上位机组成。STC12C5A60S2单片机具有片内AD转换器,可以直接采集心率传感器输出信号,并通过串口发送测量数据至上位机。在上位机利用虚拟仪器设计软件LABVIEW对采集的信息进行实时处理,实现心率的实时测量、心跳波形的实时显示及数据存储。该监测系统体积小,功耗低,能对心电信号实时显示和存储,适合家庭使用,对心血管疾病的预防和长期监护具有重要意义。
关键词:单片机;虚拟仪器;心率监测;光电脉搏传感器
中图分类号:TP216 文献标识码:A 文章编号:1009-3044(2016)27-0219-03
Abstract: A new type of heart rate detection system based on LABVIEW is developed in the paper. The system consists of STC12C5A60S2 MCU minimum system, heart rate sensor and computer machine. STC12C5A60S2 microcontroller with on-chip ADC can acquis heart rate sensor output signal directly, and send measurement data to PC machine through the serial port , in the PC machine LabVIEW software is used to process collection information , realize the real-time heart rate (HR) monitoring, display heartbeat waveform and storage data. The monitoring system has the advantages of small volume, low power consumption, real-time ECG signal display and storage, suitable for family use. And it has important significance for prevention and long-term monitoring of cardiovascular disease.
Key words: MCU; virtual instrument; heart rate detection; photoelectric pulse sensor
随着生活水平的提高,家庭保健受到了越来越多地关注。心脏病是危害人类健康的头号杀手,但心脏病的发作往往是随机的、短暂的,患者难以及时赶到医院进行心电检查,从而影响到病因的及时诊断。研发一种成本低、可靠性强、适合家庭使用的实时心率监测系统有着重要的意义[1-3]。本文提出了一种电路简洁可靠,使用方便的心率监测系统设计方案,可实时监测心率变化并利用上位机显示,极大地满足了实际使用需求与市场需要。
1 系统硬件方案设计
针对本课题任务,系统使用STC12C5A60S2单片机作为主控电路,并利用单片机片内10位高速ADC读取传感器测量信号。单片机与上位机间经由串口进行通信,仅占用两根管脚,大大节省了单片机I/O资源。上位机可设置波特率等信息,并能显示心跳波形及心率值。系统原理框图如图1所示[4]。
STC12C5A60S2单片机是深圳宏晶科技公司生产的增强型51单片机,完全兼容MCS-51指令,具有60K程序存储器,1280B数据存储器,4个定时器,4组8位并行I/O口。考虑到本设计需要使用串口功能,因此使用11.0592MHz外部晶振构成时钟电路,保证波特率精度。STC12C5A60S2单片机的A/D转换口与P1口复用,共8路10位高速A/D转换器,速度可达到 250KHz(25万次/秒),足以分辨每60秒内仅100次左右的心跳。设计中使用P1.0口作为心率传感器的A/D转换接口。片内AD转换器共涉及到8个相关寄存器,使用时可仅操作A/D转换控制寄存器ADC_CONTR、P1口特殊功能寄存器P1ASF、以及结果寄存器ADC_RES。其中A/D转换控制寄存器ADC_CONTR是使用片内ADC的关键。该寄存器共8位,用于设置ADC电源、转换速度、通道选择等,如表1所示。
心率测量通过光电式脉搏传感器实现。脉搏主要由人体动脉舒张和收缩产生的,在人体指尖组织中的动脉成分含量高,且指尖厚度相对其他人体组织而言比较薄,透过手指后检测到的光强相对较大,因此光电式脉搏传感器的测量部位通常在人体指尖。在恒定波长光源的照射下,通过检测透过手指的光强可以间接测量到人体的脉搏信号,即可得到心率值。
2 软件设计
系统上电后,设置定时中断间隔,启动片内AD转换,启动串口通信。上位机经过串口向单片机发送检测阈值,单片机产生中断,在串口中断服务程序中向上位机发送心率数据。上位机使用LabVIEW软件进行程序设计。LabVIEW是一种图形化编程语言,功能强大,能够实时显示测量波形,十分适合本系统使用[5]。
2.1 主程序设计
在主程序中,首先进行定时器初始化、串口初始化以及ADC初始化,用于心跳周期测量、串口数据发送以及A/D转换。之后循环执行A/D转换,心率计算程序。其流程如图2所示。在进入串口中断服务子程序后,关闭串口中断,避免发送数据产生重复中断。依次发送AD值与心率值,发送完成后再次打开串口中断返回。定时器每1ms中断一次,中断服务函数中以计数变量计时,计数变量在心率测量函数中进行清零。
2.2 心率计算程序设计
心率计算使用测周法,即测量心跳波形周期,进而推算心率。心跳波形中每个周期会出现一高一低两个波峰,需进行过滤处理。具体方法是在上位机设定检测阈值,只有幅值大于阈值的波峰可被检测。下位机测量时,根据阈值自动滤掉较低的波峰,以较高的波峰为准测量周期。使用定时器定时并利用计数变量计算周期,第一次检测到波峰时开始计时,第二次检测到波峰时停止计时,便可得到心跳周期。心率计算公式:BPM=60/T,其中BPM为心率值,T为心跳周期。心率计算程序流程图如图3所示。
2.3 LabVIEW程序
本设计使用LabVIEW设计虚拟仪器来显示心跳波形、心率值以及串口波特率等信息。使用虚拟仪器省去了额外的人机交互设备,极大地降低了系统成本。本设计虚拟仪器界面如图4所示。设计中使用串口进行上位机与下位机通信,在LabVIEW程序中使用“VISA配置串口”进行串口配置,可设置:端口号、波特率、数据位、校验位。配置完串口后,使用“VISA写入”将心率监测阈值发送至下位机。在发送之前,需要对输入值进行数据格式转换,将“U8”数值转换为字符串,以便利用“VISA写入”经串口发送至下位机。当下位机接收到数据并产生中断后,将向上位机发送5字节数据,包括波形数据与心率值。使用“VISA读入”函数进行接收,并设置接收5字节数据。
上位机接收到下位机发送的5字节数据,并以字符串形式存储,为了最终显示,需进行格式转换。首先使用“字符串至数值数组转换”函数,将接收到的字符串转换为数值数组,之后进行数组索引,提取各字节数据。前4字节为波形数据,需要转换为ASCII码形式,并进行组合以供“波形图表”控件进行使用。最后一字节为心率值,可直接显示。程序如图5所示。
3 结论
在调试过程中反复对AD采集功能进行了验证,系统能够保证可以准确地采集到传感器值;对心率计算程序进行测试,上位机可以接收到合理的心率值;多次开关上位机后均可得到心率值;多次调整检测阈值后,心率值获取不受影响;心率值可随具体情况实时变化。通过对上位机进行测试,预定波形可正确显示、实时变化,波特率等信息可自由设置。测试结果如图6所示。
根据实验结果,本设计实现了任务要求。系统可以实时检测心率;可以显示心跳波形与心率值;上位机显示正常,无卡顿等问题。但是由于设计时间较短,上位机界面比较简单,显示信息也较少。另外心率测量算法有待进一步完善,测量值有时不够稳定。
参考文献:
[1] 郑诚,余珊南,祝永华,等.一种基于ARM 的便携式心率监测仪的设计[J]. 微型机与应用, 2014 ,33(5):27-29.
[2] 石建飞. 数字心率计的单片机设计与实现[J]. 自动化技术与应用,2013(5):67-69,76.
[3] 郑开明.基于单片机设计的心率检测仪[J]. 电脑知识与技术,2012(6):1431-1433.
[4] 徐灵飞,向平.基于C8051F021的便携式心电监视仪[J].微型机与应用,2005(2): 36-37,60.
[5] 李喆,卢广文,莫莉,等.基于LabVIEW的虚拟心电记录系统研制[J]. 微计算机信息,2007(37):14-16.