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

发布时间:2024-06-17  

耳朵是仅次于手指尖,毛细血管次丰富的地方,相对于手腕而言,光学式测量方案,从耳机会更容易到得到高质量的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。

原理图

主板部分

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

光学小板模组部分

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

PCB layout

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

软件接口部分

心率与血氧的算法放在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);---是获取血氧数据的接口,输出整数,直接显示整数百分比就可

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

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如下

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

结构部分

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

Cover设计结构如下图:

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

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

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

光学镜片开孔尺寸如下

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

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

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

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

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

► 场景应用图

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

► 产品实体图

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

► 方案方块图

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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>