基于单片机的脉搏检测系统设计

项目来源

1.1研究背景与意义

1.1.1研究背景

电子脉搏计是一种利用现代电子技术监测和记录人体脉搏波动的医疗设备。随着社会的发展和科技的进步,人们对健康的关注度逐渐提高,对医疗健康监测技术的需求也随之增加。

随着全球人口老龄化趋势的加剧,老年人健康问题成为社会关注的焦点。心血管疾病在老年人群中普遍存在,而脉搏作为心血管健康的重要指标,其监测对于预防和治疗心血管疾病具有重要意义。

在许多地区,特别是偏远地区,医疗资源相对匮乏,居民获取专业医疗服务的机会有限。因此,便携式、易于使用的电子脉搏计可以帮助这些地区的居民进行日常的健康监测,及时发现异常情况。

随着信息技术的快速发展,数字医疗和远程医疗逐渐兴起,对医疗设备提出了更高的要求。电子脉搏计可以与智能手机或云平台等进行连接,实现数据的远程传输和分析,为远程医疗提供支持。

1.1.2研究意义

通过日常监测脉搏波动,电子脉搏计有助于及时发现心律失常、脉搏异常等心血管疾病的早期信号,从而提高早期诊断率,为后续的治疗提供依据。

电子脉搏计的普及有助于提高公众的健康意识,鼓励人们积极参与到个人健康管理中来。通过定期监测脉搏数据,个人可以更好地了解自己的健康状况,采取相应的健康行为和生活方式调整。

结合移动互联网和大数据技术,电子脉搏计可以实现数据的实时上传和远程监控,为居住在偏远地区或行动不便的患者提供连续的健康监测服务,缓解医疗资源分布不均的问题。

1.2国内外发展现状

电子脉搏计的研究和开发是医疗技术领域的一个重要分支,涉及生物医学工程、电子信息技术、材料科学等多个学科。近年来,随着科技的进步和人们健康意识的提升,电子脉搏计在国内外的研究和应用都取得了显著进展。

1.2.1国际研究现状

在国际上,电子脉搏计的研究主要集中在传感器技术、信号处理算法、无线通信技术以及穿戴式设备的设计与优化等方面。

1、传感器技术:国际上许多研究机构和企业都在不断探索更高灵敏度、更小尺寸的脉搏波传感器。例如,光电容积脉搏波(PPG)传感器因其非侵入性、便携性等优点被广泛应用于电子脉搏计中。研究者们通过改进传感器的结构和材料,提高了其对微弱脉搏波信号的检测能力和稳定性。

2、信号处理算法:为了从复杂的生理信号中准确提取脉搏波特征,国际上的研究者开发了一系列复杂的信号处理算法。这些算法包括噪声抑制、基线漂移校正、特征点检测等,极大地提高了电子脉搏计的准确性和可靠性。

3、无线通信技术:随着物联网(IoT)技术的发展,将电子脉搏计与智能手机、云平台等进行无线连接,实现数据的远程监测和分析成为可能。研究者们利用蓝牙、Wi-Fi等无线通信技术,使电子脉搏计更加便捷和实用。

4、穿戴式设备的设计与优化:为了提高用户的佩戴舒适度和便利性,国际上的研究团队致力于开发轻便、时尚、多功能的穿戴式电子脉搏计。这些设备不仅能够监测脉搏波,还能够集成其他健康监测功能,如血氧饱和度监测、脉搏监测等。

1.2.2国内研究现状

在中国,随着国家对医疗健康产业的重视和科技创新能力的提升,电子脉搏计的研究与开发也取得了长足的进步。

1、政策支持: 中国政府发布了一系列政策和规划,鼓励医疗健康领域的科技创新,为电子脉搏计等医疗设备的研发提供了良好的政策环境。

2、技术进步: 国内研究机构和企业在传感器技术、信号处理算法、无线通信技术等方面取得了显著成果。特别是在穿戴式设备的设计上,国内的一些产品已经能够与国际品牌竞争,满足消费者对于健康监测设备的多样化需求。

3、市场应用: 中国拥有庞大的潜在用户群体,电子脉搏计等健康监测设备的市场需求巨大。国内外企业纷纷布局中国市场,推出适合中国消费者的产品和服务。

4、跨界合作: 国内的电子脉搏计研发不仅得到了医学、电子工程等领域专家的支持,还与互联网、大数据公司等进行跨界合作,探索新的医疗健康服务模式。

总体而言,无论是在国际还是国内,电子脉搏计的研究和应用都呈现出蓬勃发展的态势。未来,随着技术的不断进步和健康意识的进一步提升,电子脉搏计将在个人健康管理、远程医疗服务等领域发挥更加重要的作用。

2相关技术研究

2.1使用光传感器的脉搏检测技术

光传感电子脉搏计是一种利用光学原理来测量脉搏和脉搏的设备,它通过检测血液流动引起的光信号变化来实现非侵入式的生理参数监测。这种技术主要基于光电容积脉搏波描记术(Photoplethysmography, PPG),是近年来健康监测领域内广泛应用的一项技术。接下来,我们将从技术原理和优势两个方面对光传感电子脉搏计进行详细叙述。

2.1.1技术原理

光电容积脉搏波描记术(PPG)原理:PPG技术是基于血液对光的吸收特性。当光源照射到皮肤上时,部分光会被皮肤、组织和血管吸收,部分光会反射回来。由于血红蛋白对光的吸收与其浓度相关,而血红蛋白的浓度随心脏跳动周期性变化,因此,通过分析反射或透过皮肤的光的强度变化,就可以监测到脉搏波动,进而计算出脉搏。

光源与探测器:光传感电子脉搏计通常包含一个或多个光源(如LED灯)和至少一个光电探测器。光源发出的光穿透皮肤并被血管中的血液部分吸收,未被吸收的光被探测器捕获。探测器将捕获的光信号转换为电信号,这些电信号随着血液量的周期性变化而变化。

信号处理:电信号经过放大、滤波等处理后,通过算法分析脉搏波形,从而得到脉搏等重要的生理参数。

2.1.2技术优势

非侵入性:光传感电子脉搏计采用非接触式或微接触式测量,无需穿刺或其他侵入性操作,减少了感染风险,提高了使用的舒适度。

连续监测:该技术可以实现连续监测脉搏和脉搏波形,对于需要长时间监测心脏状况的患者尤为重要。

便携性:光传感电子脉搏计通常体积小巧,便于携带,用户可以在日常生活中轻松使用,适合家庭健康管理和运动健身等场景。

易于操作:使用简单,用户只需将设备置于测量位置,如手指、耳垂或腕部等,即可自动完成测量。

成本效益:与其他一些医疗监测设备相比,光传感电子脉搏计成本较低,易于普及。

多功能性:除了测量脉搏和脉搏波形外,通过不同波长的光源和先进的算法,还可以测量血氧饱和度等其他重要生理参数。

光传感电子脉搏计以其非侵入性、连续监测、便携性、易于操作、成本效益和多功能性等优势,在健康监测领域展现出广泛的应用前景。随着技术的不断进步和创新,未来其测量精度和功能将进一步提升,为人们的健康管理提供更加强大的工具。

2.2显示技术研究

OLED(有机发光二极管)技术是一种先进的显示技术,它利用有机材料自身的发光特性来产生图像。OLED屏幕由多层有机材料构成,这些材料夹在两个导电层之间,整个结构再被封装在一个玻璃或塑料的基板上。当电流通过这些有机材料时,它们会发出光线,从而产生图像。OLED显示技术与传统的液晶显示(LCD)技术有着本质的区别,主要体现在以下几个方面:

2.2.1OLED的工作原理

自发光原理:OLED屏幕的每个像素都是由能够自发光的有机材料组成,这意味着它们不需要背光源。当电流通过这些有机材料时,它们会直接发光。

简化的屏幕结构:由于OLED像素自身就能发光,因此OLED屏幕不需要LCD屏幕中的背光层和多个滤光层,这使得OLED屏幕可以做得更薄。

材料和制造过程:OLED屏幕使用的有机材料可以通过蒸镀等方式在基板上制造,这种方法相对简单,有助于生产柔性屏幕。

2.2.2OLED的优势

卓越的图像质量:由于OLED屏幕的每个像素都能独立发光或关闭,因此它们可以提供真正的黑色和无限对比度,使得颜色更加鲜艳且对比度更高。

更快的响应速度:OLED屏幕的响应时间非常快,可以达到微秒级别,这比传统LCD屏幕快得多,几乎没有拖影现象,非常适合动态图像的展示。

更广的视角:OLED屏幕的观看角度几乎达到180度,即使从侧面观看,图像的颜色和亮度变化也非常小。

更轻薄的设计:由于OLED不需要背光源,因此可以制造出更轻薄的设备,这对于便携式电子产品尤其重要。

柔性显示的可能性:OLED技术可以应用于柔性基板上,使得可弯曲或可折叠的显示屏成为可能,为新型设备设计提供了更多的灵活性。

节能环保:OLED屏幕在显示黑色时可以关闭相应的像素,从而降低能耗。相比于需要持续背光的LCD屏幕,OLED在某些情况下可以更加节能。

尽管OLED技术具有许多优点,但它也面临着一些挑战,例如成本较高、寿命问题(特别是蓝光OLED)、以及可能出现的烧屏现象。然而,随着技术的不断进步和优化,这些问题正在逐步得到解决。OLED技术因其卓越的显示性能和灵活性,正逐渐成为高端显示市场的首选技术。

3系统硬件设计与实现

3.1总体设计

本系统采用STM32单片机结合MAX30102脉搏测量模块通过OLED屏幕进行显示,其框架图如图3- 1系统框架图所示。

3.2硬件选择

3.2.1单片机的选型

按照设计需要,可以选择的单片机很多,比如51、MSP430、PIC、STM32等常见的单片机系列都可以满足需要。综合考虑功能、性价比、开发速度等因素,本设计采用STM32家族应用广泛、价格低廉对功耗要求不高的的F1系列单片机。

ST(STMicroelectronics )又名意法半导体算是乘着ARM架构单片机的东风发展的最好的单片机品牌之一,现如今已发展出完整的ARM架构单片机的生态系统,有上千款不同针对性的单片机产品。其最早面世,也是最具性价比的F1系列在激烈的单片机市场上有重要的地位。STM32 F1是ARM Cortex-M3架构的单片机,因为面世早、性价比高在M3内核的市场上占有率很高。导致业界巨擘的Ti公司直接砍掉自己的M3单片机系列,改了名字开始推广M4系列。选择STM32 F1系列的一个重要原因是性价比,STM32F103C8T6的批量采购价格8元左右,比51也贵不了几块钱。从ARM架构的单片机面世以来,因为ARM架构单片机的复杂性,厂家不仅仅提供寄存器手册供编程参考,一般都会提供易用的底层外设的驱动库。ST的官方外设驱动库做的比较完善,稳定性也有保证。所以本次设计采用STM32F103C8T6单片机,硬件资源包括:

  1. 最高72MHz ARM Cortex-M3 内部包含单周期乘法器、除法器;
  2. 20K SRAM 64K Flash;
  3. 供电范围3.6~2.0V;
  4. 支持4M~16M外部时钟源,支持外部晶振,内部PLL时钟;
  5. 2个12位ADC,多达16个输入通道,1us转换时间;
  6. 51个高速IO口,所有I/O口可以映像到16个外部中断;几乎所有端口均可容忍5V信号;
  7. 3个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM或脉冲计数的通道和增量编码器输入;
  8. 多达2个SPI接口(18M位/秒);

    3.2.2传感器的选型

    在设计装置之前,首先在网上学习了关于血氧饱和度测量的原理和实现方法。其中,Ti的一个使用自带OpAmp的MSP430FG437的应用案例提供了理论与电路设计的参考。该方案采用监护仪使用的透射式指夹传感器获取信号,信号采集、控制原理如图3- 3MSP430FG437的应用案例所示。

    图3- 3MSP430FG437的应用案例

    通过这张图大概了解了通过光电信号测量血氧饱和度的信号获取和处理过程。大致分为:RED&IR LED控制、光电二极管信号的跨导放大,参考电压反馈调节、信号滤波等部分。按照上面的框图实现系统还是有一定难度的,需要对单片机有充分的了解才能实现LED亮度补偿、放大电路参考电压反馈调节、数字滤波以及血氧饱和度计算。

    同上TI的设计范例了解了光电测量血氧饱和度的大致原理和方法,开始设计毕设要求的反射式血氧饱和度测量装置。反射式血氧饱和度和脉搏测量是最近几年智能穿戴的热点技术,广泛应用于智能手环、智能手表、运动耳机等可穿戴设备。智能设备使用的传感器也已经发展了好几代了,从最早的脉搏测量都不准确的手环发展到最近已经可以测量血压的高精度传感器,反射式光学传感器性能有了很大的提高。为了更好的做出毕设要求的装置,本人决定放弃从LED、光电二极管开始搭建电路,选用成熟可靠的传感器方案。

    目前,反射式测量血氧饱和度方案市场上分两种:“光电元件+模拟前端”和“集成化的模块”。第一种方案,TI有对应的参考设计,Ti的AFE440X系列可以配合各种光电传感器实现光信号到数字信号的转换。遗憾的是很据Ti技术论坛上专家的说法,这种方案下利用简单搭建的电路很难有稳定的信号,需要专门设计光学玻璃罩保持皮肤与传感器的距离。而且这种方案成本较高,设计案例中的传感器样品需要60元,AFE440X系列中较为便宜的AFE4403也要20元左右。另一种采用集成化的模块具有体积小集成度高、成本低的优势,在消费产品中很常见。Avago和Maxim还有其他厂家都有多种成熟产品,Avago的APDS-90xx方案应用于小米手环感光版,体验了小米手环之后个人体验不是很好脉搏测量比较慢而且不准确。我反而在朋友送的一个山寨手环上体验到了目前见到做的最好的脉搏、血氧饱和度、血压测量体验。没有实际拆开这个手环,根据外形可以判断该手环使用的传感器最像MAX3010x。搜索了MAX3010x的相关信息,有两款产品可以使用分别是MAX30102和MAX30101,这两款芯片pin-to-pin兼容,自带玻璃保护。其中MAX30101自带IR、REG、GREEN三种LED,MAX30102只有IR和RED。理论上绿光更适合手腕处的脉搏测量,但是本设计重点是测量血氧饱和度,而且Maxim官方对MAX30102的支持更丰富,所以选用了这款芯片。

  9. MAX30102是一款集成保护玻璃、红光LED、红外LED、LED驱动、光电二极管、18bit ADC、环境光消除、简单数字滤波的一体式模块。其中的环境光消除比较有意思,是类似传感器广泛采用的技术。原理是在LED熄灭后的相邻周期保持LED关闭,测量此时光电二极管读数用这个测量值矫正之前LED发光时的环境光干扰。传感器采用IIC接口输出数字化的信号,可以方便的连接各种单片机。

    MAX30102需要两种外部电源,3.1~5.25V的LED驱动电源和1.7~2.0V的内部逻辑电源。模块输入5V通过两个LDO芯片分别产生1.8V和3.3V电源。与官方模块不同,这个模块没有添加3.3V到1.8V的电平匹配芯片,IIC接口采用的是OD(开路漏极)设计,MAX30102的IO上拉到1.8V,根据手册MAX30102的IO可以承受6V电压。STM32的IO采用内部上拉的方式驱动IO,在MAX30102的IO上可以测到3.3V电压,上拉电阻的一端是3.3V电压另一端是1.8V电压,在上拉电阻上保持了1.5V的压差,通过计算电阻产生0.32mA电流,1.8V的LDO输出脚承受了1mA的反向电流,保持了两个不同电压IO的高电平逻辑电压。LDO的芯片手册没有写出可以承受的反向电流极限,但是从电路工作依然正常的现象来看,LDO可以接受1mA的反相电流。这样做虽然不是最佳设计,但是简化了接口匹配,至少可以在测试阶段使用。

    另外,对于一个传感器需要贴在皮肤表面的模块来说,其他元件与传感器放在同一面的设计,只能说为了降低贴片成本。

    由于MAX30102本身很小无法手工焊接,本设计中使用的是MAX30102测试版,其将IO口全部引出,如所示。

3.2.3OLED的选型

本设计需要显示心跳速度以及脉搏曲线,所以传统使用的LCD1602等显示屏不足以完成需求,所以经过综合考虑,使用了0.96’的OLED屏幕做显示采用SSD1306显示驱动芯片,其拥有128*64的分辨率,可以显示数字图片汉字等信息,非常适合于本设计的需要。SSD1306是一款专门用于驱动OLED显示屏的控制芯片,通常用于小尺寸OLED屏幕,如0.96英寸。它采用SPI或I2C接口与主控芯片通信,具有高度集成、低功耗和稳定性强等特点。

优点:

高度集成:SSD1306集成了驱动OLED屏幕所需的各种功能模块,包括显示缓存、控制逻辑、接口电路等,简化了外围电路设计,减少了PCB板面积。

低功耗:SSD1306采用了优化的驱动算法和节能设计,能够在保证显示效果的前提下降低功耗,延长显示屏的使用时间,适用于移动设备等对电池寿命要求较高的场景。

高分辨率:SSD1306支持高分辨率的OLED显示屏,能够实现清晰、细腻的图像和文本显示,提高了用户体验。

灵活的接口:SSD1306支持SPI和I2C两种通信接口,可以根据具体应用需求选择合适的接口方式,提高了系统的灵活性和兼容性。

稳定性强:SSD1306具有良好的稳定性和可靠性,能够稳定驱动OLED显示屏工作,保证显示效果的稳定和持久。

广泛的应用领域:由于SSD1306具有功耗低、分辨率高、接口灵活等特点,因此广泛应用于智能穿戴设备、便携式仪器、消费电子产品等领域。

综上所述,0.96英寸OLED屏幕使用SSD1306屏幕控制芯片具有高度集成、低功耗、高分辨率、灵活的接口、稳定性强和广泛的应用领域等优点,适用于各种小尺寸显示需求的应用场景。

STM32核心核心电路如上图所示。核心单片机为STM32F103C8T6,本设计使用了GPIO、JTAG、电源、时钟、上电复位模块,下面分别介绍个硬件模块的设计。

因为STM32的硬件IIC操作复杂,一般采用GPIO口模拟IIC接口,因为IIC接口速度相对较低高速400K,低速100K。STM32翻转速度达50MHz的GPIO足够模拟IIC的时序。因为采用GPIO模拟,IIC的引脚选择就没有限制了,根据PCB布局布线的方便选用PB12和PB13口。

MAX30102的中断引脚接PB14,同样是为了布线方便,STM32的大部分口都有中断功能。

复位电路采用了简单的RC充电电路保证上电复位,并使用按键进行低电平复位,因为没有苛刻的环境条件没有采用专门的复位芯片。

STM32需要通过BOOT0引脚选择启动源,从Flash启动需要把BOOT0引脚用电阻拉低。

外部采用8M晶振接入STM32专用的高速外部晶振接口,20nF的电容可以保证内部电路起振。

本设计采用Type-c接口进行供电,这样设计主要是为了方便。供电功率方面,标准的USB2.0的500mA 5V的功率足够驱动板子。需要更大功率可以连接USB3.0接口,或者使用外置充电宝或电源适配器可以获得2A以上的电流。所以,Type-c接口可以为设备提供足够的电源。

经过LC滤波的5V电源为整个板子提供能量,5V通过LDO转化为3.3V电压,为STM32、MAX30102的LED驱动部分供电。

3.3.4程序下载接口

STM32的程序下载可以通过J-Flash模式、MDK模式和串口下载三种方式,前两种需要专门的下载器支持,而串口下载仅仅需要USB转TTL芯片即可连接单片机串口使用flymcu软件进行在线下载。

要注意的是使用串口下载,需要配置boot脚的电平以进入下载模式,在本设计中使用了跳线帽的形式进行boot电平切换。

3.4PCB布局布线

PCB采用双层板的布线方法,因为大部分为数字信号,模拟信号很少没有采用模拟、数字电源和地单独铺设的方式。布局的原则是尽量利用板子空间,减小板子尺寸,例如利用OLED遮盖MCU的方式节约OLED的摆放面积。布线的原则是信号线之间有合理的间隔,大面积铺地保证每一根信号线都有返回参考平面。

PCB板正面MAX30102模块传感器需要贴近皮肤,所以PCB的传感器附近尽量不放置元件。从下图,可以看出正面元件摆放很紧凑,为了保证供电的稳定性采用独立的电平转换芯片另外因为面积不够,没有增加串口芯片或者将原始数据发送到电脑。因为在测试的时候已经获得较好的信号,脉搏、血氧饱和度算法也有满意的结果,所以不输出原始信号也可以。采用OLED显示的方式,在测量过程中同步显示波形。

4系统软件设计与实现

4.1软件总体设计框架

软件功能分为:数据采集、脉搏&血氧饱和度计算、刷新显示内容。这三个过程在时间上是连续的,所以软件设计较为简单,在主循环中按照顺序重复以上三个模块即可。

如图4- 1软件总体框架所示,打开系统电源开关,开始读取程序存储器,进入初始化。初始化包括对GPIO口的模式配置以及OLED显示模式和MAX30102的模式配置等。随后,程序将驱动屏幕显示“Loading…”正在加载字符。完成后进入系统主循环,随后的脉搏采集的工作将在主循环在进行。进入主循环后,开始读取MAX30102的FIFO区域保存的红外信号测量数据。当FIFO区的数据存满以后,MAX30102将通过INT口发送中断命令,程序在接收到中断信号后开始顺序读取数值存入变量数组。通过脉搏算法计算出此时的心跳数值并显示在OLED屏上,同时根据获取的数值设计有一个脉搏曲线图,并通过显示函数显示曲线图完成一个循环。

4.2软件实现

软件上,先实现单独模块,再组合成完整程序。其中OLED显示驱动、MAX30102驱动、脉搏&血氧饱和度算法难度较大。

4.2.1程序初始化

如下图所示,初始化包括对一些全局变量的定义、数值存储数组的定义、OLED显示数组的定义、NVIC中断寄存器的配置、串口的波特率初始化和OLED屏幕配置初始化函数等。

4.2.2OLED屏幕驱动

为了避免局部修改频繁写OLED的问题,在STM32内部SRAM中开辟了一块静态空间保存OLED显示的数据,每次显示内容变更实际修改的是SRAM中的数据,每隔一段时间将SRAM中数据一起写入OLED。因为OLED的操作是GPIO模拟的时序,其中有大量占用CPU的等待操作,并且速度较慢。写SRAM缓存的速度是非常快的,这样就可以避免程序中随机的OLED写入,将慢速的OLED写入统一有计划的周期性操作。

4.2.3MAX30102驱动程序

MAX30102的驱动包括两部分:IIC接口驱动和MAX30102寄存器操作。之前提到,STM32的硬件IIC设计为了避开专利,实际使用有些麻烦。针对IIC采用了STM32用户通常使用的GPIO模拟方式。需要注意的是,MAX30102手册中强调的IIC注意事项。比如地址为0xAE,FIFO读取中FIFO指针寄存器的操作等。寄存器操作方面,主要是初始化芯片和从指定寄存器读取FIFO数据。初始化芯片的流程参考官方代码,一般而言芯片的初始化可以参考应用文档,其中会给出不同应用场景的初始化流程。但是MAX30102芯片只有芯片手册、官方评估板和代码,所以只能以官方代码为基础调试程序。比如为了测试IIC接口,可以进行写之后读回操作;为了测试芯片可以周期性读取芯片内部温度传感器,通过改变芯片温度判断内部传感器变化趋势是否正确来确认芯片是否正常。

主要的芯片初始化代码如下:

4.2.4脉搏算法

由官方提供的C++算法移植得到,通过测试在指尖出测试效果还可以。算法利用500组RED、IR数据计算结果,每个测量周期更新100组数据。

本设计使用的脉搏算法是使用PPG脉搏的计算方法——时域法。其思想就是计算动态阈值曲线,利用波形曲线和动态阈值曲线相交来确定PPG信号周期。

如图4- 2PPG波形与动态阈值曲线图所示,当PPG波形在相同的位置两次经过动态阈值曲线的交点时,这段时间的间隔就能认为是PPG的一个周期,根据此周期即可求出脉搏。动态阈值曲线的某一点的值为前面若干个周期内的点的平均值。

void max30102_FIFO_ReadBytes(u8 Register_Address,u8* Data)
{	
	max30102_Bus_Read(REG_INTR_STATUS_1);
	max30102_Bus_Read(REG_INTR_STATUS_2);	
	IIC_Start();
	IIC_Send_Byte(max30102_WR_address | I2C_WR);	
	if (IIC_Wait_Ack() != 0)
	{
		goto cmd_fail;		}
		IIC_Send_Byte((uint8_t)Register_Address);
	if (IIC_Wait_Ack() != 0)
	{
		goto cmd_fail;		}
		IIC_Start();
		IIC_Send_Byte(max30102_WR_address | I2C_RD); 
	if (IIC_Wait_Ack() != 0)
	{
		goto cmd_fail;		}
		Data[0] = IIC_Read_Byte(1);	
	Data[1] = IIC_Read_Byte(1);	
	Data[2] = IIC_Read_Byte(1);	
	Data[3] = IIC_Read_Byte(1);
	Data[4] = IIC_Read_Byte(1);	
	Data[5] = IIC_Read_Byte(0);
	IIC_Stop();

cmd_fail: 
	IIC_Stop();

4.2.5波形显示

因为没有串口原始数据输出的功能,所以在屏幕上实现了波形显示。将原始数据直接绘制在OLED上会有问题,比如OLED的Y纵向像素只有64个,MAX30102原始数据是18bit的数据,并且数据中有直流分量,幅度也会不断变化。所以采用了自适应的方法,将波形约束到一个20像素高128像素宽的方格内。其中自适应算法实现起来并不复杂,但是有很好的显示效果。大致原理是,遍历需要显示的缓存区,找出最大最小值,根据最大最小值确定数值压缩参数。显示每个点的时候,将每个值减去最小值,就可以除去大部分直流分量,再除以压缩参数就可以保证结果在约束范围内。函数原型为:

void dis_DrawCurve(u32* data,u8 x)
{
	u16 i;
	u32 max=0,min=262144;
	u32 temp;
	u32 compress;
	
	for(i=0;i<128*2;i++)
	{
		if(data[i]>max)
		{
			max = data[i];
		}
		if(data[i]<min)
		{
			min = data[i];
		}
	}
	compress = (max-min)/20;
	for(i=0;i<128;i++)
	{
		temp = data[i*2] + data[i*2+1];
		temp/=2;
		temp -= min;
		temp/=compress;
		if(temp>20)temp=20;
		OLED_DrawPoint(i,63-x-temp,1);
	}
}

5安装与调试

5.1MAX30102模块调试

实验环境采用了STM32F103RCT6开发板与MAX30102模块通过串口输出调试程序,完成无误后在移植到成品板上通过OLED屏幕显示测量值,

5.1.1原始数据的采集测试

利用STM32配置好MAX30102模块之后,通过IIC接口周期性的读取信号。STM32通过串口将采集到的原始信号发送到电脑的串口调试助手,然后把串口调试助手的数据保存之后用matlab的plot函数显示出波形

实验过程不是特别顺利,又是因为IIC接口的问题,几乎每个IIC接口的模块对IIC都有一些不同的传输要求。在逻辑分析仪和手册的帮助下,最终采集到了数据。

5.1.2脉搏及血氧饱和度算法测试

MAXIM官方提供了测试用的算法代码用C++编写,把官方C++代码转化为C代码之后移植到STM32平台。通过测试,指尖处可以较为稳定的测出脉搏和血氧饱和度,但是手腕处没有准确的读数。在官方的评估板演示视屏中提到,MAX30102在手腕处获得的信号不佳,可见MAXIM还在探索反射式光传感器的设计。相比第一款MAX30100,MAX30102已经有很大进步了,另外几款新出的芯片没有对一般开发者开放的信息,但是可能已经对一些厂家供货了。我之前在山寨手环上看到的类似MAX30101芯片可能就是新一代的改进产品。

5.2PCB调试

因为之前测试充分,PCB调试比较顺利,焊接完毕烧录程序之后就获得了比较理想的显示结果。因为屏幕只有128x64的分辨率,显示内容需要合理安排。测试中使用了两种波形显示方法,只显示RED波形和RED、IR波形同时显示,下图展示了显示效果。RED、IR同时显示时RED在上,可以看出两种波形有一些差异。

6总结与展望

本文介绍一种基于单片机的脉搏测量系统的设计方法,主要使用了STM32F103C8T6单片机作主控制器,使用MAX30102光传感脉搏测量模块作为脉搏数据的测量,并通过使用GPIO模拟的IIC接口与主控制器通信,使主控制器接收到数据后计算出数值,最后通过OLED屏幕显示脉搏脉搏数值同时显示脉搏曲线。本文完整的介绍了本设计的硬件选材、原理图设计、PCB布局和单片机程序的设计,并通过硬件测试达到了本次设计要求,实现了脉搏值的测量,完成了设计任务。

随着电子医疗的普及,生物传感技术和可穿戴设备的不断创新,个人化医疗将得到进一步加强。人们可以随时随地监测自己的健康指标,实现健康管理的精准化和个性化,预防疾病的发生,提高生活质量。未来医疗领域将迎来更多技术的突破和创新,医疗服务将变得更加智能、便捷、个性化。这将使医疗资源得到更有效的利用,提高医疗服务的质量和效率,为人们的健康和生活带来更大的福祉。在未来,电子医疗将成为医疗行业发展的主要趋势,为构建健康中国、促进全民健康作出积极贡献

  • 18
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值