PPG测量心率和血氧的方法——原理版
光电容积脉搏波描记法PPG
光学心率传感器,如果带过上述那些智能手表或者智能手环的朋友来说也不算稀奇的事情。就拿AppleWatch来说,测量心率时底部的表盘会发出绿色的灯光,并且测量的时候手腕最好保持不动否侧会影响测量结果。接下来将详细介绍光学心率测量的原理。
如下两张图是光学心率传感器。图a是LED没有发光的时候中间是一个光敏二极管,图b是传感器的LED发光的时候。
图A 图B
那么为什么通过LED灯发光就能测量心率呢?
当LED光射向皮肤,透过皮肤组织反射回的光被光敏传感器接受并转换成电信号再经过AD转换成数字信号,简化过程:光--> 电 --> 数字信号
为什么大多数传感器都是采用的绿光呢?
我们先看看光谱的特点,从紫外线到红外线的波长是越来越长的。
之所以选择绿光作为光源是考虑到一下·几个特点:
1. 皮肤的黑色素会吸收大量波长较短的波
2. 皮肤上的水份也会吸收大量的UV和IR部分的光
3. 进入皮肤组织的绿光(500nm)-- 黄光(600nm)大部分会被红细胞吸收
4. 红光和接近IR的光相比其他波长的光更容易穿过皮肤组织
5. 血液要比其他组织吸收更多的光
6. 相比红光,绿(绿-黄)光能被氧合血红蛋白和脱氧血红蛋白吸收
总体来说,绿光-- 红光能作为测量光源。早起多数采用红光为光源,随着进一步的研究和对比,绿光作为光源得到的信号更好,信噪比也比其他光源好些,所以现在大部分穿戴设备采用绿光为光源。但是考虑到皮肤情况的不用(肤色、汗水),高端产品会根据情况自动使用换绿光、红光和IR多种光源。
虽然知道了上面的几个特点,但是还不足以弄清楚为什么通过光照就能测出心率、血氧等参数呢?
下图就解释了核心原理
当光照透过皮肤组织然后再反射到光敏传感器时光照有一定的衰减的。像肌肉、骨骼、静脉和其他连接组织等等对光的吸收是基本不变的(前提是测量部位没有大幅度的运动),但是血液不同,由于动脉里有血液的流动,那么对光的吸收自然也有所变化。当我们把光转换成电信号时,正是由于动脉对光的吸收有变化而其他组织对光的吸收基本不变,得到的信号就可以分为直流DC信号和交流AC信号。提取其中的AC信号,就能反应出血液流动的特点。我们把这种技术叫做光电容积脉搏波描记法PPG。
下图是PPG信号和ECG信号的对比
实际测量手指的PPG信号如下:
所以,只要测得到的PPG信号比较理想算出心率也不算什么难事。但是事实总是残酷的,由于测量部位的移动、自然光、日光灯等等其他的干扰,最终测到的信号可能是下面的这种,所以要通过很多方法进行滤波处理
对于PPG信号的处理,目前我知道的有两种方法。一种是时域分析,即算出一定时间内PPG信号的波峰个数,另一种是通过对PPG信号进行FFT变换得到频域的特点。
时域方法:
通过对原始的{PPG信号进行滤波处理,得到一定时间内的波峰个数,然后既可算出心率值
假设连续采样5秒的时间,在5s内的波峰个数为N,那么心率就是N*12 (这个相信大家都懂,就跟把脉一样~)
频域分析:
上面分析过,我们把血液流动对光吸收转变成了AC信号,如果对于进行FFT变换,那么就能看到频域的特点。如下图就是对PPG信号的FFT转变
上图中的频域图,0Hz的信号很强,这部分是骨骼、肌肉等组织的DC信号,在1Hz附近有个相对比较突出的信号就是血液流动转变的AC信号。假设测得到的频率f = 1.2Hz
那么心率HeartRate HR = f x60 = 1.2 x 60 = 72
最后再简单提一下血氧的测量,相比心率血氧测量难度较大而且精度不算太高。测量血氧的原理图下图所示
由于血液中含有的氧合血红蛋白HbO2和血红蛋白Hb存在一定的比例,简单说也就是含氧量吧。上面的图表示了氧合血红蛋白HbO2和血红蛋白Hb对波长600~1000nm的光吸收特性,从图中可以看出上600~800nm间Hb的吸收系数更高,800~1000之间HbO2的吸收系数更高。所以可以利用红光(600~800nm)和接近IR(800~1000nm)的光分别检测HbO2和Hb的PPG信号,然后通过程序处理算出相应的比值,这样就得到了血氧值。
但是由于光源不同,直接利用红光和接近IR的光进行信号对比是不可靠的,因为红光和IR透过皮肤组织也会产生不同的吸收。下图是红光和IR透过皮肤的原始信号示意图
上面分析说过,DC部分是光透过皮肤组织转换成的直流信号,AC是血液流动产生转换成的交流信号。由于皮肤组织对红光和IR的吸收程度不同,DC部分自然也就不一样。为了能共“公平对待”两种光源的PPG信号,所以需要对原始信号处理一下。下图示意了处理后的信号(DC部分相等)
通过一定的比例计算,公平对待Red和IR的PPG信号。这样计算出来的Hb和HbO2比例才可靠。
PPG测量心率和血氧的方法——原理版相关推荐
- PPG测量心率和血氧原理
光电容积脉搏波描记法PPG 光学心率传感器,如果带过上述那些智能手表或者智能手环的朋友来说也不算稀奇的事情.就拿AppleWatch来说,测量心率时底部的表盘会发出绿色的灯光,并且测量的时候手腕最好 ...
- Funpack第六期-基于MAX32660-EVSYS具有心率和血氧检测智能手环
1.功能实现 本代码主要实现了日期星期和时间显示以及心率和血氧浓度的检测功能. 2.硬件连接 使用了MAX32600的一个SPI接口.一个I2C接口和一个UART接口. 1.14寸LCD屏引脚 板卡引 ...
- MAX30102血氧模块检测心率和血氧
1. 完成 CubeMX初始化配置 1.1 利用CubeMX完成HAL库工程模板和初始化: 通过选择芯片型号创建CubeMX工程 在弹出的对话框中输入开发板上的芯片型号,STM32F103RB 在右侧 ...
- STM32+ MAX30102通过指尖测量心率+血氧饱和度
一.前言 重要的事情放在最前面:max30102只适用于指尖手指测量,不适用与手腕手指测量,如需做成可穿戴样式选择传感器的小伙伴请pass掉他,因为他只有红光和红外2种光,不够充足的数据源去运算. 由 ...
- MAX30100心率血氧模块
文章目录 一.MAX30100是什么? **MAX30100参数** ***什么是光容积法?*** **(补充说明:)** 二.软件部分 一.MAX30100是什么? MAX30100是一款能测量心率 ...
- 指尖心跳,通过手指测量心率波形
指尖心跳,通过手指测量心率波形 心跳传感器 检测原理 传感器贴膜 arduino接线 arduino程序下载 STM32接线 STM32程序下载 上位机查看 总结 原文链接:https://www.y ...
- 使用PPG信号计算脉率和血氧
Github代码地址:https://github.com/hzzhangqf0558/SPO2_HR - PPG信号简介 脉搏波是心脏的搏动(振动)沿动脉血管和血流向外周传播而形成的.心脏是一个持续 ...
- 差示光谱法的测定原理_差示扫描量热法(DSC)测量物质的纯度的方法 第1部分 原理及实验方法...
通常通过色谱法.光谱法以及滴定法等技术来测量物质的纯度,然而在实际应用中这些传统方法具有前处理繁琐.耗时等不足.与这些传统分析技术相比,通过热分析中的差示扫描量热法(DSC)测量物质的纯度则具有样 ...
- 基于STM32的心率血氧检测仪
基于STM32的心率血氧检测仪 一.硬件连接 1.1器材准备 (1)开发板:STM32F103系列 (2)显示屏:0.96寸OLED (3)串口监视:USB-TTL 1.2线路连接 STM32F103 ...
最新文章
- android studio 发布项目的流程
- php中this,self,parent三个关键字之间的区别(转载)
- pytorch datasets.ImageFolder,DataLoader形成的tensor是什么样的?
- 一个用于SAP UI5学习的脚手架应用,没有任何后台API的依赖
- java 泛型嵌套泛型_Java泛型简介–第6部分
- virtualbox macos_MacOS 终于可以完美使用 Podman 了!
- php 单击图片放大,单击样列图片放大,再次点击缩回原图
- android4以上版本读写外置sd卡报错的解决办法
- 23个Python爬虫开源项目代码
- 如何在苹果Mac上设置文档样板,开启文档时自动复制?
- 什么是智能门锁,智能门锁主要有哪些优点?
- xml.html一键解密工具,华为配置加解密工具
- esp8266使用安信可IDE编译、烧录
- 分辨率、帧率、码率之间的关系
- Ie8兼容性问题web.config设置
- 公交查询系统c语言数据结构,公交路线查询系统(基于数据结构和C语言)
- Android开发越来越式微了吗?,flutter二维码扫描第三方
- 系统奔溃了别慌,尝试 DISM.exe 工具修复
- 完美解决systemctl start docker.service启动容器报错
- 如何在batch文件中取得该文件的路径