0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >便携设备 > 基于Pixart PAH8013ES+STM32F411实现耳机血氧与心率检测方案

基于Pixart PAH8013ES+STM32F411实现耳机血氧与心率检测方案

来源: 大大通方案网
2019-08-02
类别:便携设备
eye 210
文章创建人 拍明

原标题:基于Pixart PAH8013ES+STM32F411实现耳机血氧与心率的检测方案

  耳朵是仅次于手指尖,毛细血管次丰富的地方,相对于手腕而言,光学式测量方案,从耳机会更容易到得到高质量的PPG信号,更有利于更高精准运动心率与血氧效果的测试。

  本方案是基于原相的PAH8013ES +主控SMT32F411+ Gsensor LIS3DH, 实现在耳机环境下实现高精性实时运动心率与血氧的测试方案,提供从硬件、FW、结构产品级应用指导。原相PAH8013是针对耳机应用方向的原相第二代光学PPG传感器,相比第一代8003产品,除性能提供外,运行功耗和待机功耗进一步降低,同时改用IR光源不可见光源测量PPG信号,改善第一代产品绿光方式会从耳朵背面看到绿光闪问题。PAH8013除测量运动心率外,还可以测量血氧饱和度。 血氧饱和度(SpO2)是血液中被氧结合的氧合血红蛋白(HbO2)的容量占全部可结合的血红蛋白(Hb)容量的百分比,即血液中血氧的浓度,它是呼吸循环的重要生理参数。PAH8013通过IR和红光 两种光源,通过检测打入皮肤反射回的 IR和红光的比例,通过算法算出相关的血氧值。

  STM32F411 是Cortex®-M4内核(具有浮点单元)的性能MCU,最高可工作在100 MHz主频,芯片内置高达256至512KB的Flash存储器和高达128KB的SRAM,为算法及后续的应用功能再扩展提供充足的空间。另外STM32F411 具有封装小,出色的低功耗性能,同时性价比高,更适用于对性能体积与价钱有需求的耳机产品。

  硬件部分

  PAH8013ES与STM32F411采用i2c方式的通信接口,并加上中断状态线INT和休眠控制线。其中8013的9脚与10脚接到SMT32F411的PB8和PA11的i2c接口连接脚,采用400HZ速率;8013的13脚中断信号INT1与MCU PA10连接,8013的休眠控制线PD与MCU PA12连接,其中INT1用于中断方式用于接到PPG数据;PD脚用于在不使用PAH8013ES时,通过MCU接高PD脚让PAH8013进入休眠省电状态。

  Gsensor Lis3dh采用SPI方式与STM32F411通信接口, Lis3dh的SPI接到STM32F411的PA15、PB4、PB4、PB5 的芯片脚上,通信速率1M,外加中断通信线INT1和INT2,使用STM32F411的PA8、PA9。

  板上的供电系统由一个3.3V和一个1.8V的LDO组成,给MCU、Gsensor及PAH8013ES提供所需的电压,各器件的IO通信电平使用3.3V。

  原理图

  主板部分

  

  光学小板模组部分

  

  PCB layout

  

  软件接口部分

  心率与血氧的算法放在STM32F411上运行,STM32F411每200ms从PAH8013读取40笔PPG数据及从LIS3DH读取约45笔左右 MENS,通过PPG数据与MENS数据运算出心率与血氧值,而MENS数据负责对运动作状态下的数据进行精度补尝。

  在主函数调用demo_ppg_dri_HRD_SPO2();启动心率与血氧测试,约8~10秒算出第一个心率与血氧值,之后约每秒更新一次数值

  心率与血氧的获取接口如下:

  pah8series_get_hr(&hr);------是获取心率数据的接口,由于算法是算浮点数,在数值显示直接显示整数部分

  SpO2_GetSpO2(&mySpO2);---是获取血氧数据的接口,输出整数,直接显示整数百分比就可

  

  PROTING简介

  pah8series_config.h文件的修改

  1.#define ENABLE_MEMS_ZERO 关掉

  如果系统的Gsensor还没有调好,可以先把此宏打开,先测试静态心率。此时会送入全0的Gsensor给算法,

  注意:Gsensor调好后,不论静态动态,都需送入真实的Gsensor数据

  2.设定Gensor量程,目前用的是-+8G量程,所以设定#define ALG_GSENSOR_MODE 4

  3.根据所用的芯片型号,Cover设计方式、IO通信方式,打开以下宏定义

  //-------Sensor IC Type---------//

  #define __PAH8013ES

  //-------Cover Type---------//

  #define _DI_COVER

  //-------IO Interface---------//

  #define _I2C

  main.c修改

  1.设定中断回调函数 gpio_in_interrupt_handler(GPIO_IN gpio)

  2.送入正确的系统的tick时间,get_tick_count()-----单位为ms

  pah_hrd_function.c修改

  1.启动ppg数据采样时,同时启动Gsensor数据采样,调用accelerometer_start();这样可确保数据同步,

  2.接收到的Gsensor数据送入指定的下面地方以便算法取得,accelerometer_get_fifo(&_state.pxialg_data.mems_data, &_state.pxialg_data.nf_mems);

  3.进入touch mode或离开心率模式,停止Gsensor数据采样,调用accelerometer_stop();

  关于同步说明,PPG第一笔数据要与Gsensor第一笔数据时间上对齐,这样算法在插补后,每个ppg时间点才能与gsensor时间点一致,否则可以导致运动心率异常。目前是以ppg中断去接收Gsensor

  pah_comm.c

  根据通信方式与STM平台接口,补全读、与及 连读接口代码

  bool pah_comm_write(uint8_t addr, uint8_t data)

  bool pah_comm_read(uint8_t addr, uint8_t *data)

  bool pah_comm_burst_read(uint8_t addr, uint8_t *data, uint16_t num)

  算法接口简介

  PXIALG_API uint32_t pah8series_version(void);---读取算法版本

  PXIALG_API uint32_t pah8series_query_open_size(void);----确认申请在系统上所需开内存大小

  PXIALG_API uint8_t pah8series_open(void *pBuffer);-----给算法开启pah8series_query_open_size确认的内存空间

  PXIALG_API uint8_t pah8series_close(void);---算法关闭

  PXIALG_API uint8_t pah8series_reset(void);---算法重启

  PXIALG_API uint8_t pah8series_set_param(pah8series_param_idx_t idx, float p1);---算法参考设定1

  PXIALG_API uint8_t pah8series_get_param(pah8series_param_idx_t idx, float *p1);;---算法参考设定2

  PXIALG_API uint8_t pah8series_get_hr(float *hr);---算法心率接口,0~255

  PXIALG_API uint8_t pah8series_get_hr_trust_level(int *hr_trust_level);---信号可信度,0~4,数值越大,可信度就越高

  PXIALG_API uint8_t pah8series_entrance(pah8series_data_t *pah8series_data);----PPG与Gsensor数据传入接口

  PXIALG_API uint8_t pah8series_get_signal_level(int ch, uint8_t *signal_level);---信号分数,0~100,,数值越大,信号就越好

  PXIALG_API uint8_t pah8series_get_motion_flag(uint8_t *motion_flag);---检查用户运动状态,0静止,1运动

  PXIALG_API uint8_t pah8series_get_wear_index(uint32_t expo_time[3], uint8_t led_dac[3], uint8_t checkRaw, int *wear_index);----判定用户佩戴松紧度,wear_index为0~3,0表示佩戴好,1~3数越大,佩戴越差

  PXIALG_API int SpO2_GetSpO2(float *spo2);---算法血氧接口,0~100

  PXIALG_API int SpO2_GetReadyFlag(uint8_t *ready_flag);---血氧算法标志

  调试log如下

  

  结构部分

  如何保证在耳道有持续稳定的测量,结构设计起到关键的作用。优秀的设计,能保证适用于各种人群的耳朵,并在运动中仍保证耳机与皮肤优秀的接触稳定性

  Cover设计结构如下图:

  1.最上方灰色部分rubber软胶套,增加在佩戴时的接触舒适性

  2.中间部分黑色为硬塑料模,此部分需要做要双料射出工艺,以有效在机构内部隔离串光问题

  2.下方灰色为8013光学模组PCB板,需与中间部分黑色硬塑件紧贴,如漏光会对性能有较大影响

  

  光学镜片开孔尺寸如下

  

  另外由于在运动中,耳机有存在持续震动现场,而能否保证sensor Cover与皮肤能有效接触到,对PPG信号有至关重要,而一个适合的耳塞套对保持耳机在运动中的稳定性起到重要作用。

  由于不同人的耳朵大小结构不同,一般会建议给用户至少配置如下3个尺寸(S、M、L),推存尺寸参考如下

  

  场景应用图

  

  产品实体图

  

  方案方块图

  

  核心技术优势

  1. 耳道环境下的连续实时的心率与血氧测试 

  2. 集成超低功率模式,休眠模式下低至1uA

  3. 触摸检测功能用不可见光(IR光源)

  4. 抗环境光干扰的光学涂层

  5. 集成的高精度的心率与血氧算法

  方案规格

  1. 测心率功耗:1370uA(一个红外灯工作,室内)

  2. 测血氧功耗:5810uA(一个红外灯与红灯工作,室内)

  3. 红外检测模式功耗: 30μA

  4. 休眠功耗:1uA

  5. 心率检测范围:0- 255 bpm

  6. 血氧检测范围:0 - 100%


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案