Arduino动手做(100)MAX30102手腕心率

原创 面包板社区 2022-02-23 20:00

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百:MAX30102血氧仪手腕心率脉搏检测心跳传感器模块


MAX30102
是一种综合性脉搏血氧测定法,心率监测模块。它包括内部LED,光电探测器、光学元件和低噪声电子设备具有环境光抑制功能。max30102提供了完整的系统解决方案,简化流程设计适用于移动和可穿戴设备。MAX30102在单个1.8V电源上工作为内部LED提供单独的5.0V电源。通信通过标准I2c兼容接口。模块可以通过软件关闭零备用电流,允许电源轨始终保持通电。

应用
●可穿戴设备
●健身辅助设备

MAX30102的优点和特点

●心率监测器和脉搏血氧计传感器输入LED反射溶液

●微型5.6毫米x 3.3毫米x 1.55毫米14针光学模块

•集成的盖玻片提供最佳、坚固的

●移动设备超低功率运行

•可编程采样率和LED电流节电

•低功率心率监测器(<1兆瓦)

•超低停机电流(0.7μA,典型值)

●快速数据输出能力

•采样率高

●强大的运动伪影复原能力

•高信噪比

-40°C至+85°C工作温度范围


MAX30102手腕心率模块

有两个发光二极管,一个光检测器,优化光学和低噪声的仿真信号处理,以检测脉搏血氧饱和度和心脏速率信号。

1、只需要将手指头紧贴在传感器上,就能估计 脉搏血氧饱和度(SpO2)及脉搏(相当于心跳)。

2、携带氧气的红血球能吸收较多红外光(850-1000nm),未携带氧气的红血球则是吸收较多的红光(600-750nm)。

3、因此pulse oximeter就是一个迷你的分光计,利用不同红血球之吸收光谱的原理,来分析血氧饱和度。

4、这种实时而快速的测量方式,也广泛被运用在许多临床的参考。

MAX30102手腕心率模块电原理图

经过多方寻找,从一个研究MAX30102算法的程序中找到了一个经过亲自验证有效的实际血氧标定计算公式:

                           SpO2=-45.060*R*R+ 30.354 *R + 94.845

其中的R可以通过红光和红外光光强的对数值计算得到,这个标定表达式实际上是对血氧饱和度的二次曲线拟合,是经过测量得到的。最后终于可以输出血氧饱和度数据了。


MAX30102手腕心率模块主要应用

辅助健身设备

智能电话

平板电脑

可穿戴设备

MAX30102的发光部分包括两个LED,一个是红光LED(660nm),另一个是红外光LED(880nm),这个是测量血氧饱和度SPO2最常见的配置。接收部分是一个对可见光和红外光都敏感的光电二极管,其接收的光强度信号转换为电流信号,经过环境光消除电路后,最后被自带的18位ADC进行采样转化,至此模拟部分完成。AD转化后的数字经过数字滤波后储存在数据寄存器中,最后可通过I2C总线被外接MCU读取。在硬件上,LED的电源和其他部分的电源不是同一个,因为LED为了保证足够的出射光强,需要瞬间大电流(最大50ma),这就要求LED的正向电压足够大(要求3.1V以上)。而其余的AD转换和I2C总线部分,为了实现低功耗要求电压足够小(要求1.8V),所以传感器需要两路独立的电源。此外,由于LED电源会产生瞬间大电流,所以电源引脚附近要加一个大电容减轻对电源电压的影响。
传统的脉搏测量方法主要有三种:一是从心电信号中提取;二是从测量血压时压力传感器测到的波动来计算脉率;三是光电容积法。前两种方法提取信号都会限制病人的活动,如果长时间使用会增加病人生理和心理上的不舒适感。而光电容积法脉搏测量作为监护测量中最普遍的方法之一,其具有方法简单、佩戴方便、可靠性高等特点。

光电容积法的基本原理是利用人体组织在血管搏动时造成透光率不同来进行脉搏和血氧饱和度测量的。其使用的传感器由光源和光电变换器两部分组成,通过绑带或夹子固定在病人的手指、手腕或耳垂上。光源一般采用对动脉血中氧合血红蛋白(HbO2)和去氧血红蛋白(Hb)有选择性的特定波长的发光二极管(一般选用660nm附近的红光和900nm附近的红外光)。当光束透过人体外周血管,由于动脉搏动充血容积变化导致这束光的透光率发生改变,此时由光电变换器接收经人体组织反射的光线,转变为电信号并将其放大和输出。由于脉搏是随心脏的搏动而周期性变化的信号,动脉血管容积也呈现周期性变化,因此光电变换器的电信号变化周期就是脉搏率。

MAX30102手腕心率模块实验接线示意图

  实验开源代码

  1. /*


  2. 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)


  3. 实验一百: MAX30102血氧仪手腕心率脉搏检测心跳传感器模块


  4. 1、安装库:IDE-工具-管理库-搜索“MAX30105”-安装


  5. 2、项目:串口读取测量数据


  6. 3、连线(I2C):


  7. VIN → 3.3V


  8. GND → GND


  9. SDA 接 A4


  10. SCL 接 A5


  11. */




  12. #include


  13. #include "MAX30105.h"


  14. #include "heartRate.h"


  15. MAX30105 particleSensor;


  16. const byte RATE_SIZE = 4; //Increase this for more averaging. 4 is good.


  17. byte rates[RATE_SIZE]; //Array of heart rates


  18. byte rateSpot = 0;


  19. long lastBeat = 0; //Time at which the last beat occurred


  20. float beatsPerMinute;


  21. int beatAvg;




  22. void setup(){


  23. Serial.begin(115200);


  24. Serial.println("Initializing...");


  25. // Initialize sensor


  26. if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed


  27. {


  28. Serial.println("MAX30105 was not found. Please check wiring/power. ");


  29. while (1);


  30. }




  31. Serial.println("Place your index finger on the sensor with steady pressure.");


  32. particleSensor.setup(); //Configure sensor with default settings


  33. particleSensor.setPulseAmplitudeRed(0x0A); //Turn Red LED to low to indicate sensor is running


  34. particleSensor.setPulseAmplitudeGreen(0); //Turn off Green LED


  35. }




  36. void loop(){


  37. long irValue = particleSensor.getIR();


  38. if (checkForBeat(irValue) == true)


  39. {


  40. //We sensed a beat!


  41. long delta = millis() - lastBeat;


  42. lastBeat = millis();


  43. beatsPerMinute = 60 / (delta / 1000.0);


  44. if (beatsPerMinute < 255 && beatsPerMinute > 20)


  45. {


  46. rates[rateSpot++] = (byte)beatsPerMinute; //Store this reading in the array


  47. rateSpot %= RATE_SIZE; //Wrap variable


  48. //Take average of readings


  49. beatAvg = 0;


  50. for (byte x = 0 ; x < RATE_SIZE ; x++)


  51. beatAvg += rates[x];


  52. beatAvg /= RATE_SIZE;


  53. }


  54. }


  55. Serial.print("IR=");


  56. Serial.print(irValue);


  57. Serial.print(", BPM=");


  58. Serial.print(beatsPerMinute);


  59. Serial.print(", Avg BPM=");


  60. Serial.print(beatAvg);


  61. Serial.println();


  62. delay(1000);


  63. }

Initializing...

Place your index finger on the sensor with steady pressure.

正在初始化…

将食指稳定地放在传感器上。

(初始化后的串口数据-未放上手指)

实验串口返回情况

模块电原理图之二


【码上参与,拿奖品】


面包板社区 面包板社区——中国第一电子人社交平台 面包板社区是Aspencore旗下媒体,整合了电子工程专辑、电子技术设计、国际电子商情丰富资源。社区包括论坛、博客、问答,拥有超过250万注册用户,加入面包板社区,从菜鸟变大神,打造您的电子人脉社交圈!
评论
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 23浏览
  • 在快速发展的能源领域,发电厂是发电的支柱,效率和安全性至关重要。在这种背景下,国产数字隔离器已成为现代化和优化发电厂运营的重要组成部分。本文探讨了这些设备在提高性能方面的重要性,同时展示了中国在生产可靠且具有成本效益的数字隔离器方面的进步。什么是数字隔离器?数字隔离器充当屏障,在电气上将系统的不同部分隔离开来,同时允许无缝数据传输。在发电厂中,它们保护敏感的控制电路免受高压尖峰的影响,确保准确的信号处理,并在恶劣条件下保持系统完整性。中国国产数字隔离器经历了重大创新,在许多方面达到甚至超过了全球
    克里雅半导体科技 2025-01-03 16:10 121浏览
  • 在测试XTS时会遇到修改产品属性、SElinux权限、等一些内容,修改源码再编译很费时。今天为大家介绍一个便捷的方法,让OpenHarmony通过挂载镜像来修改镜像内容!触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,树莓派卡片电脑设计,支持开源鸿蒙OpenHarmony3.2-5.0系统,适合鸿蒙开发入门学习。挂载镜像首先,将要修改内容的镜像传入虚拟机当中,并创建一个要挂载镜像的文件夹,如下图:之后通过挂载命令将system.img镜像挂载到sys
    Industio_触觉智能 2025-01-03 11:39 113浏览
  • 车身域是指负责管理和控制汽车车身相关功能的一个功能域,在汽车域控系统中起着至关重要的作用。它涵盖了车门、车窗、车灯、雨刮器等各种与车身相关的功能模块。与汽车电子电气架构升级相一致,车身域发展亦可以划分为三个阶段,功能集成愈加丰富:第一阶段为分布式架构:对应BCM车身控制模块,包含灯光、雨刮、门窗等传统车身控制功能。第二阶段为域集中架构:对应BDC/CEM域控制器,在BCM基础上集成网关、PEPS等。第三阶段为SOA理念下的中央集中架构:VIU/ZCU区域控制器,在BDC/CEM基础上集成VCU、
    北汇信息 2025-01-03 16:01 175浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 162浏览
  • 物联网(IoT)的快速发展彻底改变了从智能家居到工业自动化等各个行业。由于物联网系统需要高效、可靠且紧凑的组件来处理众多传感器、执行器和通信设备,国产固态继电器(SSR)已成为满足中国这些需求的关键解决方案。本文探讨了国产SSR如何满足物联网应用的需求,重点介绍了它们的优势、技术能力以及在现实场景中的应用。了解物联网中的固态继电器固态继电器是一种电子开关设备,它使用半导体而不是机械触点来控制负载。与传统的机械继电器不同,固态继电器具有以下优势:快速切换:确保精确快速的响应,这对于实时物联网系统至
    克里雅半导体科技 2025-01-03 16:11 166浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 33浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 164浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 45浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 43浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 41浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦