赞
踩
PulseSensor 是一款用于心率测量、脉搏波形测量和 HRV 分析的光电反射式模拟传感器。将其佩戴于手指、耳垂等处,通过导线连接可将采集到的模拟信号传输给 Arduino、STM32 和 STC12C5A 等具有模拟采集功能的单片机并转换为数字信号,再通过单片机的简单计算后就可以得到心率数值,Pulse Sensor 是一款开源硬件,非常方便二次开发。
电路板直径:16mm
电路板厚度:1.2mm
LED 峰值波长:515nm(绿光)
供电电压:3.3~5v
检测信号类型:光反射信号(PPG)
输出信号类型:模拟信号
信号放大倍数:330 倍
输出信号范围:0~VCC
电流大小:~4ma(5v 下)
分辨率:1 bpm
采样率:500Hz(由程序设定)
传统的脉搏测量方法主要有三种:一是从心电信号中提取;二是从测量血压时压力传感器测到的波动来计算脉率;三是光电容积法。前两种方法提取信号都会限制病人的活动,如果长时间使用会增加病人生理和心理上的不舒适感。而光电容积法脉搏测量作为监护测量中最普遍的方法之一,其具有方法简单、佩戴方便、可靠性高等特点。
**光电容积法的基本原理是利用人体组织在血管搏动时造成透光率不同来进行脉搏测量的。**其使用的传感器由光源和光电变换器两部分组成,通过绑带或夹子固定在病人的手指或耳垂上。光源一般采用对动脉血中氧和血红蛋白有选择性的一定波长(500nm~700nm)的发光二极管。当光束透过人体外周血管,由于动脉搏动充血容积变化导致这束光的透光率发生改变,此时由光电变换器接收经人体组织反射的光线,转变为电信号并将其放大和输出。由于脉搏是随心脏的搏动而周期性变化的信号,动脉血管容积也周期性变化,因此光电变换器的电信号变化周期就是脉搏率。
根据相关文献和实验结果,560nm波长左右的波可以反映皮肤浅部微动脉信息,适合用来提取脉搏信号。本传感器采用了峰值波长为515nm的绿光LED,型号为AM2520,而光接收器采用了APDS-9008,这是一款环境光感受器,感受峰值波长为565nm,两者的峰值波长相近,灵敏度较高。此外,由于脉搏信号的频带一般在0.05~200Hz之间,信号幅度均很小,一般在毫伏级水平,容易受到各种信号干扰。在传感器后面使用了低通滤波器和由运放MCP6001构成的放大器,将信号放大了330倍,同时采用分压电阻设置直流偏置电压为电源电压的1/2,使放大后的信号可以很好地被单片机的AD采集到。
可以看到在传感器的背面,引出了三个脚,即传感器的接口, 红框中的 3 根线,标有S的为模拟信号输出线(最左边);标有+的为电源输入线(中间);标有-的为地线(最右边)。
通过发射光源,然后根据光源返回的效果输出ADC数据。由于手指上布满毛细血管,而毛细血管会随着心率而跳动,这就导致传感器发射和接收光的效果不同,从而达到ADC输出效果不同,比如下图就是ADC的输出图:
因此检测心率的方式很简单:测出两个ADC峰值间的时长,假设这个时长为T,单位是毫秒,那么1分钟的心率假设为S,则:
S = 60000/T 次/秒
程序设计需要考虑的地方:
1. 传感器检测时,必须手指按在传感器上,否则检测的数据是不对的,所以首先要判断传感器是否有手指接触。
2. 如何正确的获取两次峰值数据?
程序逻辑:
if(halPulseSensorTouch()) { if( (refPeak = halPulseSensorPeakFitting()) == 0 ) goto RET; // First Beat if(halPulseSensorGetNextBeat(refPeak) == 0) goto RET; // Clear and Start Timer HAL_PULSE_SENSOR_TIMER_CLEAR(); HAL_PULSE_SENSOR_TIMER_START(); // Skip the peak value HAL_PULSE_SENSOR_DELAY_MS(200); // Second Beat secondBeat = halPulseSensorGetNextBeat(refPeak); // Stop Timer and get the delay time HAL_PULSE_SENSOR_TIMER_STOP(); if(secondBeat == 0) goto RET; if( (beatTime = (uint16)HAL_PULSE_SENSOR_TIMER_GET_TIME()) == 0 ) goto RET; if( (dat.heartRate = (uint16)60000 / beatTime) !=
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。