新冠病毒讓人們提高了對(duì)健康的關(guān)注度,這在某種程度上促使人們對(duì)生物傳感可穿戴設(shè)備產(chǎn)生極大興趣,進(jìn)而又推動(dòng)人們對(duì)更有效的解決方案的需求。人們需要更小的外形尺寸、更多的功能、更高的精度、更低的成本以及更長(zhǎng)的電池續(xù)航時(shí)間。對(duì)于設(shè)計(jì)人員來(lái)說(shuō),這會(huì)帶來(lái)一系列持續(xù)的挑戰(zhàn),因?yàn)樗麄冃枰獞?yīng)對(duì)緊迫的上市時(shí)間窗口和預(yù)算。有利的是,生物傳感技術(shù)取得了進(jìn)步,市面上出現(xiàn)了功能集成度更高的產(chǎn)品和更全面的設(shè)計(jì)解決方案。
本文將討論生物傳感器和可穿戴設(shè)備的發(fā)展趨勢(shì)以及設(shè)計(jì)人員所面臨的挑戰(zhàn)。然后介紹來(lái)自 Maxim Integrated 的心率和外周血氧飽和度 (SpO2) 生物傳感器模塊,并向開(kāi)發(fā)人員展示如何使用該模塊更有效地設(shè)計(jì)可穿戴設(shè)備,從而既能提供精確的心率和其他測(cè)量值,同時(shí)又不影響電池供電型移動(dòng)產(chǎn)品緊張的功耗預(yù)算。
生物傳感設(shè)計(jì)要求
雖然心率監(jiān)測(cè)是各種消費(fèi)類可穿戴設(shè)備的核心要求,但人們對(duì) SpO2 測(cè)量的興趣不斷增加。SpO2 測(cè)量曾經(jīng)主要是由運(yùn)動(dòng)員用來(lái)優(yōu)化其健身計(jì)劃的,現(xiàn)在已經(jīng)發(fā)現(xiàn)了更廣泛的應(yīng)用,特別是自我監(jiān)測(cè)與新冠病毒疾病相關(guān)的呼吸功能下降跡象。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),若要為習(xí)慣于使用可穿戴電子產(chǎn)品且注重健康的人群提供合適的解決方案,在成本、功耗、外形尺寸和重量方面都面臨著巨大的挑戰(zhàn)。
現(xiàn)在,許多生物傳感器都集成了模擬前端子系統(tǒng),因此開(kāi)發(fā)人員不必構(gòu)建健康與保健測(cè)量所需的信號(hào)鏈和后處理子系統(tǒng)。但在這些先進(jìn)的設(shè)備中,很少有設(shè)備正好具備適合可穿戴設(shè)備的功能組合。因此,它們并沒(méi)有解決在滿足用戶對(duì)微型生物傳感可穿戴設(shè)備的期望方面出現(xiàn)的設(shè)計(jì)挑戰(zhàn),這些可穿戴設(shè)備要與其他類型的領(lǐng)先可穿戴設(shè)備一樣不顯眼,其中包括智能手表、健身腕帶和真無(wú)線耳機(jī)。
當(dāng)開(kāi)發(fā)人員需要為這些流行的可穿戴設(shè)備類型增加一種或多種生物傳感功能時(shí),可能會(huì)出現(xiàn)與設(shè)計(jì)集成相關(guān)的更多挑戰(zhàn)。與所有其他類型的電池供電型個(gè)人移動(dòng)電子產(chǎn)品一樣,即使對(duì)最小的產(chǎn)品,消費(fèi)者也會(huì)隱含地要求延長(zhǎng)電池續(xù)航時(shí)間,他們通常會(huì)根據(jù)電池續(xù)航時(shí)間以及成本和功能來(lái)選擇這些產(chǎn)品。
為了滿足這些組合的需求,開(kāi)發(fā)人員可以轉(zhuǎn)而使用 Maxim Integrated 的 MAXM86146 生物傳感模塊來(lái)設(shè)計(jì)定制設(shè)備,并使用基于 MAXM86146 的 MAXM86146EVSYS 評(píng)估系統(tǒng)來(lái)進(jìn)行快速原型開(kāi)發(fā)。
生物傳感模塊提供了直接替代式解決方案
Maxim Integrated 的 MAXM86146 生物傳感模塊采用 4.5 x 4.1 x 0.88 毫米 (mm) 38 引腳封裝,是一款直接替代式解決方案,旨在幫助加快開(kāi)發(fā)電池供電型緊湊型健康與保健可穿戴設(shè)備。為了同時(shí)滿足對(duì)延長(zhǎng)電池續(xù)航時(shí)間和生物傳感功能的需求,該模塊在將功耗降至最低的同時(shí),保持著對(duì)心率和 SpO2 的快速準(zhǔn)確測(cè)量。
除了兩個(gè)集成光電二極管,該模塊還包括 Maxim Integrated 的 MAX86141 雙通道光學(xué)模擬前端 (AFE) 和基于 Arm Cortex-M4 的微控制器,后者是 Maxim Integrated 的 MAX32660 Darwin 微控制器的生物傳感優(yōu)化版(圖 1)。
1.jpg
圖 1:Maxim Integrated 的 MAX86146 生物傳感模塊在緊湊型封裝中集成了光學(xué) AFE、微控制器和光電二極管。(圖片來(lái)源:Maxim Integrated)
集成式 MAX86141 每秒采集 25 個(gè)樣本 (sps) 時(shí),功耗僅為 10 微安 (μA),它提供了一個(gè)綜合光學(xué) AFE 子系統(tǒng),旨在控制用于測(cè)量心率和 SpO2 的多個(gè)發(fā)光二極管。光學(xué)心率監(jiān)測(cè)器通常使用光電容積描記法 (PPG),可監(jiān)測(cè)與每次心臟搏動(dòng)相關(guān)的外周血容量變化。對(duì)于這種測(cè)量,這些設(shè)備通常使用波長(zhǎng)為 540 納米 (nm) 的綠光,這種光會(huì)被血液吸收,并且由于綠光穿透組織的深度比許多其他波長(zhǎng)要淺,所以產(chǎn)生的偽影比較少。光學(xué)脈搏血氧計(jì)使用紅色 LED(通常為 660 nm)和紅外 (IR) LED(通常為 940 nm)來(lái)測(cè)量血紅蛋白和脫氧血紅蛋白之間的吸收差異,這是光學(xué) SpO2 測(cè)量法的基礎(chǔ)技術(shù)(請(qǐng)參閱利用現(xiàn)成元器件設(shè)計(jì)低成本脈搏血氧儀)。
為了執(zhí)行這些光學(xué)測(cè)量,開(kāi)發(fā)人員必須確保光電二極管信號(hào)采集與來(lái)自相應(yīng) LED 的光輸出脈沖精確同步。MAXM86146 模塊集成的 MAX86141 AFE 提供了獨(dú)立的信號(hào)鏈,分別用于 LED 控制和光電二極管信號(hào)采集。在輸出端,AFE 包括三個(gè)大電流、低噪聲 LED 驅(qū)動(dòng)器,可將脈沖傳輸?shù)接糜谛穆蕼y(cè)量的綠色 LED 以及用于 SpO2 測(cè)量的紅色和紅外 LED。在輸入端,AFE 提供兩個(gè)光電二極管信號(hào)采集通道,每個(gè)通道都有一個(gè)專用的 19 位模數(shù)轉(zhuǎn)換器 (ADC)。這兩個(gè)讀出通道可以單獨(dú)操作,也可以組合使用,以提供更大的輻射面積。
為控制 AFE LED 和光電二極管信號(hào)鏈,板載微控制器上運(yùn)行的固件可調(diào)整 AFE 設(shè)置,以最大程度提高信噪比 (SNR) 并降低功耗。隨著環(huán)境光的變化,集成式 MAX86141 中內(nèi)置的環(huán)境光校正 (ALC) 電路會(huì)對(duì)光照條件的逐漸變化作出響應(yīng)。但是,在某些情況下,例如當(dāng)用戶在陰影區(qū)域和明亮的陽(yáng)光間快速穿過(guò)時(shí),環(huán)境光可能會(huì)快速變化,從而導(dǎo)致 ALC 故障。考慮到這種常見(jiàn)的情況,MAX86141 加入了柵欄檢測(cè)和替換功能。在這里,該器件會(huì)識(shí)別環(huán)境測(cè)量值與先前樣本的較大偏差,并將個(gè)別外圍環(huán)境光數(shù)據(jù)樣本替換為與環(huán)境水平相對(duì)緩慢變化相一致的外推值。
由于該模塊的微控制器使用其固件來(lái)管理 AFE 操作,因此執(zhí)行精確的心率和 SpO2 測(cè)量所需的詳細(xì)操作對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)是透明的。該模塊使用固件設(shè)置自動(dòng)執(zhí)行這些測(cè)量,將原始數(shù)據(jù)和計(jì)算結(jié)果存儲(chǔ)在先進(jìn)先出 (FIFO) 緩沖區(qū)中,供系統(tǒng)主處理器通過(guò)模塊的 I2C 串行接口訪問(wèn)。
MAX86146 如何簡(jiǎn)化可穿戴設(shè)備的硬件設(shè)計(jì)
憑借廣泛的集成功能,MAX86146 生物傳感模塊只需要相對(duì)較少的額外元器件,就可以完成能夠提供精確心率和 SpO2 測(cè)量的設(shè)計(jì)。若要同步進(jìn)行心率和 SpO2 測(cè)量,MAX86146 可以與外部低噪聲模擬多路復(fù)用器集成,例如連接到分立式綠色、紅色和紅外 LED 的 Maxim Integrated MAX14689 開(kāi)關(guān)(圖 2)。
2.jpg
圖 2:要同步執(zhí)行心率和 SpO2 測(cè)量,除了合適的 LED、模擬多路復(fù)用器(MAX14689,左側(cè))和加速計(jì),Maxim Integrated 的 MAX86146 生物傳感模塊幾乎不需要其他元器件,就可以在測(cè)量的同時(shí)檢測(cè)運(yùn)動(dòng)。(圖片來(lái)源:Maxim Integrated)
此外,MAXM86146 還設(shè)計(jì)成使用來(lái)自三軸加速計(jì)的運(yùn)動(dòng)數(shù)據(jù),以在心率測(cè)量期間校正用戶的運(yùn)動(dòng),并在 SpO2 測(cè)量期間檢測(cè)運(yùn)動(dòng),后者需要用戶在測(cè)量的短時(shí)間內(nèi)保持靜止?fàn)顟B(tài)。在這里,開(kāi)發(fā)人員可以將固件支持的加速計(jì)直接連接到 MAXM86146 的 SPI 端口,或者將通用加速計(jì)連接到主機(jī)處理器。
主機(jī)連接選項(xiàng)為器件選擇提供了更大的靈活性,只需要一個(gè)通用三軸加速計(jì),例如 Memsic 的 MC3630,采樣速度可達(dá) 25 sps。盡管如此,開(kāi)發(fā)人員仍需要確保加速計(jì)數(shù)據(jù)與心率數(shù)據(jù)采樣同步。為此,板載微控制器根據(jù)需要對(duì)加速計(jì)樣本進(jìn)行內(nèi)部抽取或插補(bǔ),以補(bǔ)償心率數(shù)據(jù)和加速計(jì)數(shù)據(jù)之間的漂移。
快速啟動(dòng) MAXM86146 評(píng)估和快速原型開(kāi)發(fā)
雖然 MAXM86146 簡(jiǎn)化了系統(tǒng)硬件設(shè)計(jì),但對(duì)于希望評(píng)估 MAXM86146 或快速開(kāi)發(fā)其應(yīng)用原型的開(kāi)發(fā)人員來(lái)說(shuō),他們可以跳過(guò)硬件設(shè)計(jì),通過(guò) MAXM86146EVSYS 評(píng)估系統(tǒng)立即開(kāi)始使用該器件。MAXM86146EVSYS 通過(guò) USB 或 3.7 V 鋰聚合物 (LiPo) 電池供電,包括一個(gè)基于 MAXM86146 的 MAXM86146_OSB 光學(xué)傳感器板 (OSB),并通過(guò)軟線連接到支持低功耗藍(lán)牙 (BLE) 的 MAXSensorBLE 主數(shù)據(jù)采集板(圖 3)。
3.jpg
圖 3:Maxim Integrated 的 MAXM86146EVSYS 評(píng)估系統(tǒng)包括支持 BLE 的主處理器板和基于 MAXM86146 的傳感器板(用軟線連接)。(圖片來(lái)源:Maxim Integrated)
MAXSensorBLE 板集成了 Maxim Integrated 的 MAX32620 主機(jī)微控制器,以及 Nordic Semiconductor 的 NRF52832 藍(lán)牙微控制器。實(shí)際上,MAXSensorBLE 板可作為支持 BLE 的可穿戴式設(shè)計(jì)的完整參考設(shè)計(jì)。除了支持有源和無(wú)源元器件外,MAXSensorBLE 板設(shè)計(jì)還配備 Maxim Integrated 的 MAX20303 電源管理集成電路 (PMIC),該電路專為延長(zhǎng)可穿戴設(shè)備的電池續(xù)航時(shí)間而設(shè)計(jì)。
MAXM86146_OSB 光學(xué)傳感器板將 MAXM86146 生物傳感模塊與 MAX14689 模擬開(kāi)關(guān)和同步執(zhí)行心率和 SpO2 測(cè)量所需的整套 LED 組合在一起。此外,該板集成了一個(gè)支持固件的三軸加速計(jì),直接連接到 MAXM86146 模塊。
要使用 MAXM86146EVSYS 評(píng)估系統(tǒng)評(píng)估 MAXM86146 模塊,開(kāi)發(fā)人員使用 USB-C 或 LiPo 電池為系統(tǒng)供電,并根據(jù)需要將 BLE USB 加密狗插入運(yùn)行 Maxim Integrated MAXM86146 EV 系統(tǒng)軟件應(yīng)用程序的個(gè)人計(jì)算機(jī)。該 Windows 應(yīng)用程序提供了一個(gè)圖形用戶界面 (GUI),讓開(kāi)發(fā)人員能夠輕松修改 MAXM86146 設(shè)置,并能立即觀察以數(shù)據(jù)曲線圖形式呈現(xiàn)的結(jié)果。除了提供對(duì) MAXM86146 寄存器的訪問(wèn),該 GUI 還提供了直觀菜單,以供設(shè)置不同的操作模式和配置。例如,開(kāi)發(fā)人員可以使用 GUI 模式選項(xiàng)卡設(shè)置不同的 LED 序列(圖 4,上圖),使用 GUI 配置選項(xiàng)卡將這些 LED 序列應(yīng)用于心率和 SpO2 測(cè)量(圖 4,下圖)。
4.jpg
圖 4:Maxim Integrated 的 MAXM86146 EV 系統(tǒng)軟件 GUI 允許開(kāi)發(fā)人員通過(guò)定義不同的操作模式來(lái)評(píng)估 MAXM86146 的性能,例如定義 LED 序列(上圖),然后將這些序列應(yīng)用于心率和 SpO2 測(cè)量(下圖)。(圖片來(lái)源:Maxim Integrated)。
對(duì)于自定義軟件開(kāi)發(fā),Maxim Integrated 提供了 MAXM86146 適用的可穿戴設(shè)備 HRM 和 SpO2 算法軟件包。由于 MAXM86146 使用其集成微控制器固件提供心率和 SpO2 測(cè)量,因此從設(shè)備提取數(shù)據(jù)的過(guò)程非常簡(jiǎn)單。Maxim Integrated 軟件包演示了初始化設(shè)備,最后從 MAXM86146 FIFO 讀取數(shù)據(jù)并解析出各個(gè)數(shù)據(jù)項(xiàng)的過(guò)程(清單 1)。
副本
typedef struct{
uint32_t green_led_cnt;
uint32_t ir_led_cnt;
uint32_t red_led_cnt;
uint32_t hr;
uint32_t hr_conf;
uint32_t spo2;
uint32_t spo2_conf;
uint32_t scd_state;
} mes_repor_t;
typedef struct {
uint32_t led1;
uint32_t led2;
uint32_t led3;
uint32_t led4;
uint32_t led5;
uint32_t led6;
} max8614x_mode1_data;
typedef struct {
int16_t x;
int16_t y;
int16_t z;
} accel_mode1_data;
typedef struct __attribute__((packed)){
uint8_t current_operating_mode; // mode 1 & 2
// WHRM data
uint16_t hr; // mode 1 & 2
uint8_t hr_conf; // mode 1 & 2
uint16_t rr; // mode 1 & 2
uint8_t rr_conf; // mode 1 & 2
uint8_t activity_class; // mode 1 & 2
// WSPO2 data
uint16_t r; // mode 1 & 2
uint8_t spo2_conf; // mode 1 & 2
uint16_t spo2; // mode 1 & 2
uint8_t percentComplete; // mode 1 & 2
uint8_t lowSignalQualityFlag; // mode 1 & 2
uint8_t motionFlag; // mode 1 & 2
uint8_t lowPiFlag; // mode 1 & 2
uint8_t unreliableRFlag; // mode 1 & 2
uint8_t spo2State; // mode 1 & 2
uint8_t scd_contact_state;
} whrm_wspo2_suite_mode1_data;
void execute_data_poll( mes_repor_t* mesOutput ) {
[deleted lines of code]
status = read_fifo_data(num_samples, WHRMWSPO2_FRAME_SIZE, &databuf[0], sizeof(databuf));
if(status == SS_SUCCESS &&num_samples >0 && num_samples < MAX_WHRMWSPO2_SAMPLE_COUNT){
max8614x_mode1_data ppgDataSample;
accel_mode1_data accelDataSamp;
whrm_wspo2_suite_mode1_data algoDataSamp;
int sampleIdx = 0;
int ptr =0;
while( sampleIdx < num_samples ) {
ppgDataSample.led1 = (databuf[ptr+1] << 16) + (databuf[ptr+2] << 8) + (databuf[ptr+3] << 0);
ppgDataSample.led2 = (databuf[ptr+4] << 16) + (databuf[ptr+5] << 8) + (databuf[ptr+6] << 0);
ppgDataSample.led3 = (databuf[ptr+7] << 16) + (databuf[ptr+8] << 8) + (databuf[ptr+9] << 0);
ppgDataSample.led4 = (databuf[ptr+10] << 16)+ (databuf[ptr+11] << 8)+ (databuf[ptr+12] << 0);
ppgDataSample.led5 = (databuf[ptr+13] << 16)+ (databuf[ptr+14] << 8)+ (databuf[ptr+15] << 0);
ppgDataSample.led6 = (databuf[ptr+16] << 16)+ (databuf[ptr+17] << 8)+ (databuf[ptr+18] << 0);
accelDataSamp.x = (databuf[ptr+19] << 8) + (databuf[ptr+20] << 0);
accelDataSamp.y = (databuf[ptr+21] << 8) + (databuf[ptr+22] << 0);
accelDataSamp.z = (databuf[ptr+23] << 8) + (databuf[ptr+24] << 0);
algoDataSamp.current_operating_mode= (databuf[ptr+25]);
algoDataSamp.hr = (databuf[ptr+26] << 8) + (databuf[ptr+27] << 0);
algoDataSamp.hr_conf = (databuf[ptr+28]);
algoDataSamp.rr = (databuf[ptr+29] << 8) + (databuf[ptr+30] << 0);
algoDataSamp.rr_conf = (databuf[ptr+31]);
algoDataSamp.activity_class = (databuf[ptr+32]);
algoDataSamp.r = (databuf[ptr+33] << 8) + (databuf[ptr+34] << 0);
algoDataSamp.spo2_conf = (databuf[ptr+35]);
algoDataSamp.spo2 = (databuf[ptr+36] << 8) + (databuf[ptr+37] << 0);
algoDataSamp.percentComplete = (databuf[ptr+38]);
algoDataSamp.lowSignalQualityFlag= (databuf[ptr+39]);
algoDataSamp.motionFlag = (databuf[ptr+40]);
algoDataSamp.lowPiFlag = (databuf[ptr+41]);
algoDataSamp.unreliableRFlag = (databuf[ptr+42]);
algoDataSamp.spo2State = (databuf[ptr+43]);
algoDataSamp.scd_contact_state = (databuf[ptr+44]);
mesOutput->green_led_cnt = ppgDataSample.led1;
mesOutput->ir_led_cnt = ppgDataSample.led2;
mesOutput->red_led_cnt = ppgDataSample.led3;
mesOutput->hr = algoDataSamp.hr / 10;
mesOutput->hr_conf = algoDataSamp.hr_conf;
mesOutput->spo2 = algoDataSamp.spo2 / 10;
mesOutput->spo2_conf = algoDataSamp.spo2_conf;
mesOutput->scd_state = algoDataSamp.scd_contact_state;
/* printf(" greenCnt= %d , irCnt= %d , redCnt = %d ,"
" hr= %d , hr_conf= %d , spo2= %d , spo2_conf= %d , skin_contact = %d \r\n"
, mesOutput->green_led_cnt , mesOutput->ir_led_cnt , mesOutput->red_led_cnt
, mesOutput->hr , mesOutput->hr_conf , mesOutput->spo2 , mesOutput->spo2_conf , mesOutput->scd_state);
*/
[deleted lines of code]
清單 1:Maxim Integrated 的軟件包一段代碼展示了從生物傳感模塊提取測(cè)量值和其他數(shù)據(jù)的基本技術(shù)。(代碼來(lái)源:Maxim Integrated)
清單 1 演示了如何使用 C 語(yǔ)言例程 execute_data_poll() 從 MAXM86146 返回一些心率和 SpO2 讀數(shù)。在這里,該代碼將設(shè)備的 FIFO 讀入本地緩存 databuf,然后將 databuf 的內(nèi)容映射到幾個(gè)不同 C 語(yǔ)言軟件結(jié)構(gòu)的實(shí)例。除了將配置數(shù)據(jù)和其他元數(shù)據(jù)存儲(chǔ)到這些結(jié)構(gòu)實(shí)例中,該例程最后還在 mesOutput(mes_repor_t 結(jié)構(gòu)的一個(gè)實(shí)例)中提供心率和 SpO2 測(cè)量值。開(kāi)發(fā)人員只需取消對(duì)最后 printf 語(yǔ)句的注釋,即可在控制臺(tái)上顯示結(jié)果。
為了實(shí)現(xiàn)健康與保健可穿戴設(shè)計(jì),MAXM86146 的軟硬件大幅簡(jiǎn)化了開(kāi)發(fā)。但是,對(duì)于旨在獲得美國(guó)食品藥品監(jiān)督管理局 (FDA) 批準(zhǔn)的設(shè)備,開(kāi)發(fā)人員必須進(jìn)行適當(dāng)?shù)臏y(cè)試,以驗(yàn)證最終產(chǎn)品的 FDA 級(jí)性能。雖然 Maxim Integrated 的 MAXM86146 及其嵌入式算法提供了 FDA 級(jí)測(cè)量性能,但開(kāi)發(fā)人員需要確保整個(gè)系統(tǒng)滿足 FDA 的性能要求,而不僅僅是傳感器滿足該要求。
結(jié)語(yǔ)
人們對(duì)能夠提供精確心率和 SpO2 測(cè)量的可穿戴設(shè)備的興趣不斷增加,最近 SpO2 數(shù)據(jù)在監(jiān)測(cè)新冠病毒疾病癥狀中顯現(xiàn)的作用進(jìn)一步推波助瀾。雖然專用生物傳感器可以提供這些測(cè)量,但現(xiàn)有可用于可穿戴設(shè)備的解決方案很少能夠滿足設(shè)備更小、電池續(xù)航時(shí)間更長(zhǎng)、功能更多樣和結(jié)構(gòu)更緊湊的要求。如上所述,來(lái)自 Maxim Integrated 的微型生物傳感模塊在快速原型開(kāi)發(fā)套件的支持下,提供了一種高效的替代方案,以最小的功耗實(shí)現(xiàn) FDA 級(jí)的測(cè)量結(jié)果。
來(lái)源:Digi-Key
作者:Stephen Evanczuk
關(guān)鍵詞: 開(kāi)發(fā)人員 微控制器 解決方案 電池續(xù)航時(shí)間 光電二極管