基于STM32的心率检测仪设计与实现详解

概要

  现代科学的发展,导致越来越多人开始重视自己的身体健康,他们往往会想在能力之余使用健身运动等方式来锻炼自身。你会发现,在健身房,健身达人或者是教练都会叮嘱新手去关注自己的心率节奏。一般来说,人的激烈的锻炼会造成心脏血压的上升,心率变化从而加剧。而心率恰恰就作为人们运动的警戒和灯塔,运动状态下,心率的平稳状态、是否处于正常范围内都是健身人士应该注意的地方,不管你健身的目的是为了什么,而这更多的是与自身体重、体制等的相关。与此同时,心率的表现也能让人们能及时发现身体的异样。心率不定往往会造成。心脏、心血管等疾病。但往往是如此致命的病,检测其的方式就很简单。而心率检测的作用,就是作为一个实时监控并且在危急时刻能警报你的装置,由此可得出心率检测仪对人们的作用十分重要。
  在这个系统设计上,采用了以STM32芯片中的F103系列芯片来作为总处理终端,在通过BUTTERWORTH滤波等之后将放大的心率信号进行除杂、去噪,也相对的对电路进行了优化。数据显示方面将用到一块OLED屏幕将个人的动态心率进行纪律以及同步在屏幕中显示出来,其显示的内容将包括心率的单独显示已经更显而易见的图标模式。利用心跳脉搏波形的特点以及心电图的基础将平均心率计算出来,从而展示出心率的“脉象图谱”。

关键词:心率检测 STM32 动态光谱 脉象图谱

一、研究的主要内容

  在越来越智能化的现代社会中,智能医疗已经开始慢慢步入寻常人家。对于人们来说,在越来越追求生活品质的现在,身体健康的需求同样是他们的刚需。在致力于解决现代医学看病容易预约难的情况下,便携式的只能家用健康医疗设备就体现出了它存在的意义——足不出户就能轻松做到健康检测和疾病预防。
  而心率检测的作用就是监控纪律心脏跳动的次数,也就是纪律心率的数据,可以直观的看出心率是否正常。一是在包括运动等情况下检测自己是否过度运动导致心率不稳定,二是预防大量心血管疾病的发生。心血管疾病的先兆几乎是肉眼无法见到的,甚至很多后期确诊的人都说感觉不到身体的变化。心血管疾病的突发性与细微程度都是让人们十分担忧的,患者在不知情的情况下,会突然发病,晕倒,甚至可能造成休克或者死亡,然而因为这个病所猝死的人不在少数。心率检测仪就是在持续监控某人在某段时间内的动态心率,做到记录、监控数据以及健康提醒的作用。

  该设计在基于STM32控制板外,另一个主要的板块就是做到如何去采集到心率数据的样本。关于MAX30100,其在简易心率检测仪中使用量非常的大,是一个优质的心率监测器传感器。MAX30100利用其本身含有的LED和光电检测端来检测信号的接收,以显示心率数据。其工作原理等会在后面讲到。另外,在该系统中STM32是主要微控制器和数据处理器;利用OLED屏实现动态心率的实时监控,即数据显示;利用蓝牙串口可以将数据输出显示。电源将设置一个3.5V-8V的电源,在选择合适电源电压供给的情况下输出电源给各模块进行使用。结构图如下图2.1所示:
  
图2.1 整体结构图

二、系统硬件的设计

3.1 主控芯片

3.1.1 芯片介绍

  STM32F103系列终端微控制器在现阶段使用十分广泛,这在于它低成本、工艺简单、处理方便、低功耗且高品质的优点,其适用范围强大到不仅仅在微机处理上被运用到,在日常生活中的电子设备类如游戏手柄,遥控器等都能运用到该芯片。说完STM32F103的优点,我们来了解下其基本结构。STM32F103拥有极其效率的代码运行速度,这得益于它的三十二位标准精简指令集的ARMv7-M体系结构。除此之外还拥有八和十六位不同数位系统转换的数据处理内核。在十分优越的FLASH处理器与SRAM下,一般情况最高工作频率不会低于72MHz。STM32F103内部优越的设置为其良好的数据处理打下了基础,而它外设部分拥有多个引脚,相当于有设置了很多的I\O口。这样内外兼优的处理器在事实情况下很适合引用于该系统中。

3.1.2 低功耗特点

  STM32F103所包含的众多模式中,低功耗模式是本系统中最为重点的一个部分,相当于空调的超节能模式,这是一个希望能随时带在身边利用的心率检测仪来说是十分必要的。低功耗模式下,也就是系统的睡眠模式下,能够随时唤醒CPU,但是其他非特殊情况下CPU始终在休眠状态,尽量最低限度的消耗能源。除了保留的一条用于唤醒的线,其他连接着包括SRAM、FIFO寄存器、回环整合信号、数字感知区域振荡器在内都处于休止中断中,直到在结束或者唤醒CPU后,整个系统会在最快的时间内进入运行状态。
   除此之外,STM32F103还有个休眠模式。在这个模式开启后,系统将进入超低耗能模式。不再像低功耗模式一样只是单纯的将组件控制在低功耗运行状态,在启动之后系统甚至会自动切断除了唤醒与CPU之外的其他线路的电源,真正的做到整机休眠。它的唤醒条件也是十分简单,只要中断唤醒启动,CPU就会被事件唤醒,但是这个启动时间相对较长。

3.1.3 主芯片电路设计

  原理图如下图3.1-1,上拉3.3V电源用于复位电路,按下按钮后,内部电路会自动复位。各电源接口和地线必须接上,给各个IO口供电。

图3.1 主芯片电路原理图

图3.2 主芯片电路PCB图

三、软件设计

4.1 主软件设计

  由于单片机的快速数据处理速度和易于编程的原因,单片机用于数据处理可以避免大量蓝牙数据传输。 MAX30100通过I2C通信进行读取。平衡光电数据转化,然后确定脉搏,在测量脉搏后,随时间计算心率。

4.2 MAX30100

  I2C接口的最大速度为400KHz。该项目中,使用的通信技术为I2C通信,因此采样速率比传输速率慢。由于存储器写操作是通过I2C执行的,所以需要保证主控制芯片的高速通信操作,并且不影响其他子例程。

四、 结论

  在系统设计方面前前后后总共构思设计了很长一段时间。为了设计并实现出心电图的动态显示,查询了很多相关资料文献,更加了解ECG波形与PPG信号相关的内容。如何在关于心率计算传感器的选择在MAX30102、MAX30100以及S等相关芯片上最后选择了MAX30100。它相对便宜,而且在单单测量心率的数据样本上,单体承载的最大样本采集率为0.1-1KHz,并且与其对的样本分辨率可以达到10-17Bit的ADC分辨率,已经是绰绰有余的了。在进行信号放大及其滤波的时候,滤掉直流波后所选择的BUTTERWORTH滤波器更是一个十分简易的滤波器,操作相对简单而且在其推导下,能更精确的计算出心率的值。包括在电路设计上和PCB排布上、代码设计并应用在系统上在都花了挺多的心思。
  在设计时由于自身的经验不足以及技术不够过关,无法在原设计的基础上加入APP显示以及危险提醒,这确实为该系统美中不足的一个地方。还有就是MAX30100的设置在手指检测上,当其固定不稳时,检测到的数据是除此之外,系统中对于信号处理部分并没有做到过于完美以至于会出现信号断崖式中断的状态。在检测过硬件保证其正常性下把该以原因定在软件系统设计的不完善上。言下之意,该系统的改进空间十分大,现阶段缺陷还是会有很多,包括其精密程度,稳定程度等都仍需要有所优化。在现阶段的智能医学发展来说,心率检测仪的发展前景十分巨大,未来的智能科技发展以及计算机技术研创也会使其发展到一个更新的高度。在检测心率的基础上,心率检测仪可以增加APP辅助,人们能在APP中得到自己选定时间段里的心率监测,同时得到专家的意见以及建议,不再只是单单的自己观察自己监控,变得更加智能。

目 录

1 绪论 1
1.1 关于心率检测仪的研究背景 1
1.2 心率检测仪的意义与目的 1
1.3 关于心率检测仪的发展历程 2
2 设计方案 3
2.1 总体设计思想 3
2.2 心率脉象图谱原理及实现 3
2.2.1 心电图 3
2.2.2 心率的算法 5
2.2.3 脉象图谱的分析方法的研究 5
2.2.4 脉图的判别方法 6
2.2.5光电容积脉搏波(PPG信号) 7
3 硬件电路设计分析 9
3.1 主控芯片 9
3.1.1 芯片介绍 9
3.1.2 低功耗特点 9
3.1.3 主芯片电路设计 9
3.2 MAX30100心率血氧模块 10
3.2.1 MAX30100简介 10
3.2.2 MAX30100传感器工作原理 11
3.2.3 MAX30100电路设计 11
3.3 OLED显示 12
3.4 蓝牙模块 13
4 软件部分设计分析 15
4.1 主软件设计 15
4.2 MAX30100 15
4.2.1 MAX30100运作流程 15
4.2.2 FIFO寄存器 22
4.3 OLED 23
总结 25
参 考 文 献 26
致谢 27

物联沃分享整理
物联沃-IOTWORD物联网 » 基于STM32的心率检测仪设计与实现详解

发表评论