基于STM32的心率检测仪设计与实现定稿_第1页
基于STM32的心率检测仪设计与实现定稿_第2页
基于STM32的心率检测仪设计与实现定稿_第3页
基于STM32的心率检测仪设计与实现定稿_第4页
基于STM32的心率检测仪设计与实现定稿_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于STM32的心率检测仪设计与实现Design and implementation of heart rate detector based on STM32内容摘要现代科学的发展,导致越来越多人开始重视自己的身体健康,他们往往会想在能力之余使用健身运动等方式来锻炼自身。你会发现,在健身房,健身达人或者是教练都会叮嘱新手去关注自己的心率节奏。一般来说,人的激烈的锻炼会造成心脏血压的上升,心率变化从而加剧。而心率恰恰就作为人们运动的警戒和灯塔,运动状态下,心率的平稳状态、是否处于正常范围内都是健身人士应该注意的地方,不管你健身的目的是为了什么,而这更多的是与自身体重、体制等的相关。与此同时,

2、心率的表现也能让人们能及时发现身体的异样。心率不定往往会造成。心脏、心血管等疾病。但往往是如此致命的病,检测其的方式就很简单。而心率检测的作用,就是作为一个实时监控并且在危急时刻能警报你的装置,由此可得出心率检测仪对人们的作用十分重要。在这个系统设计上,采用了以STM32芯片中的F103系列芯片来作为总处理终端,在通过BUTTERWORTH滤波等之后将放大的心率信号进行除杂、去噪,也相对的对电路进行了优化。数据显示方面将用到一块OLED屏幕将个人的动态心率进行纪律以及同步在屏幕中显示出来,其显示的内容将包括心率的单独显示已经更显而易见的图标模式。利用心跳脉搏波形的特点以及心电图的基础将平均心率

3、计算出来,从而展示出心率的“脉象图谱”。关键词:心率检测 STM32 动态光谱 脉象图谱Abstract For healthy, people often want to exercise themselves in ways such as fitness exercises in addition to their ability. Heart rate is exactly an indicator of exercise intensity, and its level directly affects the training effect of people, especiall

4、y those who want to lose fat. At the same time, the performance of the heart rate can also allow people to detect the abnormal body in time. Irregular heart rates often result. Heart, cardiovascular and other diseases. But often such a deadly disease, the way to detect it is simple. The heart rate m

5、onitor is a device that can monitor you in real time and alert you in an emergency, so you can see that the heart rate monitor is very important for people.The heart rate detector is designed with STM32F103 as the core control terminal and signal acquisition and detection system, combined with dual-

6、wavelength frequency division method and over sampler technology, which not only improves the signal resolution, improves the signal-to-noise ratio, but also greatly simplifies the circuit. Digital filtering and digital demodulation are used to separate the two - way signals. The data side will use

7、an OLED screen to discipline and synchronize an individuals dynamic heart rate, which will include a separate display of the heart rate in an already more visible icon mode. The average heart rate is calculated according to the characteristics of the pulse waveform and the basis of electrocardiogram

8、.Key words: Heart rate detection STM32 Dynamic spectrum Pulse condition map目 录1 绪论11.1 关于心率检测仪的研究背景11.2 心率检测仪的意义与目的11.3 关于心率检测仪的发展历程22 设计方案32.1 总体设计思想32.2 心率脉象图谱原理及实现32.2.1 心电图32.2.2 心率的算法52.2.3 脉象图谱的分析方法的研究52.2.4 脉图的判别方法62.2.5光电容积脉搏波(PPG信号)73 硬件电路设计分析93.1 主控芯片93.1.1 芯片介绍93.1.2 低功耗特点93.1.3 主芯片电路设计93

9、.2 MAX30100心率血氧模块103.2.1 MAX30100简介103.2.2 MAX30100传感器工作原理113.2.3 MAX30100电路设计113.3 OLED显示123.4 蓝牙模块134 软件部分设计分析154.1 主软件设计154.2 MAX30100154.2.1 MAX30100运作流程154.2.2 FIFO寄存器224.3 OLED23总结25参 考 文 献26致谢2727广东东软学院本科生毕业设计(论文)1 绪论1.1 关于心率检测仪的研究背景 在越来越智能化的现代社会中,智能医疗已经开始慢慢步入寻常人家。对于人们来说,在越来越追求生活品质的现在,身体健康的需求

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

11、时间内的动态心率,做到记录、监控数据以及健康提醒的作用。1.2 心率检测仪的意义与目的根据WTO给出的官方数据,心血管疾病在二零一八记录下来的全国患病率高达45%,与排名第二的肿瘤高出了10%左右。由我国给出的数据可以看到,每一千人就会有五个可能患有心血管疾病的人,而因这个而死亡的概率远超百分之四十。随着社会的发展一切都在变化,包括了人们的社交工作以及饮食方式,在这个情况下,如果我们不对此做出点什么改变,造成心血管疾病的原因只会逐渐增多。各种不健康的方式造成了心脏与循环系统的不健康,从而导致的心血管疾病已经开始对人类身体出示红灯警告,是健康的头号大敌。大量数据显示患病人数已经开始低龄化,越来多

12、的年轻心血管患者的出现也让人们开始紧张了起来。心血管疾病出现先兆是细质的、轻微的,但是患病造成的后果却是致命的。也许在人们不去在意的顷刻间就有可能因为心脏病等的急发症而倒下甚至于失去生命。这类疾病的存在是相对慢性发作的,也就是一个人在社会隐性存在为患者可能性相对性也比较高。这样算下来,包括已在老年阶段的大量已经患有其他慢性疾病的人群,已经可能患有心血管疾病的其他年龄段的人群,基数已经很大了。不仅仅是医疗物资的大量消耗,医药资源、医疗护理人员等都是需要被大量输出或者耗费培养的,会对社会医疗资源造成极大的负担。在这个问题基础上,智能医疗的发展将帮助到人们很多。不断的科学进步使得人们不在需要每时每刻

13、跑去医院检测或者是花太多的价钱去购买大仪器检测,比如专业的运动员已经健身专业选手们。而临床上广泛使用的 Holter(动态心电图机)成本高,不适合在家庭长期使用。心率的最基础检测方式是监控心跳脉搏的次数,根据一定的算法去算出心率的数值。在这个基础下,设计出满足适于家庭使用,拥有便捷性、实用性且简单的效果的心率检测仪就有着重要的意义。1.3 关于心率检测仪的发展历程心率检测仪的雏形可追溯到上个世纪初期,心电图的形成是因为一名老研究学者在鼓弄他仪器的电缆时偶然间触发的,在他悉心研究之后,最终全球第一幅完整的EGC图像诞生了。从此,心电路图像就开始被零零碎碎的一些医生运用在医科学中。直到在40年后E

14、CG才正式进入临床应用,也在步入20世纪中期我们在开始正式运用动态心电图,人们才开始在影视中了解到这个东西。而进入千禧年后,智能科技踏入社会,当一切都在智能科技的支配下,一切都变得更加便利。包括APPLE WATCH、小米智能手环在内的智能检测设备都配备了心率检测这一功能。相比起国外科技起步较早,相对成型的情况下,国内虽然在医疗便携设备这边方面起步较低但是仍有不少新研究的。在2008年后国内的发展就犹如火箭一般发展十分迅速。更加先进的科学学术的教导,更加科学的技术发展,更加新颖的物质开始研创,国内的的医学设备也在跟着更新换代。人们不难发现,在这个科技发展如此迅捷的时代下,包括医学设备在内,国内

15、外出现了更对相对更便携的设备。所有厂商发现,在现有的科学技术下,我们更加追求能够随时能用到的,能随时戴在身上的医学检测器,所以他们的研创目标换成了小。在这个前提下,完成低耗且美观易携带的目标就更加明确且相对容易实现了。直到现在,玲琅满目且各种形态的心率检测仪出现在公众视野,而这些恰好给关于心血管疾病的数据研究提供了量大且很好的参考。不过目前为止,国内的心率检测仪器做到比较好的厂家并不多,而且相对都是汲取外来创意的作品制作,研创发展的晋升空间空前巨大。在未来心率检测仪相关产品将会在智能规划使用、便携性美观设计以及人性化等方面进行发展,力求解决现阶段“求医难”的状况,并且使心率检测仪成为人们可以随

16、时随地都能使用到的产品。因此,心率检测仪在未来肯定会发展状况是可观持续的。2 系统总体设计2.1 总体设计思想该设计在基于STM32控制板外,另一个主要的板块就是做到如何去采集到心率数据的样本。关于MAX30100,其在简易心率检测仪中使用量非常的大,是一个优质的心率监测器传感器。MAX30100利用其本身含有的LED和光电检测端来检测信号的接收,以显示心率数据。其工作原理等会在后面讲到。另外,在该系统中STM32是主要微控制器和数据处理器;利用OLED屏实现动态心率的实时监控,即数据显示;利用蓝牙串口可以将数据输出显示。电源将设置一个3.5V-8V的电源,在选择合适电源电压供给的情况下输出电

17、源给各模块进行使用。结构图如下图2.1所示:图2.1 整体结构图2.2 心率脉象图谱原理及实现2.2.1 心电图心脏的跳动是有序,在医学学术上讲到的心电脉冲就是心电图的形成基本。当人体血液流动进入心脏时,血液的流向以及血压都会对心脏内壁造成压迫,从而使心脏肌肉形成了周期性的收缩与放松。而脉冲信号就是由于心脏肌肉收缩,并且在左右压差下传递产生的周期性的电信号。但是人体是一个导体,并且心脏脉冲也会血液中产生传播规律,而这就是脉搏的产生。从而说明了改脉冲信号,可以利用身体内任意一个电极去检测到,心电图(EKG或ECG)便是将这个原理进行的数据可观性的改变,即可视电信号。下图2.2显示的是心脉波形的截

18、断:图2.2 心电图心搏波形由上图可见的P波、T波、U波等。Q-R-S波在医学上会被统称为一个波群,即QRS波群。其中U波的存在就犹如空气中的氮气一般,正常心跳波频中U波的占比常常会达到50%以上、75%以下 。如图2.2中,T波与P波之间的波形缓冲通常被称作为等电势线,而这正好的心电图形成的基线。波形及其波动间期如表2-1。表2-1 心脉波形具体描述表2.2.2 心率的算法前面有说到,人的身体能够在全身进行检测到心脏传出的电信号。当我们需要接收心脏通过肌肉收缩和放松造成了的血液流通管道的搏动以及血浆压力的周期性变化时,可通过在身体某些部位放置一个电极来实现,比如我们可以在身体部位上增加一个传

19、感器,通过手指、手腕、胸腔等位置加一个压力传感器或者其他传感器,然后利用其他组件接收并且分析这个电信号。心率的计算方式也相对简单,在得到两个相邻峰的值之间的差值之后,需要进行心率换算。将每秒心率换算成每分钟心率,每分钟心跳的公式是:每分钟心跳= 心率间隔(s)*60这个算式的存在是相对理想的,在无其他信号的影响下,并且心率信号已经处理得相对圆滑。2.2.3 脉象图谱的分析方法的研究(1)时域分析法:主要是指在某时段将该一数据样本波形进行主观性的分析。在分析层面主要是弄清楚波型运动幅度的高度跟心率脉动的时相之间的相性关系。将会在波形的两个最值峰之间的差值、对应变量时间(t)、心率脉象图是收缩面积

20、以及其舒张期面积的不同等上收集到相关的资料进行分析比对。(2)频域分析法:该一用法通常用于计算机器材上,基本上将心率跳动波简化成段。这时,段与段是相关联但是却独立的。每段都利用算法将这一时段的波形进行倍数放大转换,从而形成一个a倍的简谐振动(a为整数)。在这一基础上再对形成的图像波形进行分析。(3)速率图分析法:言下之意,根据瞬时速率的计算方法,将脉象图分成许多的片段,即形成脉象速率图(脉象微分图)。在微分波形的状态下,我们能对其原本细微的变化进行相当于放大一样的观察分析。速率图告诉我们的是在细微情况下的每个部分的脉象状况,但是却不能够整体观察,大多数下用于二次分析。(4)模糊识别法:例如电路

21、突然接触不良等非常短的一段时间内或者是稳定区间内丢失的一部分数据造成的图像不连贯,我们称之为不清晰的图像,可以利用这个方法进行查漏补缺。利用数据类比重新定义心脉波形并代替其形成完成的脉图。但这个方法无法客观的完成分析,而且没有办法监测到严重不同的数据,也可能直接过滤掉正确信息。(5)时差图的识别:跟模糊识别法有点点相似之处,时差图的方式在更加科学的进行推到及查漏补缺,同时做到预测的作用。心脉的周期性电信号转播就是其成立的根本。除此之外还有自回归滑动平均模型法、计算机分析法、综合性脉象图谱分析法等方法,综合性脉象图谱分析法适用性较高并且相对科学严谨,需要的参考数据很多,但通常情况下使用最多的还是

22、时域分析法,而这个会更贴近心脉图的自然生成。2.2.4 脉图的判别方法脉图的判读方法有多种。每个时间段内都指代了不一样的内容,比如在一个心脉跳动周期t内,将波形的不同形态分为t1、t2、ts等。心脏整个收缩放松的时期分为4个部分, t4心脏处于收缩阶段,而t5则处于放松阶段。在心脏内室血液流入动脉时,我们用t1来表示,这段时间脉图沿y轴快速上升,直到最高峰,这段波幅被称之为主波幅;这时心脏跳出射血期,血管压强降低,波形沿y轴开始缓慢下降,到达途中W点处时,正好是距离整个波幅2/3的高度。随后由于少量血液倒流造成的其他波幅类似于h3都是比较重要的波幅凸起。在心脏还是处于舒张期时,也就t5阶段,会

23、在两个阶段中间形成一个落差低估,也就是图中的h4。随后缓慢的波形凸起与降中峡高度只差则被称之为重拨。另外,整个t4时期的面积在图中用As表示了,t5时期则用Ad表示。图2.3 脉图分析的主要参数图2.4 脉搏波形说明2.2.5光电容积脉搏波(PPG信号)PPG信号的生成与人的皮外组织的部分不可被吸收光线有关,这部分光线在日常状态下都是在皮肤上造成漫反射自然流失。该信号的的显示就跟心电图波形相似,由各种信号波形组成。我们从下图的信号采集图中可以观察到,电信号的穿透有交直流周期交替显示,随着时间的流逝,这个周期性的电信号被相关接收器接收了之后会形成的连续信号便是我们称为的PPG信号。当中的交流信号

24、部分就是我们日常能感受到的心跳信号,能清晰的看到一高一低的峰值。 图2.5 PPG信号采集示意图关于PPG信号波形的相关描述:(1)上升支:心脏的跳动的过程一般是先高压收缩心脏腔部分的肌肉,在这种情况下一般是心脏在往外输送或者导入血液,然后再释放压力,放松心腔的肌肉。PPG信号的谐波上升部分,经过一些计算能够看出心脏每周期送出血浆的容量等信息。(2)下降支:下降支的出现一般在心脏跳动的后半段,也就是上文说到的心脏腔肌肉放松。在这段时间内血管内部压强降低是,血液输出减少,输送进来的血液是因为压强差的原因进入心房。由于压强的原因,心瓣在关闭的瞬间还是会有小部分不要紧的血液倒流发生,而图中的下降支部

25、分出现的小段曲线平缓后再急剧下降就是由这个造成的。而下降支能看出心压是否处于正常区间。图2.5 PPG信号三个周期波形图3 硬件电路设计3.1 主控芯片3.1.1 芯片介绍STM32F103系列终端微控制器在现阶段使用十分广泛,这在于它低成本、工艺简单、处理方便、低功耗且高品质的优点,其适用范围强大到不仅仅在微机处理上被运用到,在日常生活中的电子设备类如游戏手柄,遥控器等都能运用到该芯片。说完STM32F103的优点,我们来了解下其基本结构。STM32F103拥有极其效率的代码运行速度,这得益于它的三十二位标准精简指令集的ARMv7-M体系结构。除此之外还拥有八和十六位不同数位系统转换的数据处

26、理内核。在十分优越的FLASH处理器与SRAM下,一般情况最高工作频率不会低于72MHz。STM32F103内部优越的设置为其良好的数据处理打下了基础,而它外设部分拥有多个引脚,相当于有设置了很多的IO口。这样内外兼优的处理器在事实情况下很适合引用于该系统中。3.1.2 低功耗特点STM32F103所包含的众多模式中,低功耗模式是本系统中最为重点的一个部分,相当于空调的超节能模式,这是一个希望能随时带在身边利用的心率检测仪来说是十分必要的。低功耗模式下,也就是系统的睡眠模式下,能够随时唤醒CPU,但是其他非特殊情况下CPU始终在休眠状态,尽量最低限度的消耗能源。除了保留的一条用于唤醒的线,其他

27、连接着包括SRAM、FIFO寄存器、回环整合信号、数字感知区域振荡器在内都处于休止中断中,直到在结束或者唤醒CPU后,整个系统会在最快的时间内进入运行状态。除此之外,STM32F103还有个休眠模式。在这个模式开启后,系统将进入超低耗能模式。不再像低功耗模式一样只是单纯的将组件控制在低功耗运行状态,在启动之后系统甚至会自动切断除了唤醒与CPU之外的其他线路的电源,真正的做到整机休眠。它的唤醒条件也是十分简单,只要中断唤醒启动,CPU就会被事件唤醒,但是这个启动时间相对较长。3.1.3 主芯片电路设计原理图如下图3.1-1,上拉3.3V电源用于复位电路,按下按钮后,内部电路会自动复位。各电源接口

28、和地线必须接上,给各个IO口供电。图3.1 主芯片电路原理图图3.2 主芯片电路PCB图3.2 MAX30100心率血氧模块3.2.1 MAX30100简介MAX30100是一个经过多重优化的优秀传感器,能测量心率等多样信息。在结构上,MAX30100包含了检测模块和数据处理模块,检测模块下拥有LED、数据接收器等部分,数据处理部分主要包含了寄存器、数据传输等。在该系统中,便利用了MAX30100对样本进行心率检测并进行数据处理。给MAX30100提供的工作电压根据其工作书显示应为1.8V和3.3V,并可以通过软设备对其进行供电,待机电流可以忽略不计。这种情况下,能允许电源始终保持连接状态。其

29、优点在于:(1)更加简洁的设计(2)光学尺寸为5.6mm x 2.8mm x 1.2mm的微小14针增强型系统级包装,光感传输MAX。(3)超低功耗的LED电流省电以及超低关断电流(典型值0.7A),可延长电池寿命,可用于穿戴设备上。(4)高SNR可敏锐的捕捉动态心率运动成像,采样效率高,数据输出能力强。3.2.2 MAX30100传感器工作原理使用这个传感器的方式很简单,手指接触传感器表面的玻璃层,不能被吸收的红外线部分光会传达到接受处,从而对样本的心率数据进行计算。心率的信息在这个过程中从电信号转换为光信号,又经过MAX30100转换成电信号,从而将数据信息做成已采集样本储存起来。图3.3

30、 MAX30100工作原理图3.2.3 MAX30100电路设计MAX30100的硬件电路没有集成与主控芯片和蓝牙电路,只是驱动这个传感器MAX30100的外接电路,他是由两个电源部分,一个是3.3V给MAX30100的LED电路供电。另外一个是1.8V给MAX30100自己供电。根据规格设计SCL、SDA、INT这三个引脚都有上拉电阻,电路是每个电源脚都有滤波电容,以滤除高频干扰。如下图所示:图3.4 MAX30100电路原理图图3.5 MAX30100开发板3.3 OLED显示与传统的屏幕显示技术是需要用到TFT背光玻璃板才能运行不一样,OLED屏幕显示的原理是利用了有机电激光显示。它的显

31、示是利用一块涂抹有有机涂料的玻璃片,利用电流流过形成的感应造成类似于LED一样的发光显示。这个基础上不会像传统显示屏一样笨重,在工艺上做到更小、更省、更好。在另一个角度上来理解,就相当于省下了更多的资源。OLED被广泛的运用在有屏电子产品中,它的轻便性、可视性以及低成本低耗的高品质是LCD所不能媲美的。图3.6 OLED连接图在4线SPI的读写模式下,设定的样本值都是 8 位,长度是因为内部寄存而定的。数据的传输一般是先高后低的,在SCLK的上升沿,按照一定的速率从SDIN移至内部特定的芯片SSD1306。 DC线为该芯片设置的数据的标志线,同时也分配给命令单元作为标志线使用。写操作的时序如图

32、3.7所示:图3.7 OLED的写入时序数据的读写分别由WR和RD信号接收,在写状态下,WR线将控制数据的写入,这个情况下RD将自动设置为1。(1)DC: 高电平状态,写入数据;低电平状态与之相反(2)CS:用于显示屏的初始化,先1后0 (3)WR:在WR线处于稳定高电平前将样本数值写入OLED屏内部的微型控制器内3.4 蓝牙模块HC-05蓝牙模块有适用性强,数据传输性能较好的特点。一般的厂商在其低价且易融入板子的情况下会大量应用该模块。在在本系统中,蓝牙可以通过串口从而在电脑上进行简易的数据显示。蓝牙连接图如3.8。3.8 蓝牙模块连接原理图4 软件系统设计4.1 主软件设计由于单片机的快速

33、数据处理速度和易于编程的原因,单片机用于数据处理可以避免大量蓝牙数据传输。 MAX30100通过I2C通信进行读取。平衡光电数据转化,然后确定脉搏,在测量脉搏后,随时间计算心率。4.2 MAX30100I2C接口的最大速度为400KHz。该项目中,使用的通信技术为I2C通信,因此采样速率比传输速率慢。由于存储器写操作是通过I2C执行的,所以需要保证主控制芯片的高速通信操作,并且不影响其他子例程。4.2.1 MAX30100运作流程在该传感器模块处于SpO2的模式下,会开启心率记录与调取的功能。遮罩HR_ RDY。利用LED发出的光信号在手指上收集转化完成的PPG信号波形,完成采样。在此模式下中

34、断将会在收集完每个数据样本之后在触发,即当FIFO仅剩一个空白空间时,产生中断。心率样本包括仅一个IR数据点。当读取FIFO数据寄存器时,终端HR_RDY位自动清零。新样本存储在新的读取指针位置,实际上,它是现在是FIFO中的第一个样本。图4.1 心率模式下的数据采集和通讯时序MAX30100的I2C地址:0x57,数据存储在FIFO缓冲区中。它最多可以存储16个测量值,每个样本的大小为4个字节。前两个字节用于IR测量,后两个字节用于RED测量。由于FIFO指向相同的地址,因此用I2C无法读取FIFO缓冲区。您必须完成事务以使FIFO输出地址包含下一个值。MAX30100内置50/60Hz滤波

35、器,在只需要检测脉冲心率信号的情况下,则只需红外线,也就是启用RED LED就可以了。由于采样率和脉冲宽度直接相互关联,我们可以通过更改LED的采样率和脉冲宽度,更改ADC分辨率。图4.2心率信号的采样率与脉冲宽度配置图4.2.1.1 关于MAX30100的初始化要开始从MAX30100读取数据,只需要做两件事:一是设置模式,也就是为其开启心率模式。二是设置红外灯的电流。所以我们需要将其初始化,包括设置中断使能以及模式的选择。(1)中断使能:首先初始化的寄存器是中断口輸出使能INT,当触发中断后可设定是否输出到IO口,触发中断有温度触发、心率测量、血氧数据收集完成这几个使能中断的寄存器,读取中

36、断寄存器后中断复位。(2)模式选择:MAX30100包含了血氧心率等的模式,在该设计下直接选择了心率模式。在运行的状态下,可以转换成低耗模式,该模式开启后将直接进入节能模式。该模式适用于各种设计上。复位重置就是初始化上电状态,重启配置寄存器4.2.1.2 数据读取流程数据读取基本是靠中断引脚触发主控芯片中断,触发中断后由主控芯片进行读取MAX30100的中断寄存器,从而判断是由哪个触发。例如温度中断就读取温度值,过一段时间再发送采集温度指令然后过一段时间产生中断,这样重复进行。血氧不用发送指令,当FIFO数据快满了后就会发出中断提醒单片机读取,进入待机和省电模式将会关闭这些功能。数据读取流程图

37、如图4.3。图4.3 数据读取中断4.2.1.3 红外线数据读取及数字滤波设法将MAX30100设置为HR模式并读取原始IR数据后,绘制完成后,其外观应如图4.4所示:图4.4原始IR数据,可见振荡为了正确读取心律,我们需要去除DC信号,仅保留AC部分。可以使用以下两个方程式完成:w(t)=x(t)+w(t1)y(t)=w(t)w(t1)y(t):是滤波器的输出x(t):当前输入/值w(t):中间值,类似于直流值的历史记录:是滤波器的响应常数如果= 1,则一切都通过,如果= 0,那么没有任何直流去除通过。这样看来的理想值应当相当接近1,所以我假设将= 0.95。struct fifo_t ui

38、nt16_t rawIR; uint16_t rawRed;dcFilter_t MAX30100:dcRemoval(float x, float prev_w, float alpha) dcFilter_t filtered; filtered.w = x + alpha * prev_w; filtered.result = filtered.w - prev_w; return filtered;一旦使信号通过直流去除滤波器,我们将获得类似于图4.5中的信号:图4.5 红外信号通过直流去除滤波器正如图4.5中看到的那样,我们现在只剩下信号的AC部分,它在0DC值而不是50 000左右

39、振荡。为了进一步提高检测脉冲的能力,我们必须对信号进行差分处理。我们的脉冲是数据中突然出现最大变化的位置。但是,我决定实现均值中值滤波器,而不是仅仅采用差值来进一步清除信号。顾名思义,这将使我们的平均值产生变化。struct meanDiffFilter_t float valuesMEAN_FILTER_SIZE; byte index; float sum; byte count;float MAX30100:meanDiff(float M, meanDiffFilter_t* filterValues) float avg = 0; filterValues-sum -= filter

40、Values-valuesfilterValues-index; filterValues-valuesfilterValues-index = M; filterValues-sum += filterValues-valuesfilterValues-index; filterValues-index+; filterValues-index = filterValues-index % MEAN_FILTER_SIZE; if(filterValues-count count+; avg = filterValues-sum / filterValues-count; return av

41、g - M;将经过直流滤波的信号通过均值差滤波器后,我们得到了熟悉的信号,可以重新组装心电图(见图4.6)。图4.6 均值差滤波后的IR信号如果仔细观察波形,数据中会有一些更高层次的和谐。它们在信号的底部尤为明显。如果将信号通过低通滤波器或带通滤波器,则可以轻松过滤掉它们。为了消除更高级别的谐波,我将在低通滤波器配置中使用Butterworth滤波器。从技术上讲,它是一个带通滤波器。而且,任何低通滤波器都可以与Butterworth一起工作相对容易。要实现此滤波器,必须建立两个变量:采样率(F S)和截止频率(F C)。MAX30100可用的最快采样率是1kHz,为了方便推断,最后选择配置采样

42、率仅为100Hz的长脉冲宽度,因此,可以直接固定出我们的采样率为100Hz。接下来,我们需要选择截止频率。据资料显示,220 BPM是危险的高心率,但在某些情况下仍然可以实现。因此,我选择将其作为截至频率。计算通过的最快频率:F=220BPM/60=3.66Hz假设要测量低至50 BPM,则:F= 50 BMP/60= 0.83 Hz巴特沃斯滤波器工作需要归一化频率上:Rn= Fc/Fs因此,如果您的采样率不是100Hz,则Butterworth滤波器将开始截止不同的频率。考虑到我们的F S = 100Hz和F C = 10Hz,我们得到了Butterworth滤波器的以下代码:struct

43、butterworthFilter_t float v2; float result;void MAX30100:lowPassButterworthFilter( float x, butterworthFilter_t * filterResult ) filterResult-v0 = filterResult-v1; /Fs = 100Hz and Fc = 10Hz filterResult-v1 = (2.452372752527856026e-1 * x) + (0.50952544949442879485 * filterResult-v0); filterResult-res

44、ult = filterResult-v0 + filterResult-v1;一旦传递了心电图观察信号,我们就会得到更加平滑的信号。图4.7 Fs = 100Hz和Fc = 10Hz的巴特沃斯滤波信号。实际采样率Fs = 75Hz,即Fc = 7.5Hz这就是我们红外输出所要做的全部。在多次滤波过后能清楚的显示出干净的脉象显示图,在这基础上,我们就能用最基础的心率计算方式将需要的数据计算出来了。4.2.2 FIFO寄存器该缓存器的方式进行储存读取,即先写入的数据在被读时也会先被读,但FIFO寄储器与一般的先入先出寄存器又有所不同,其拥有双口缓冲器,能实现数据双端同时进行。FIFO寄存器并没有

45、外部读写地址线,这样使该FIFO寄存器的使用性有所提高了,但便利性缺降低了。例如它只能顺序写入数据和顺序读出数据,内部读写数据地址将按设定主动加1进行,无法利用地址线自由的决定读写数据地址或者指定地址,自由程度大大降低了。但FIFO的独特性令许多厂商在设计系统的时候将其应用上了。例如用于加快数据传输速率、用于处理量大且多的数据,用于匹配传输速率不一样的系统,这样就在低成本的情况下提高了系统的性能。该单片寄存器的导向结构有触发导向结构和零导向传输结构两种,这两种不同在于前者主体数据构造是利用了寄存器的数据陈列,而后者则是利用了双口RAM,其功能是载有读写地址指针。由FIFO的主体特征我们可以得出

46、,当我们测试出数据样本之后,可以利用FIFO寄存器,利用代码去更改与读寄存器,从而去储存与读取数据,并通过访问将指针写入。FIFO寄存器可以通过I2C接口联通外部微控制器,从而可以进行数据通信,这样就可以在写入数据样本的同时将该调出的数据读出并通过计算方式传输信息进行显示。当我们将系统处于休眠模式时,该寄存器将进入从机模式。在处于该模式下的寄存器不能进行主动通信。但是系统是不可能处于长期非休眠状态的,在为了解决在该模式下芯片无法进行事件通知,需要在设计时加入了一个中断引脚,即当FIFO处于从机模式的情况下将管脚降到低电平。但是这个引脚的电源是需要一个上拉电阻来提供是。在选择该上拉电阻时,考虑到

47、整体寄存器芯片的较低速运转即低耗能低电流的特性,加上该上拉电阻还要起到一个保护电路的作用,则将该电阻定为4.5K欧以上为更好的。在这个设计下,当外部微控制器接受到中断请求之后会通过该中断引脚进行中断,然后在微控制器读取中断处理器后将会得到是什么中断的设置。在进行特殊地址指针读取设置之后,内部读数地址将不会自动加1,这种情况下我们需要自己设置一下下一个地址。一般来说,FIFO每次读取的数据有四个,分别是红光高低位和红外高低位,处理心率的情况下只读取红外的两位就可以了。这时读取出来的ADC数据位置会有所出入,因此我们需要将读取得到的数据样本根据自身系统的分辨率进行数据位调整,如图4.8。图4.8 样品读取和ADC数据排列4.3 OLED以简易方便为原则的前提下,满足尽量小但是清晰的情况所以选择了分辨率为128x64的OLED屏幕,其中包含液晶屏的部分占有总组件的86%,有0.96寸的大小。OLED的驱动IC是具有内部升压功能的芯片SS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论