利仿虚用传感器接触患者的皮肤黏膜,使用一定波长的红光计算氧饱和度。
血氧饱和度是指患者血液内氧气的含量,正常人的扰哗血氧饱和度在缓大行96%-100%,如果低于95%就提示患者体内的血氧含量下降。临床上检测血氧饱和度一般是利用传感器接触患者的皮肤黏膜,使用一定波长的红光计算浓度,没有创伤性。
近一年因疫情影响,一直在搞血氧仪产品,从不了解到熟悉,所涉猎的知识大多通过网络总结学习而来,本篇仅作为知识分享之用,如对原作者有影响,请知汪陪会删除。
下面就汇总的一些技术知识分享给大家,正确与否,请用者自行实验。
---光密度的定义与计算公式
脉搏血氧仪根据郎伯一比尔定律(Lambert—Beer Law)采用光电技术进行血氧饱和度的测量。
当一束光打在某物质的溶液上时,透射光强I与发射光强I0之间有以下关系:
I= I0ekCd
I和I0的比值的对数称为光密度D,因此上式也可表示成仿陵启:
D=In(I/I0)=kCd
这里, C是溶液(例如血液)的浓度, d为光穿过血液的路径, k是血液的光吸收系数。若保持路径 d 不变,血液的浓度便与光密度 D成正比。
-->下面是说,Hb 与 HbO2 吸收的光的频率有些不同
血液中的HbO2—和Hb对不同波长的光的吸收系数不一样,在波长为6OO一700nm的红光(RED)区, Hb的吸收系数远比HbO2的大;
但在波长为80O—1000nm的红外光(IR)区, Hb的吸收系数要比HbO2的小;在8O5nm附近是等吸收点。
---> 计算出血氧饱和度的公式--本来应该是线性的,但是因为人体本身的散射特性,所以需要再做个平方做补偿,可以更精确一些.
SaO2= KlR2 + K2R + K3
此式中的 K1、K2、K3是经验常数,备如而R是在某个很小的时间间隔上,两种光电信号的幅度变化量之比,即:
R = ΔRED/ΔIR
--->注意事项:
1. 日光灯应该会对仪器有影响 所以要做工频滤波
2. 人体运动也会有影响,所以要做高通
Arduino-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:这里由于整体软件和硬件的标准没有像医疗设备的标准一样,所以只是验证性测试。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)