Arduino 血氧心率模块传感器数据采集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino 血氧心率模块传感器数据采集相关的知识,希望对你有一定的参考价值。
参考技术AArduino-1.8.5-windows.exe、HXDZ-30102-ACC
集成了LIS2DH12(ST的三轴加速传感器,用于记录运动数据)和MAX30102(血氧和心率检测记录)。
电路板尺寸:38*16mm
电路板厚度:2.5mm
LED峰值波长:660nm/880nm
LED供电电压:3.3v~5v
检测信号类型:光反射信号(PPG)
输出信号接口:I 2 C接口(数字接口)
通信接口电压:3~5v
工作电路:1.5mA(3.3v 输入)
心率精确度:+/- 5bpm,+/- 10bpm(动态)
分辨率: 1bpm
采样率:100Hz(STM32程序)/ 25Hz(arduino程序)
VCC:LED电源输入端,也是I 2 C总线上拉电平,可以接3.3v或者5v
GND:地线
SCL:I 2 C总线的时钟引脚
SDA:I 2 C总线的数据引脚
I_L:LIS2DH12芯片的中断引脚
I_M:MAX30102芯片的中断引脚
传统的脉搏测量方法主要有三种:
1、从心电信号中提取
2、从测量血压时压力传感器测到的波动来计算脉率
3、光电容积法
前两种会限制病人的活动,长时间使用会加重病患的心理和生理负担,而光电容积法在实际中时普遍使用的一种有效方法,其特点:方法简单、佩戴方便、可靠性高。
光电容积法基本原理:
利用人体组织在血管搏动时造成透光率不同来进行脉搏和血氧饱和度测量的。其使用的传感器由光源和光电变换器两部分组成,通过绑带或夹子固定在病患的手指、手腕或耳垂上。光源一般采用对动脉血中氧合血红蛋白(Hb0 2 )和血红蛋白(Hb)有选择性的特定波长的发光二极管(一般使用660nm附近的红光和900nm附近的红外光)。当光束透过人体外周血管,由于动脉搏动充血容积变化导致这束光的透光率发生改变,此时由光电变换器接收经人体组织反射的光线,转变为电信号并将其放大和输出。
由于脉搏是随心脏的搏动而周期性变化的信号,动脉血管容积也周期性变化,因此光电变换器的电信号变化周期就是脉搏率。同时根据血氧饱和度的定义,其表示为:
注意:
1、SaO 2 :广义上的氧饱和度,常指血液样品中的氧含量对该样品血液最大氧含量的百分比(SpO2是经皮血氧饱和度, 而SaO2是动脉血氧饱和度,二者不同,但是相关性好,绝对值十分接近)。
2、HbO 2 :氧合血红蛋白
3、Hb:还原血红蛋白
MAX30102本身集成了完整的发光LED及其驱动部分,光感应和AD转换部分,环境光干扰消除及数字滤波部分,只将数字接口留给用户,极大地减轻了用户的设计负担。用户只需要使用单片机通过硬件I 2 C或者模拟I 2 C接口来读取MAX30102本身的FIFO,就可以得到转换后的光强度数值,通过编写相应的算法就可以得到心率值和血氧饱和度。
心率和血氧饱和度算法流程图:
首先连接开发板串口,波特率需要进行必要设置,奇偶校验位无,上电后,复位MAX30102,并开始对MAX30102进行功能初始化,此时Red LED和 IR LED交替点亮来检测人体皮肤下血液的搏动和血氧含量(此时可以看到MAX30102有红光亮起,说明初始化成功)。开发板将一段时间内MAX30102采集的LED反射数据存储在内部RAM中,然后分别计算Red LED和 IR LED的直流成分(DC)和交流成分(AC),最后算出数值R并通过预先存储在两波峰之间的时间差T来确定,每分钟心跳数BPM=60/T。(具体算法原理可以参考AN6409芯片手册中29~31页说明)
red和ir是红色LED,红外LED的原始数据,HR表示心率值,HRvalid是心率是否有效标识,SPO2是血氧数值,SPO2valid是血氧首付有效标识
血氧模块与Arduino连接说明:
接口连接说明:
实际连接图:
原理图管脚说明:
初始化:
无采集状态:
数据采集状态:
ps:这里由于整体软件和硬件的标准没有像医疗设备的标准一样,所以只是验证性测试。
医疗级心率血氧模块案例
以上是关于Arduino 血氧心率模块传感器数据采集的主要内容,如果未能解决你的问题,请参考以下文章
雕爷学编程Arduino动手做(91)---XD-58C心率传感器
Android:如何以编程方式向 Nonin OnyxII 9560 脉搏血氧仪发送命令以选择数据格式并显示 SpO2 和心率值