使用 PPG/ECG 组合式可穿戴生物传感器模块,进行符合 FDA 认证的心脏测量

作者:Stephen Evanczuk

投稿人:Digi-Key 北美编辑

消费者需要从智能手表、健康腕带和其他电池供电的移动设备,获取更精确的健身和心脏健康数据。为了满足这些期望,开发人员不得不努力应对复杂而又昂贵的多元件解决方案。虽然这些解决方案最终能够提供高精确度,但为此付出的代价是更高的功耗、更大的占用空间、更长的开发时间。我们需要更简单、更精巧的解决方案。

本文将介绍基于 Maxim Integrated 的高度集成模块来构建此类解决方案的途径。首先,本文将简要讨论精确心脏功能监测的相关难点。然后,本文将展示开发人员如何能够使用该模块,在活动期间执行符合 FDA 认证的心率监测,以及在静息时执行心电图 (ECG) 测量。

心脏功能测量

医疗机构通常依赖于 ECG(也称为 EKG)来提供有关心脏健康的最详细数据,这个过程中没有侵入性治疗。ECG 设备可捕捉心动周期内的心肌去极化和复极化产生的波形(图 1)。这个过程需要在人体周围的重要位置放置 10 个电极。然后,它们组合形成 12 对或导联,设计成与在心脏组织体积上产生的不同波形图轴对齐。

心电图 (EKG) 与光电容积描记图 (PPG) 的对比图片

图 1:虽然心电图(ECG 或 EKG)提供更多细节,但更为简单的光电容积描记图 (PPG) 也可提供有用的信息,例如此处所示的心室早发性收缩 (PVC) 的发生。(图片来源:维基百科)

例如,一个放置在患者腿部的电极可与另一个电极配对,以提供一个导联,能够采集心室去极化波形下降穿过心脏组织的详细信息。医疗级 12 导联 ECG 设备使用这种方法,结合来自不同电极对的数据,沿着与心动周期的每个相位相关的最佳轴来测量波形。

相反,消费型健身器材执行的 ECG 测量通常仅使用一个电极对,因而此类设备的心电图被称为单导联 ECG。虽然单导联 ECG 可能缺少心脏病医师进行诊断所需的详细信息,但它提供了有关心脏功能的足够信息,以提醒医疗机构可能需要使用 12 导联 ECG 进行准确诊断的病理。

在实践中,由于测量很容易被用户的剧烈运动破坏,因而健身器材中的单导联 ECG 测量尤其可能出现问题。任何肌肉运动都会产生肌肉纤维去极化的相应电波形,这些波形穿过导电的组织块传播。大肌肉群的运动可能产生生物电位,很容易阻碍从更深埋的信号源(例如心肌)发出的信号。因此,要进行精确的 ECG 测量,就要求患者保持静止,无论是躺在医院里,还是在体育锻炼期间。

事实上,尝试对正在进行体育运动的用户执行单导联 ECG 测量,很可能会以失败告终。出于这个原因,在体育运动过程中提供心率数据的个人健身器材通常依赖于光电容积描记图 (PPG) 方法。

PPG 的最基本工作方式是使用光学传感器,随着每次血液脉动改变血管的容积,测量光反射(或吸收)的相对差。最早的消费型心率监测仪使用这种基本方法,但现在的健身产品通常采用一种更加先进的 PPG,用于测量周边血氧饱和度 (SpO2) 水平。这样可让用户更深入了解他们对运动的生理反应。

SpO2 测量充分利用在红光和红外线 LED 照射时充氧血和缺氧血展现的不同吸收光谱,发射光谱以两种相应的血红蛋白状态为中心(请参见“为健身器材添加心率监测功能”)。虽然 SpO2 的重点是两种状态之间的比率,但可以通过测量光学信号的峰间周期时间,从相同的数据提取基本心率测量数据。消费型脉搏血氧计使用这种方法,提供更可靠的心率测量,而不受体育运动、用户个体差异或其他因素的影响。

虽然基于光学 PPG 的方法已经在健身器材中使用多年,但单导联 ECG 技术近期已经在苹果手表等消费型产品中兴起。在竞争压力的驱动下,健身腕带、智能手表和其他个人电子设备的制造商越来越需要在他们的产品中同时提供 PPG 和单导联 ECG 功能。

但对于开发人员而言,仅实现其中一种功能就带来了很多困难。双 LED PPG 设计要求我们能够最好地驱动红光和红外线 LED、捕捉反射或吸收的光线、同步结果,最终计算心率和 SpO2。单导联 ECG 设计需要掌握有关构建模拟信号路径的广泛专业知识,能够处理与任何活动生物电位现象测量相关的噪声信号。

也许最基本的问题是实现两种类型设计和同步它们的结果所必需的电源要求、设计尺寸和零件数量,对于大多数电池供电的移动产品而言,这是一项非常困难的设计工作。为了解决这些问题,Maxim Integrated 的 MAX86150 生物传感器模块提供了几乎直接置入的解决方案,可为任何功率受限的设计添加 PPG 和 ECG 功能。

生物传感器模块

MAX86150 模块专门针对便携式系统而设计,将双 LED PPG 和 ECG 的子系统组合在单个器件中,外形尺寸为 3.3 x 6.6 x 1.3 mm。对于光学测量,MAX86150 将完整的输入/输出光信号路径与红光 LED、红外线 LED 和光电二极管组合在一起,它们位于封装中内置的玻璃盖后面(图 2)。

Maxim 的 MAX86150 PPG 子系统示意图

图 2:MAX86150 PPG 子系统将所有必需元器件集成在一起,包括 LED 输出和光电二极管输入的信号路径,从而提供基于光学技术的健身测量。此外,红光 LED、红外线 LED 和光电二极管器件位于玻璃盖后面。(图片来源:Maxim Integrated)

在 PPG 信号路径方面,该模块集成了环境光消除(ALC) 电路、19 位连续时间过采样三角积分 (ΔΣ) 模数转换器 (ADC) 以及离散时间滤波器(进一步消除噪声)。在 ALC 内部,数模转换器 (DAC) 通过消除环境光,帮助提高输入动态范围。为了帮助开发人员平衡功耗和性能,该器件的集成式 LED 驱动器可以进行编程,提供从 0 毫安 (mA) 到 100 毫安的电流,电流脉冲宽度在 50 微秒 (μs) 到 400 微秒范围内。

为了进一步节省电能,开发人员可以实现接近感应功能,让该器件在测量之间保持在低功耗状态下。在这种状态下,器件在开发人员编程设定的最低功耗水平下驱动红外线 LED。当光电二极管检测到有用的信号时(表示靠近用户的手指或其他皮肤表面),将会生成中断,器件返回到正常工作状态,继续进行采样。

为了进行 ECG 测量,MAX86150 集成了一个完整的差分信号路径,仅需两个干电极和其他几个元器件,即可实现单导联 ECG(图 3)。与任何小信号应用相同,环境中存在的任何数量的噪声源,都会持续向测量精度提出挑战。在健身应用中,相关心脏波形不仅受到与肌肉运动和其他生理过程相关的生物电位的影响,通常还受制于来自外部射频源、线路频率和电气噪声的干扰。

MAX86150 ECG 子系统通过用于抑制共模信号的复杂信号链,来处理 ECG 测量中的信号噪声。

Maxim 的 MAX86150 模块包括完整单导联 ECG 子系统的示意图

图 3:除了 PPG 子系统之外,MAX86150 模块还包括完整的单导联 ECG 子系统,仅需要一对干电极和少量其他元器件,即可为微控制器提供 ECG 测量数据。(图片来源:Maxim Integrated)

该器件的集成式 ECG 模拟前端包括斩波放大器、滤波器和可编程增益放大器 (PGA),其设计目的是最大程度提高心脏波形的信噪比。在该信号链之后,还有一个 18 位 ΔΣ ADC,可转换每个样本,并将所有结果推送到器件的共享 32 样本 FIFO,因而无需主机微控制器进行持续数据轮询。

为了进一步减少功耗和限制数据访问要求,开发人员可以调节 ECG 和 PPG 子系统的采样率,ECG 的采样率范围是从最高 3200 样本每秒 (sps) 到 200 sps,对于 PPG,最低采样率可以达到 10 sps。但是,在需要同时进行 ECG 和 PPG/SpO2 采样以及同步结果的高级应用中,开发人员也可以使用该器件。如果开发人员需要应用这种方法,使用两个子系统的不同最小采样率,则该器件只使用最新 PPG 样本加载 FIFO,在该子系统的下一个采样周期提供新的 PPG 数据。

设计实现

正如上文所述,由于 MAX86150 集成了 ECG 和 PPG 测量所需的核心功能,我们只需一对干电极以及少数用于解耦和缓冲的其他元器件,即可形成完整的 MAX86150 硬件接口。因此,开发人员可将微控制器与 MAX86150 以及少数外部元器件组合在一起,实现先进的生物电位测量系统(图 4)。开发人员甚至能够使用 Maxim Integrated 的 MAX86150EVSYS 评估系统,快速开始研究 ECG/PPG 应用,从而跳过硬件设计步骤。

Maxim Integrated 的 MAX86150 示意图(点击放大)

图 4:开发人员能够将 Maxim Integrated 的 MAX86150 和主机微控制器以及少数其他元器件组合在一起,在移动健身产品中实现先进的心脏功能测量。(图片来源:Maxim Integrated)

MAX86150EVSYS 评估系统可同时用作即时应用平台和参考设计,它包括 MAX86150 板、MAX32630FTHR 板和 500 毫安小时 (mAh) 锂聚合物电池(图 5)。与 MAX86150 相同,MAX86150 板提供两个不锈钢干电极,以及上文提及的其他元器件。

MAX32630FTHR 板通过针座连接,它提供了支持蓝牙的完整系统,基于 Maxim Integrated 的 MAX32630 微控制器构建,还可为附带的电池组进行充电和电源管理。

Maxim Integrated 的 MAX86150EVSYS 评估系统图片

图 5:Maxim Integrated 的 MAX86150EVSYS 评估系统提供带有干电极的 MAX86150 板(左侧)、基于 MAX32630 的 MAX32630FTHR 开发板和电池组,以便开发人员能够快速开始评估心脏测量方法。(图片来源:Maxim Integrated)

这个开箱即用的评估系统带有 MAX32630FTHR 板,已预装基础 MAX86150 应用的固件,让开发人员能够即时开始探索 ECG 和 PPG 测量。开发人员只需通过蓝牙将板组连接至 Windows PC 系统,并针对 MAX86150EVSYS 套件启动 Maxim Integrated 基于 Windows 的图形用户界面评估套件软件。该 GUI 软件包显示来自 MAX86150 的 ECG 和 PPG 数据,让开发人员能够轻松地修改器件设置,以检测对性能的影响(图 6)。

Maxim Integrated MAX86150EVSYS 评估系统的相关软件应用程序图片(点击放大)

图 6:该公司的相关软件应用程序连接到 Maxim Integrated 的 MAX86150EVSYS 评估系统,让开发人员能够轻松地检测 MAX86150 执行的 ECG 和 PPG 测量。(图片来源:Maxim Integrated)

对于准备构建定制应用程序的开发人员,Maxim Integrated 的 MAX86150 驱动器软件包提供了核心器件功能的源代码。在各种功能中,该驱动器软件包展示了:如何通过使用器件的 FIFO,减少主机处理器保持其活动状态所需的时间,从而最大程度地降低功耗。这种方法的核心是,软件要依赖于一对中断处理程序来响应器件事件,然后在数据样本可用时采取行动。

这种中断驱动的方法从初始化例程开始。这种方法会注册一个器件中断请求 (IRQ) 处理程序 max86xxx_irq_handler()。发生中断事件时,此处理程序检查可用的器件数据,如果需要,还会调用单独的 FIFO 处理程序 (max86xxx_fifo_irq_handler()),并执行重要的内务处理功能,包括检查器件芯片温度和 VDD 水平(清单 1)。

复制 int max86xxx_irq_handler(void* cbdata) {     struct max86xxx_dev *sd = max86xxx_get_device_data();     int ret;     union int_status status;       status.val[0] = MAX86XXX_REG_INT_STATUS1;     ret = max86xxx_read_reg(status.val, 2);     if (ret < 0) {         printf("I2C Communication error.err: %d.%s:%d\n",             ret, __func__, __LINE__);         return -EIO;     }       if (status.a_full || status.ppg_rdy         || status.ecg_imp_rdy || status.prox_int) {         max86xxx_fifo_irq_handler(sd);     }       if (status.die_temp_rdy)         max86xxx_read_die_temp(sd);       if (status.vdd_oor) {         sd->vdd_oor_cnt++;         printf("VDD Out of range cnt: %d\n", sd->vdd_oor_cnt);     }       return 0; } 

清单 1:在 Maxim Integrated 的 MAX86150 驱动程序软件包中,这个片段显示了:器件 IRQ 处理程序如何通过仅在样本可用或发生事件(例如接近中断)时,调用单独的 FIFO 处理程序,以最大程度地减少处理。(代码来源:Maxim Integrated)

当由 IRQ 处理程序调用时,FIFO 处理程序执行所需的低级操作,以重新组合 86150 存储在 FIFO 缓冲区中的传感器读数。此处,该处理程序遍历 FIFO 缓冲区中的可用样本,重新组合三个字节,这些字节用于存储来自 ECG 通道的 18 位 ADC 和 PPG 通道的 19 位 ADC 的数据(清单 2)。

复制 void max86xxx_fifo_irq_handler(struct max86xxx_dev *sd) {    ...num_samples = max86xxx_get_num_samples_in_fifo(sd);    ...num_channel = max86xxx_get_fifo_settings(sd, &fd_settings);    ...num_bytes = num_channel * num_samples * NUM_BYTES_PER_SAMPLE;     fifo_buf[0] = MAX86XXX_REG_FIFO_DATA;     ret = max86xxx_read_reg(fifo_buf, num_bytes);    ...fifo_mode = max86xxx_get_sensor_mode(sd, fd_settings, num_channel);    ...sensor = get_sensor_ptr(sd, fifo_mode);     for (i = 0; i < num_samples; i++) {         offset1 = i * NUM_BYTES_PER_SAMPLE * num_channel;         offset2 = 0;           for (j = 0; j < MAX_FIFO_SLOT_NUM; j++) {             tmp_fd = (fd_settings >> (4 * j)) & 0x000F;             if (tmp_fd) {                 index = offset1 + offset2;                 tmp = ((int)fifo_buf[index + 0] << 16)                         | ((int)fifo_buf[index + 1] << 8)                         | ((int)fifo_buf[index + 2]);                   samples[tmp_fd] = tmp;                   max86xxx_preprocess_data(&samples[tmp_fd], 1);                 offset2 += NUM_BYTES_PER_SAMPLE;             }         }    ...sensor->report(sensor, samples);    ...}       if (sensor->update)         sensor->update(sensor);       return;    ... 

清单 2:在 Maxim Integrated 的 MAX86150 驱动程序软件包中,这个片段显示了使用 FIFO 处理程序从 MAX86150 FIFO 中提取采样数据,其中每个采样以三字节格式存储。(代码来源:Maxim Integrated)

总结

除了基于 PPG 的心率测量之外,单导联 ECG 功能已逐渐成为智能手表、健身腕带和其他移动设备的一种日益增长的需求。但事实证明,在此类可穿戴设备中实现实用、精确、低功耗的 PPG 和 ECG 功能非常困难。

Maxim Integrated 的 86150 生物电位传感器模块带有集成的 PPG 和 ECG 子系统,可提供有效的解决方案。86150 模块与 MCU 相结合,使开发人员能够快速实现能够提供心脏功能详细数据的移动健康和健身产品。

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 Digi-Key Electronics 的观点、看法和意见,也不代表 Digi-Key Electronics 官方政策。

关于此作者

Stephen Evanczuk

Stephen Evanczuk 拥有 20 多年的电子行业编辑经验,主题涉猎广泛,涵盖硬件、软件、系统以及包括物联网在内的各种应用。他拥有神经网络领域的神经科学博士学位,曾经从事航空航天领域大规模分布式安全系统和算法加速方法方面的工作。目前,他不是在撰写技术和工程文章,就是在研究深度学习在识别和推荐系统方面的应用。

关于此出版商

Digi-Key 北美编辑