树莓派4b测量心率、血氧浓度值

本文介绍了如何使用MAX30102传感器在树莓派4B上测量心率和血氧浓度。传感器基于PPG技术,通过I2C接口与树莓派通信,测量数据经过处理后得出心率和血氧值。文章包含MAX30102的工作原理及源代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.MAX30102心率和血氧浓度值连接图

2.MAX30102工作原理

工作原理

MAX30102采用PPG光电容积脉搏波描记法(PhotoPlethysmoGraphy)测量数据,微控制器对这些数据进行处理运算过后得到心率血氧数值,再通过I2C或UART接口输出,大大降低了传感器的使用难度和对主控的资源占用。同时该传感器还配备有对应的上位机,可通过电脑直接读取数据。 

心率测量
含氧血红蛋白(HbO2)具有吸收红外光的特性,血液越红,吸收的红外光就越多。当心脏跳动时,血液被泵入和泵出,其反射光的强弱会发生变化(吸收红外光的量会变化),光电探测器接收透过皮肤的光线,将其转化为电信号,产生变化的波形。通过测量这些电信号的变化,可以计算出心率。

所以,只要得到的PPG信号比较理想,就能够较为准确的算出心率。但是,由于测量时总会出现某些干扰,所以我们需要进行滤波处理。然后得到在一段时间内的波峰数量即可计算出心率。

例如:在时间T秒内,有N个波峰。

Heart rate=(N/T)*60 = 60N / T (单位:次/min)

血氧测量
血液中有含氧血红蛋白(HbO2)和脱氧血红蛋白(Hb),这两个血红蛋白的吸收光谱不一样。脱氧血红蛋白(Hb)吸收更多的红光,而含氧血红蛋白(HbO2)吸收更多的红外光。而MAX30102能够同时发射红光和红外光,通过光电检测器检测反射光量,可以判断出红光、红外光被吸收的多少,从而推断出含氧血红蛋白(HbO2)和脱氧血红蛋白(Hb)所占的比例。最后,可以计算出血压中的氧含量。

R = (ACred / DCred) / (ACired / DCired)

    =((ir_max+ir_min)(red_max-red_min) )/ ((red_max+red_min)(irmax-ir_min))

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

SpO2即血氧浓度值,BPM是心率

3.源代码 

heartrate_monitor.py 

from max30102 import MAX30102
import hrcalc
import threading
import time
import numpy as np


class HeartRateMonitor(object):
    """
    A class that encapsulates the max30102 device into a thread
    """

    LOOP_TIME = 0.01

    def __init__(self, print_raw=False, print_result=False):
        self.bpm = 0
        if print_raw is True:
            print('IR, Red')
        self.print_raw = print_raw
        self.print_result = print_result

    def run_sensor(self):
        sensor = MAX30102()
        ir_data = []
        red_data = []
        bpms = []
        
        # data for show
        self.spos = []
        self.bpms = []

        # run until told to stop
        while not self._thread.stopped:
            # check if any data is available
            num_bytes = sensor.get_data_present()
            if num_bytes > 0:
                # grab all the data and stash it into arrays
                while num_bytes > 0:
                    red, ir = sensor.read_fifo()
                    num_bytes -= 1
                    ir_data.append(ir)
                    red_data.append(red)
                    if self.print_raw:
                        print("{0}, {1}".format(ir, red))

                while len(ir_data) > 100:
                    ir_data.pop(0)
                    red_data.pop(0)

                if len(ir_data) == 100:
                    bpm, valid_bpm, spo2, valid_spo2 = hrcalc.calc_hr_and_spo2(ir_data, red_data)
                    if valid_bpm:
                        bpms.append(bpm)
                        while len(bpms) > 4:
                            bpms.pop(0)
                        self.bpm = np.mean(bpms)
                        if (np.mean(ir_data) < 50000 and np.mean(red_data) < 50000):
                            self.bpm = 0
                            if self.print_result:
                                print("Finger not detected")
                        if self.print_result:
                            print("BPM: {0}, SpO2: {1}".format(self.bpm, spo2))
                            
                        if spo2 > 0:
                            self.bpms.ap
一般描述 MAX30102是一款集成式脉搏血氧仪和心率监测模块。 它包 括内部LED,光电探测器,光学元件以及环境光抑制的低 噪声电子元件。 MAX30102提供了一个完整的系统解决方 案,以简化移动设备和可穿戴设备的设计过程。 MAX30102采用1.8V单电源供电,内部LED采用独立的5.0V 电源供电。 通讯采用标准I2C兼容接口。 该模块可以通过 零电流软件关闭,使电源轨始终保持供电状态。 应用 ● 可穿戴设备 ● 健身助理设备 优点和特点 ● LED反射式解决方案中的心率监测器和脉搏血氧仪 传感器 ● 小巧的5.6mm x 3.3mm x 1.55mm 14引脚光学模块 • 集成的盖玻片提供最佳,稳定的性能 ● 移动设备的超低功耗操作 • 可编程采样率和LED电流以节省电力 • 低功耗心率监测器(<1mW) • 超低关断电流(0.7μA,典型值) ● 快速的数据输出能力 • 高采样率 ● 强大的运动神器弹性 • 高信噪比 ● -40°C至+ 85°C工作温度范围 订购信息出现在数据表的末尾。 系统图 应用 硬件框架 DRIVER 19-7740; Rev 0; 9/15 MAX30102 High-Sensitivity Pulse Oximeter and Heart-Rate Sensor for Wearable Health www.maximintegrated.com Maxim Integrated │ 2 绝对最大额定值 VDD到 GND ............................................ ........ .....- 0.3V至+ 2.2V GND到 PGND ............................................... .... ...- 0.3V至+ 0.3V X_DRV,VLED +至 PGND ......................................- 0.3V至+ 6.0V 所有其他引脚接 GND ..........................................- 0.3V到+ 6.0V 输出短路电流持续时间.......................连续 连续输入电流到任何端子....................±20mA ESD,人 体模型(HBM).............. ......................... 2.5kV以上 闩锁免 疫................................................ ...... .....±250毫安 连续功耗(TA= + 70°C) OESIP(降低5.5mW /°C + 70°C)............................ 440mW 工作温度范围.......................... -40°C至+ 85°C结 温.......... ............................................ .. + 90°C 焊接温度(回流焊)....................................... + 260°C 存储温度范围............................ -40°C至+ 105°C 封装热特性(注1) OESIP 结到环境热阻(θJA)........ 180°C / W 结至外壳热阻(θJC)................. 150°C / W 注1:使用四层板使用JEDEC规范JESD51-7中描述的方法获得封装热阻。 有关封装散热注意事项的详细信息,请参阅 www.maximintegrated.com/thermal-tutorial. 电气特性 除非另有说明,典型值为TA= 1.8V,VIR_LED += VR_LED += 5.0V,TA= -40°C至+ 85°C。 + 25°C)(注2) 参数 符号 条件 MIN TYP MAX 单位 电源 电源电压 VDD 由RED和IR计数容差保证 1.7 1.8 2.0 V LED电源电压 R_LED +或IR_LED +到PGND VLED + 通过LED驱动器的PSRR保证(仅限 R_LED +和IR_LED +) 3.1 3.3 5.25 V SpO2和HR模式,PW =215μs, 50sps 600 1200 仅IR模式,PW =215μS,50sps 600 1200 关机时的电源电流 ISHDN TA= + 25°C,MODE = 0x80 0.7 10 µA 脉冲氧化/心率传感器特性 ADC分辨率 18 位 红色ADC计数(注 3) REDC RED_PA = 0x0C,LED_PW = 0x01, SPO2_SR = 0x05, ADC_RGE = 0x00,TA= + 25°C 55536 65536 75536 计数 MAX30102 High-Sensitivity Pulse Oximeter and Heart-Rate Sensor for Wearable Health www.maximintegrated.com Maxim Integrated │ 3 IR ADC计数(注3) IRC IR_PA = 0x0C,LED_PW = 0x01, SPO2_SR = 0x05 ADC_RGE = 0x00,TA= + 25°C 55536 65536 75536
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值