一种基于STM32的心率检测方法设计

作者:未知

  摘 要:为对心脏疾病患者进行实时心率监测,提出一种心率检测方法。采用STM32单片机作为控制芯片,传感器采用SON1205心率传感器。首先将心率信号输出成对应的方波,将此方波输入到单片机处理,然后通过设计的心率检测算法得出心率,再经过滤波算法处理,得到准确的心率,最后通过LabVIEW软件进行仿真实验,得到心率波形。实验结果表明,与高精度测量仪器相比,该方法误差值最多不超过3,准确率达到96%以上。基于STM32的心率检测方法性能稳定,数据可靠,可用于日常心率检测。
  关键词:心率检测;STM32;心率传感器;检测算法;LabVIEW
  DOI:10. 11907/rjdk. 192576 开放科学(资源服务)标识码(OSID):
  中图分类号:TP319 文献标识码:A 文章编号:1672-7800(2020)007-0081-04
  The Design of A Heart Rate Detection Method Based on STM32
  XIA Zhuo,WANG Ya-gang
  (School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology,Shanghai 200093,China)
  Abstract: In order to achieve real-time heart rate monitoring for patients with heart disease, a heart rate detection method is proposed. The STM32 single-chip microcomputer is used as the control chip, and the sensor adopts the SON1205 heart rate sensor. Firstly, the heart rate signal is output into a corresponding square wave, and the square wave is input to the single-chip processing, then the heart rate is obtained through the designed heart rate detection algorithm and processed by the filtering algorithm to get accurate heart rate. Finally LabVIEW software is used to carry out simulation experiments to get heart rate waveform. The experimental results show that compared with high-precision measuring instruments, the error value of this method is no more than 3, and the accuracy is as high as 99%. The heart rate detection method based on STM32 has stable performance and reliable data, which can be used in daily heart rate detection.
  Key Words: heart rate detection; STM32; heart rate sensor; detection algorithm; LabVIEW
  0 引言
  我国目前心脏疾病患者较多,心脑血管疾病死亡率和癌症不差上下[1],有些心脏疾病可以遗传,发病较快,有时因来不及预防造成无法挽回的结果[2]。正常人的心率为每分钟60~100次,超过100次或者低于60次称为心律不齐[3]。引起心率不齐的原因有很多,如有的人情绪紧张、过量吸烟饮酒以及其它一些心脏疾病等,都会导致心率不齐,甚至会影响心脏输出血液,造成生命危险。因此,测量心率是日常生活中非常重要的环节。
  现阶段测量心率的方法有医院和家用心率检测仪,可以准确测量出心率,但是这些仪器都不方便随身携带。目前比较成熟的智能手环也可以测心率,缺点是价格较昂贵。文献[2]提出一种基于AT89C51单片机的心率检测方法,实现了心率采集与显示功能;文献[3]提出一种基于AT89C52单片机的心率检测方法,也实现了上述基本功能,但在系统稳定性和数据处理方面存在不足。控制芯片采用8位51系列单片机,性能远不如32位的STM32F4系列单片机,系统稳定性差,且在数据处理方面没有给出具体方法及仿真实验,数据可靠性差。
  本文使用STM32单片机作为控制芯片,提供一种高性能、低成本的嵌入式应用解决方案。开展心率检测算法研究,并给出算法具体介绍,将心率检测模块直接通过I/O口连接通信。经过算法计算之后,对数据进行滤波处理,得到准确的心率数据。为确保数据可靠性,利用LabVIEW软件进行仿真实验。STM32单片机是市场上公认的性能稳定、功能强大、高性价比的嵌入式解决方案,运行速度和稳定程度都远强于8位单片机。STM32改进了系统的稳定性与运算能力,数据更加可靠,且对二次开发都可以轻松应对,处理能力强大。
  1 系统总体设计
  系统整体结构不复杂。首先由SON1205心率检测模块对被测人员进行心率检测,檢测结果通过传感器的OUT端口输出方波,然后将此端口连接到STM32单片机的I/O口上,这样就可利用程序代码对收到的方波进行分析处理,从而得到心率数据[4];最后对这些数据进行程序运算,算出的心率在液晶屏上显示,并通过串口发送到LabVIEW软件,仿真出心率波形,通过图像可更为直观地了解心率情况。系统整体结构如图1所示。   2 硬件设计
  2.1 控制芯片
  控制芯片采用STM32单片机F4系列中的STM32F407,相较于之前比较常见的F1系列,F4系列单片机在很多方面都得到明显加强。F1系列采用Cortex M3内核,最高主频为72MHz,并且没有浮点运算单元和DSP指令集;而F4系列采用Cortex M4内核,最高主频为168MHz[5],这让F4系列单片机的运算能力和程序执行能力显著提升,并且具有单精度浮点运算单元和增强的DSP指令集,在定时器、SRAM、GPIO、串口以及其它外设接口的数量和性能等方面都有所加强[6]。
  2.2 心率检测模块
  目前市场上的便携式心率检测装置大多采用光电检测法,即传感器会往皮肤上发出一道光,由于血液会吸收特定波长的光[7],所以心脏每跳动一次就会吸收传感器发出的光,传感器再根据反射回来的光确定心率情况[8]。SON1205心率传感器也是这种原理,通过反射回来的光确定心率,并在OUT端口输出对应的方波信号,根据此方波信号编写适当的程序算法,对其进行检测、滤波、计算等[9],以此获得被测人员的心率情况。
  3 软件设计
  3.1 心率检测算法
  系统核心是心率检测部分,而心率检测部分的核心是该部分程序的编写。心率已由心率传感器测出并输出方波,对此方波进行检测,方法是利用STM32F407单片机的输入捕获功能。一旦单片机捕获到上升沿或下降沿就进入中断服务函数,再测量每个方波的高低电平持续时间,并对该数据进行计算得出心率。
  具体程序流程为:首先配置好单片机的GPIO输入输出和定时器相关初始化[10],将单片机输入捕获设置为上升沿捕获,这样第一次进入中断服务函数时就必定捕获上升沿。
  中断服务函数分为两部分:①上升沿函数;②下降沿函数。当第一次检测到上升沿进入到上升沿函数时,由于第一次上升沿比较特别,需要定义一个flag,判断是不是第一次检测到上升沿。如果是第一次立即使能定时器,从0开始计数,并将单片机设置为下降沿捕获[11],这样下次进入中断函数时,必定捕获到下降沿。一旦捕获到下降沿就进入下降沿函数,立即停止定时器计数,并将此时的定时器数据存储下来,此即为高电平持续时间;再将单片机设置为上升沿捕获,重新使能定时器开始计数,为下一次中断做准备。
  当下一次中断来临时必定捕获到上升沿,此时进入到上升沿函数,立即停止计数并将数据保存下来,获得低电平持续时间,再将单片机设置成下降沿捕获,重新使能定时器[12]。如此反复,每一次心跳的方波高低电平持续时间都能得到,为进一步计算作好准备。
  如图4所示,通过控制定时器得到高低电平的持续时间,即可得到心率。高低电平时间相加即为一次心跳时间。定时器的计数频率设置成1Mhz,即1us计一次数,则心率检测公式为:
  式中,X为心率,单位次/min,a为高电平持续时间,b为低电平持续时间,单位都是微秒,分子1000000us即为1s,1s除以高低电平相加时间即为1s内有多少次心跳周期,再乘以60为每分钟有多少次心跳,此值即为心率。
  3.2 滤波算法
  上述方法采集到的数据为瞬时值,由于测量的不确定性,需要对测量数据进行简单的滤波计算。首先在捕获高低电平方面进行滤波,在捕获到上升沿或下降沿时,在短时间内进行连续多次检测,判断是否一直持续高电平或者低电平。如果不是,则认为本次捕获没有成功[13],进行下一次捕获,这样可以避免由于一些外界因素造成的数据抖动,减少错误数据采集。
  在数据处理方面采用限幅滤波法和算数平均滤波法[14],连续采集5次数据并设定最高值与最低值。如果有数据超过该范围或者突变幅度特别大,则认为不是有效数据,剩下的数据再取平均值。或者连续采集5秒数据,同样设置上下限和考虑突变情况,然后对数据取平均值 [15]。
  4 仿真实验
  4.1 LabVIEW程序设计
  LabVIEW是一款由美国国家仪器公司开发的虚拟仪器开发工具[16],采用图形化编程,具有各类直观易懂的虚拟器件,层次清晰、编程简单[17]。
  本实验使用LabVIEW软件对采集到的心率进行波形仿真。程序框架如图7所示。
  利用LabVIEW中的VISA架构[18],通过单片机串口获得数据。首先进行串口配置,如波特率、停止位和校验位等[19],不配置即为默认值;然后进入while循环,循环中对串口数据进行读取[20],在单片机程序代码中自定义串口发送数据的格式为“高电平时间L低电平时间”,这样即可使用字符串函数中的匹配模式提取数据,得到高低电平时间后即可通过公式
  求出占空比,并将其输入到方波波形控件,进而得到测量波形。
  前面板得到的波形如图8所示。
  4.2 实验分析
  为确保实验结果准确,对3人进行实验测试,将测量数据与苹果公司的Apple Watch智能手表测量结果相比较,结果如表1所示。
  由实验结果可知,系统测量数据与Apple Watch智能手环存在一定的误差,但是误差较小,不会影响测量结果,表明系统可以稳定地测量心率。
  通过与其它具有心率测量功能的智能手环相比较,可以看出该装置的优势与创新点。
  (1)该装置成本非常低,传感器的市场价为10元左右,控制芯片的最小系统板市场价为30元左右,整套系统成本50元左右,而苹果公司的Apple Watch市场价为3 200元左右,市场上其它公司的智能手环最低也要160元左右,而且测量结果几乎一致。该装置基于强大的STM32控制芯片,运算能力强,测量性能稳定,性价比更高。
  (2)该设计既要准确测量心率,又要体现智能化和人性化。本文首先设计一套心率检测算法,用于测量使用者的心率情况,相比于其它智能手环,该装置的创新点在于二次开发能力较强。普通智能手环功能基本固定,較为单一。本装置使用强大的STM32控制芯片,可以搭载各种模块,实现多种功能。为体现人性化和智能化,可以加入通讯模块,如4G模块或者WiFi模块,将测量结果实时传入服务器端,通过数据库技术对数据进行保存,这样就可随时查看历史记录。对心率异常情况设计报警机制,即一旦心率异常就可通过服务器广播,传到家人的手机上,避免危险发生。   5 结语
  本文基于STM32单片机设计了一套心率检测系统,利用单片机对传感器输出方波的上升沿和下降沿检测,编写程序算法对高低电平进行计算,进而求得占空比等波形数据。经过滤波,得到较为准确的心率数据,在液晶屏上显示结果;再通过LabVIEW软件中VISA架构与单片机串口通讯,得到心率相关数据并仿真出心率波形。整套系统运行稳定,可以满足日常心率检测需求。下一步工作可以加入数据传输模块,将实时心率传输至数据库,再设计一款App或者其它上位机软件,实时显示使用者的心率情况。即使家人不在身边,也可以远程监控测量者的心率情况,从而降低危险发生概率。
  参考文献:
  [1] YENIKOMSHIAN M,JARVIS J,PATTON C,et al. Cardiac arrhythmia detection outcomes among patients monitored with the Zio patch system: a systematic literature review[J].  Current Medical Research and Opinion,2019,35(10):1208-1224.
  [2] 吕峻达,王景泰. 基于单片机的人体心率监测系统的设计与实现[J]. 电子元器件与信息技术,2018(8):26-28.
  [3] 罗通. 心率监测系统设计[J]. 无线互联科技,2019,16(9):55-56.
  [4] 刘泽玲,周智荣,张伟. 基于STM32F407的畜牧车配料稱重仪表的设计[J]. 自动化与仪表,2019,34(6):87-90.
  [5] 牛妍燕,田子怡. 基于STM32的嵌入式智能家居系统[J]. 电脑知识与技术,2016,12(13):240-242.
  [6] WANG R B. The design of motor precision positioning system based on stm32 single chip microcomputer[J]. Journal of Physics: Conference Series,2018,1087(6):764-778.
  [7] JIN X,GU F,NIU J  W,et al. HRcal:an effective calibration system for heart rate detection during exercising[J]. Journal of Network And Computer Applications,2019,136(9):967-1006.
  [8] 吕智鹏,石紫茹,王君瑞. 关于心率传感器在可穿戴设备上的实际应用[J]. 中国新通信,2018,20(17):232-237.
  [9] ARNALDO G,LEAL-JUNIOR,CAMILO R,et al. Polymer optical fiberbased sensor for simultaneous  measurement of breath and heart rate under dynam imovements[J].  Optics and Laser Technology, 2019(132):109-220.
  [10] 张幼麟. 简介51单片机的定时器/计数器[J]. 内江科技,2018,39(12):129-132.
  [11] KRISTOFFER NYBORG GREGERTSEN,AMUND SKAVHAUG.Execution time timers for interrupt handling[J]. ACM SIGAda Ada Letters, 2013, 33(2):65-77.
  [12] 冯康. 单片机定时器在计时器设计中的应用[J].  福建电脑, 2019, 35(5): 103-105.
  [13] 胡超然,徐枫,陈永胜. 常用数字滤波算法及其应用[J]. 科技风,2017(13):13-15.
  [14] ROY S,CHANDRA A. Design of narrow transition band digital filter:an analytical approach[J]. Integration,2019(68):532-547.
  [15] 王波. 浅析数字滤波的常用算法[J]. 矿业工程,2009,7(3):55-57.
  [16] 徐庆坤,房齐. LABVIEW和单片机串口通信在半导体模块测试设备中的应用[J]. 价值工程,2018,37(30):184-185.
  [17] 李蒙蒙. 基于LabVIEW的数字信号调制识别[D]. 北京:北京邮电大学,2018.
  [18] 王兴宏,魏琳,周婷. 基于计算机技术的Labview系统仿真设计研究[J]. 白城师范学院学报,2019,33(4):15-17.
  [19] 曾德康. 基于单片机的数据串口通信研究[J]. 通信电源技术,2019,36(3):194-195.
  [20] 侯光辉. 串行通信的工作原理[J]. 电子技术与软件工程,2019(6):44-68.
  (责任编辑:杜能钢)
转载注明来源:https://www.xzbu.com/8/view-15285242.htm

服务推荐