脈搏血氧儀可測量外周血氧飽和度 (SpO2),該指標(biāo)反映了心肺系統(tǒng)向身體提供富氧血液的效率。運(yùn)動(dòng)員使用 SpO2 測量值來衡量他們?cè)阱憻捴械呐Τ潭龋@種測量在新冠肺炎流行期間變得更加重要。醫(yī)護(hù)人員很關(guān)注 SpO2 的下降,因?yàn)樗且鹦鹿诜窝椎?SARS-CoV-2 病毒對(duì)肺組織造成損傷的預(yù)警信號(hào)。 對(duì)于被要求在家中隔離的癥狀輕微的感染者來說,如果有一臺(tái)低成本脈搏血氧儀隨時(shí)可以使用,那么將有助于判斷病情并獲得及時(shí)就醫(yī)所需的警告信息。 本文簡要討論了新冠肺炎的癥狀和監(jiān)測 SpO2 的需求。然后向開發(fā)人員展示如何使用 Microchip Technology 數(shù)字信號(hào)控制器 (DSC) 和一些附加器件,設(shè)計(jì)一個(gè)低成本的脈搏血氧儀,從而針對(duì)新冠肺炎感染后期的癥狀,為家庭用戶提供預(yù)警。 新冠肺炎和測量血氧飽和度的需求 由于 SARS-CoV-2 病毒的破壞作用,新冠肺炎會(huì)表現(xiàn)出各種癥狀。對(duì)于醫(yī)護(hù)人員來說,一個(gè)特別令人擔(dān)憂的癥狀與肺組織損傷有關(guān),它將導(dǎo)致呼吸系統(tǒng)受損,攝氧量減少。盡管醫(yī)生會(huì)逐一使用胸部 X 光檢查和計(jì)算機(jī)斷層 (CT) 掃描來確認(rèn)這一階段的新冠肺炎,但他們往往會(huì)使用 SpO2 測量值作為早期指標(biāo)。 通過由患者動(dòng)脈抽取樣本并分析血?dú)馑剑芍苯哟_定動(dòng)脈血氧飽和度 (SaO2),而 SpO2 測量是一種非侵入式的替代測量方法。雖然某些情況下可能需要直接測量動(dòng)脈血?dú)猓?SpO2 測量已被證明可以提供可靠的 SaO2 估計(jì)值。也許最重要的是,在家即可使用光學(xué)脈搏血氧儀進(jìn)行測量,而測量結(jié)果跟臨床環(huán)境一樣可靠。 光學(xué)脈搏血氧儀利用脫氧血紅蛋白 (Hb) 和氧合血紅蛋白 (HbO2) 的光吸收差異來測量 SpO2。在富含氧氣的肺內(nèi),紅細(xì)胞中的血紅蛋白最多可與四個(gè)氧分子迅速形成可逆性結(jié)合,從而生成 HbO2,該分子對(duì)波長為 940 nm 的光吸收率高于波長為 660 nm 的光(圖 1)。 ![]() 圖 1:脈搏血氧儀利用了氧合血紅蛋白 (HbO2) 與脫氧血紅蛋白 (Hb) 吸收光譜之間的差異。(圖片來源:維基百科) 當(dāng)攜帶 HbO2 的紅細(xì)胞通過外周血管時(shí),血氧分壓(混合氣體中單一氣體成分的壓力)較低,血紅蛋白對(duì)氧的親和力下降,HbO2 開始釋放氧分子,最終成為 Hb。在這種脫氧狀態(tài)下,該分子的吸收光譜發(fā)生改變,對(duì)波長為 660 nm 的光吸收率高于波長為 940 nm 的光。 因?yàn)?HbO2 在血氧分壓較低時(shí)會(huì)變?yōu)?Hb,所以 SpO2 可以用簡單的公式來確定: SpO2 = HbO2 / (HbO2 + Hb) 血液中 Hb 和 HbO2 的相對(duì)濃度則可通過測量對(duì)波長為 660 nm 和 940 nm 的光吸收情況來確定。 脈搏血氧儀利用血氧分壓、血紅蛋白氧結(jié)合狀態(tài)和光吸收差異之間的關(guān)系,可提供可靠的 SpO2 測量。 典型脈搏血氧儀的主要子系統(tǒng) 典型脈搏血氧儀設(shè)計(jì)包括三個(gè)主要子系統(tǒng): · 光傳輸子系統(tǒng),包括模擬開關(guān)和驅(qū)動(dòng)器,以及可發(fā)出紅光(波長為 660 nm)和紅外線 (IR)(波長為 950 nm)的發(fā)光二極管 (LED)。一些系統(tǒng)還包括綠光(波長為 530 nm)光源,可配合光電容積描記法 (PPG) 使用,通過監(jiān)測皮膚血管容積的變化來確定心率。 · 光檢測子系統(tǒng),包括光電二極管、信號(hào)調(diào)節(jié)鏈和模數(shù)轉(zhuǎn)換器 (ADC)。 · DSC 或微控制器,用于協(xié)調(diào)光傳輸和光檢測子系統(tǒng),并由測得的數(shù)據(jù)計(jì)算 SpO2。 盡管任何脈搏血氧儀中都存在這些基本子系統(tǒng),但它們的實(shí)現(xiàn)方式可能千差萬別。對(duì)于透射式脈搏血氧儀,光電二極管與 LED 分別放置在用戶手指或耳垂的兩側(cè)。常見的指夾裝置一側(cè)裝有紅光、紅外光 和綠光(可選)LED,另一側(cè)則是光電二極管。對(duì)于反射式脈搏血氧儀,光電二極管和 LED 均放置在皮膚的同一側(cè),兩者之間需設(shè)置光學(xué)屏障以減少偽影。例如,OSRAM 的 SFH7060 是一款即用型反射式測量器件,在單個(gè)封裝中包含 LED 和光電二極管,尺寸僅為 7.2 x 2.5 x 0.9 mm。 無論是將這些采用光學(xué)封裝結(jié)構(gòu)的器件用于透射式測量,還是反射式測量,設(shè)計(jì)人員都只需要添加相對(duì)較少的元器件就可實(shí)現(xiàn)低成本的脈搏血氧儀設(shè)計(jì),并且能夠?yàn)榧彝ビ脩籼峁┫嚓P(guān)信息,針對(duì)是否需要專業(yè)醫(yī)護(hù)人員進(jìn)一步評(píng)估提出建議。在基于 Microchip Technology 的 DSPIC33FJ128GP802 DSC 構(gòu)建的設(shè)計(jì)示例中,使用微控制器的集成外設(shè)來控制紅光和紅外光 LED 對(duì)皮膚的照射,然后將調(diào)節(jié)后的光電二極管輸出信號(hào)數(shù)字化(圖 2)。 ![]() 圖 2:在典型脈搏血氧儀設(shè)計(jì)中,往往集成了 LED 照射子系統(tǒng)和光電二極管信號(hào)處理子系統(tǒng),以及控制照射時(shí)序和數(shù)據(jù)采集的微控制器。(圖片來源:Microchip Technology) 無論光源類型如何,脈搏血氧儀設(shè)計(jì)通常依靠具有寬光譜響應(yīng)范圍的單個(gè)光電二極管,以捕獲透射或反射信號(hào)。為了確保接收到的信號(hào)僅對(duì)應(yīng)于紅光或紅外光波長,硬件或軟件控制邏輯在給定時(shí)間內(nèi)僅開啟紅光或紅外光源,兩個(gè)光源交替發(fā)光以完成測量序列。 實(shí)現(xiàn)低成本脈搏血氧儀硬件設(shè)計(jì) 在此設(shè)計(jì)中,DSC 使用外部 Microchip Technology 的 MCP4728 數(shù)模轉(zhuǎn)換器 (DAC) 將單獨(dú)的 MBT2222 晶體管置于所需電平,從而以所需的亮度驅(qū)動(dòng)各個(gè) LED。為了對(duì)每個(gè) LED 的“開啟”序列進(jìn)行精確定時(shí),DSC 使用其中兩個(gè)脈沖寬度調(diào)制 (PWM) 輸出來控制 Analog Devices 的 ADG884 模擬開關(guān)(圖 3)。 ![]() 圖 3:模擬開關(guān)由數(shù)字控制器紅光和紅外光通道的交替信號(hào)驅(qū)動(dòng),用于產(chǎn)生紅光和紅外光 LED 的驅(qū)動(dòng)電流。(圖片來源:Microchip Technology) 為了處理光電二極管輸出,單個(gè) Microchip Technology 的 MCP6002 器件可提供一對(duì)運(yùn)算放大器,借以實(shí)現(xiàn)基本兩級(jí)信號(hào)調(diào)節(jié)鏈。在這里,第一級(jí)使用 MCP6002 的一個(gè)運(yùn)算放大器,將其配置為跨阻放大器,以便將光電二極管的電流輸出轉(zhuǎn)換為電壓信號(hào)。在經(jīng)過高通濾波器以降低噪聲后,MCP6002 中的第二個(gè)運(yùn)算放大器提供了增益和直流偏移調(diào)整,以在 DSC 集成的 ADC 全范圍內(nèi)優(yōu)化調(diào)節(jié)后信號(hào)的擺動(dòng)(圖 4)。 ![]() 圖 4:兩級(jí)信號(hào)鏈調(diào)節(jié)光電二極管輸出,以實(shí)現(xiàn)到數(shù)字控制器的集成 ADC 的信號(hào)傳送。(圖片來源:Microchip Technology) 工作時(shí),DSC 使用其 PWM 輸出和 ADC 輸入,對(duì)調(diào)節(jié)后光電二極管輸出信號(hào)的 LED 照射和 ADC 數(shù)字化進(jìn)行同步。這樣,每個(gè)交替的紅光和紅外光照射周期都會(huì)配合信號(hào)采集和轉(zhuǎn)換。在兩個(gè) LED 都關(guān)閉時(shí),還需采集一個(gè) ADC 樣本以測量環(huán)境光,以便用于優(yōu)化 LED 亮度和 SpO2 測量。最后得到的是一個(gè)精確控制的事件序列,協(xié)調(diào) LED 照射與 ADC 數(shù)字化,以捕獲表示 Hb 的紅光波長結(jié)果,再捕獲環(huán)境光,最終捕獲表示 HbO2 的紅外光波長結(jié)果(圖 5)。 ![]() 圖 5:低成本脈搏血氧儀的功能依賴于數(shù)字信號(hào)控制器的管理能力,控制器需要對(duì)照射時(shí)序和數(shù)據(jù)捕獲進(jìn)行精確定時(shí),才能收集測量值以確定 SpO2。(圖片來源:Microchip Technology) 實(shí)現(xiàn)中斷驅(qū)動(dòng)軟件解決方案 Microchip 提供的脈搏血氧儀固件包帶有一個(gè)樣例程序,演示了如何使用 DSC 執(zhí)行這些照射控制和數(shù)據(jù)轉(zhuǎn)換序列。在這里,該程序使用一對(duì) DSC 定時(shí)器(Timer2 和 Timer3)來實(shí)現(xiàn)中斷驅(qū)動(dòng)方法,這兩個(gè)定時(shí)器分別用于紅外光 LED 和紅光 LED 各自的“開啟”序列。這樣,每個(gè)定時(shí)器又為 DSC 的兩個(gè)輸出比較 (OC) 模塊(OC1 和 OC2)提供時(shí)基,這兩個(gè)模塊分別用于控制紅外光LED 和紅光 LED 的模擬開關(guān)。 如清單 1 所示,該軟件首先初始化 Timer2 和 Timer3,以設(shè)置所需的照射周期時(shí)長并啟用中斷。作為其初始化序列的一部分,OC1 和 OC2 模塊使用 DSC 的可重映射引腳 (RP) 功能連接到各自的輸出引腳。然后,初始化序列設(shè)置照射占空比,并選擇關(guān)聯(lián)定時(shí)器用作時(shí)基。 副本 //********************************************************************************************************* // Initialize Timer 2 - IR light //********************************************************************************************************* T2CON = 0x0020; // Stop 16-bit Timer2, 1:64(40MhzFosc) Prescale, Internal clock (Fosc/2) TMR2 = 0x00; // Clear timer register PR2 = 1250; // Load the period value, OCxRS <= PRx, 4ms period = (1/(Fosc/2))*1000*64*PR2 = (1/(40000000/2))*1000*64*1250 IPC1bits.T2IP = 2; // Set Timer2 Interrupt Priority Level IFS0bits.T2IF = 0; // Clear Timer2 Interrupt Flag IEC0bits.T2IE = 1; // Enable Timer2 Interrupt //********************************************************************************************************* // Initialize Timer 3 - Red light //********************************************************************************************************* T3CON = 0x0020; // Stop 16-bit Timer3, 1:64(40MhzFosc) Prescale, Internal clock (Fosc/2) TMR3 = 0x00; // Clear timer register PR3 = 1250; // Load the period value, OCxRS <= PRx, 4ms period = (1/(Fosc/2))*1000*64*PR2 = (1/(40000000/2))*1000*64*1250 IPC2bits.T3IP = 2; // Set Timer3 Interrupt Priority Level IFS0bits.T3IF = 0; // Clear Timer3 Interrupt Flag IEC0bits.T3IE = 1; // Enable Timer3 Interrupt //********************************************************************************************************* // Initialize Output Compare 1 module in Continuous Pulse mode, OC1 controls IR LED switch //********************************************************************************************************* RPOR6bits.RP13R = 0b10010; // RP13/RB13 tied to OC1 (IR) OC1CONbits.OCM = 0b000; // Disable Output Compare 1 Module OC1R = 0; // Write the duty cycle for the first PWM pulse, 24=8MHzFosc(50us), 30=40MHzFosc(50us), 600=40MHzFosc(1ms) OC1RS = duty_cycle; // Write the duty cycle for the second PWM pulse, OCxRS <= PRx, 499=8MHzFosc(1ms), 623=40MHzFosc(1ms), 1246=40MHzFoc,2msPeriod, 4984=40MHzFoc,8msPeriod, 280=450us D/C@40MHzFoc,2msPeriod,switch OC1CONbits.OCTSEL = 0; // Select Timer 2 as output compare time base //********************************************************************************************************* // Initialize Output Compare 2 module in Continuous Pulse mode, OC2 controls Red LED switch //********************************************************************************************************* RPOR6bits.RP12R = 0b10011; // RP12/RB12 tied to OC2 (Red) OC2CONbits.OCM = 0b000; // Disable Output Compare 2 Module OC2R = 0; // Write the duty cycle for the first PWM pulse, 24=8MHzFosc, 30=40MHzFosc, 600=40MHzFosc(1ms) OC2RS = duty_cycle; // Write the duty cycle for the second PWM pulse, OCxRS <= PRx, 499=8MHzFosc(1ms), 623=40MHzFosc(1ms), 1246=40MHzFoc,2msPeriod, 4984=40MHzFoc,8msPeriod, 280=450us D/C@40MHzFoc,2msPeriod,switch OC2CONbits.OCTSEL = 1; // Select Timer 3 as output compare time base 清單 1:在 Microchip Technology 提供的示例代碼包中,主例程使用一個(gè)簡短的初始化序列來設(shè)置數(shù)字信號(hào)控制器的定時(shí)器和輸出比較模塊,這是這種低成本脈搏血氧儀解決方案的核心。(代碼來源:Microchip Technology) 這種方法利用了 DSC 架構(gòu)將每個(gè)定時(shí)器中斷與特定的中斷服務(wù)例程 (ISR) 入口點(diǎn)相關(guān)聯(lián)的特性。例如,當(dāng)紅光 LED 通道的 Timer3 中斷發(fā)生時(shí),DSC 在 _T3Interrupt 入口點(diǎn)執(zhí)行相應(yīng)功能。因此,當(dāng)紅光 LED 的 Timer3 到期時(shí),會(huì)發(fā)生以下兩個(gè)相應(yīng)的硬件和軟件事件: OC2 生成一個(gè)連續(xù)脈沖并發(fā)送至模擬開關(guān),開啟紅光 LED DSC 開始執(zhí)行 _T3Interrupt ISR(清單 2) 副本 void __attribute__((__interrupt__, no_auto_psv)) _T3Interrupt(void) //Read Red DC & AC signals from AN0 & AN1 { int delay; unsigned char i; Read_ADC_Red = 1; CH0_ADRES_Red_sum = 0; CH1_ADRES_Red_sum = 0; for (delay=0; delay<200; delay++); //2000=delayed 256us before read ADC // LATBbits.LATB14 = 1; // for debugging for (i=0; i //Acquires Red-DC from Channel0 (AN0) AD1CHS0bits.CH0SA = 0x00; // Select AN0 AD1CON1bits.SAMP = 1; // Begin sampling while(!AD1CON1bits.DONE); // Waiting for ADC completed AD1CON1bits.DONE = 0; // Clear conversion done status bit CH0_ADRES_Red_sum = CH0_ADRES_Red_sum + ADC1BUF0; // Read ADC result //Acquires Red-AC from Channel1 (AN1) AD1CHS0bits.CH0SA = 0x01; // Select AN1 AD1CON1bits.SAMP = 1; // Begin sampling while(!AD1CON1bits.DONE); // Waiting for ADC completed AD1CON1bits.DONE = 0; // Clear conversion done status bit CH1_ADRES_Red_sum = CH1_ADRES_Red_sum + ADC1BUF0; // Read ADC result } CH0_ADRES_Red = CH0_ADRES_Red_sum / oversampling_number; FIR_input_Red[0] = CH1_ADRES_Red_sum / oversampling_number; #ifdef Sleep_Enabled if (CH0_ADRES_Red<=74 && CH1_ADRES_Red>=4000) //if spo2 probe is not connected, 74=60mV, 4000=3.2V { goto_sleep = 1; } else if (CH0_ADRES_Red > Finger_Present_Threshold) //if no finger present then goto sleep { goto_sleep = 1; } else #endif { // LATBbits.LATB14 = 0; // for debugging for (delay=0; delay<500; delay++); //1000=delayed 256us before read ADC // LATBbits.LATB14 = 1; // for debugging //Acquires Red-DC baseline from Channel0 (AN0) AD1CHS0bits.CH0SA = 0x00; // Select AN0 AD1CON1bits.SAMP = 1; // Begin sampling while(!AD1CON1bits.DONE); // Waiting for ADC completed AD1CON1bits.DONE = 0; // Clear conversion done status bit Baseline_ambient = ADC1BUF0; Baseline_Upper_Limit = Baseline_ambient + DCVppHigh; Baseline_Lower_Limit = Baseline_ambient + DCVppLow; Meter_State = Calibrate_Red(); } // LATBbits.LATB14 = 0; // for debugging OC2RS = duty_cycle; // Write Duty Cycle value for next PWM cycle IFS0bits.T3IF = 0; // Clear Timer3 Interrupt Flag } 清單 2:Microchip Technology 的示例代碼包含有此處所示的 Timer3 ISR,這段代碼用于收集紅光 LED 照射的測量值和環(huán)境光測量值,而 Timer2 ISR 只需要收集紅外光 LED 照射的測量值。(代碼來源:Microchip Technology) 如清單 2 所示,_T3Interrupt ISR 從 ADC 通道 0 (AN0) 讀取紅光基線水平 (Red-DC),并從 ADC 通道 1 (AN1) 讀取紅光動(dòng)態(tài)水平 (Red-AC)。如果開發(fā)人員選擇將 Sleep_Enabled 的定義納入應(yīng)用中,則編譯的 ISR 代碼會(huì)在捕獲數(shù)據(jù)后檢查處理器是否應(yīng)進(jìn)入休眠狀態(tài)。Microchip 軟件包的默認(rèn)配置包括 Sleep_Enabled 的 #define,因此如果未連接光學(xué)探頭或者未檢測到用戶的手指,則將設(shè)置變量 goto_sleep。 檢查了此探頭狀態(tài)之后,ISR 會(huì)對(duì)環(huán)境光水平進(jìn)行采樣,并使用此更新值相應(yīng)地調(diào)整基線窗口限值。利用這些調(diào)整后的限值,函數(shù) Calibrate_Red() 可增加或減少連接紅光 LED 驅(qū)動(dòng)器的 DAC 輸出,使亮度保持在 Baseline_Lower_Limit 和 Baseline_Upper_Limit 之間。 T2 定時(shí)器中斷服務(wù)例程使用相同的基本設(shè)計(jì)模式,但不包括對(duì) sleep_enabled 和環(huán)境光水平測量值的檢查。 配置了定時(shí)器、輸出比較和 ISR 后,該示例軟件的主例程將執(zhí)行一個(gè)簡短的初始化序列,并啟動(dòng) Timer2 和 Timer3。此時(shí),代碼進(jìn)入主循環(huán),等待接收 ISR 處理的數(shù)據(jù)。待獲得紅光和紅外光數(shù)據(jù)后,這些值將由一個(gè)數(shù)字有限脈沖響應(yīng) (FIR) 濾波器進(jìn)行處理,最后調(diào)用例程來計(jì)算 SpO2 和心率(清單 3)。 副本 //********** Enable OC1 & OC2 ouputs for IR & Red LED's on/off switch ********** OC2CONbits.OCM = 0b101; // Select the Output Compare 2 mode, Turn on Red LED T3CONbits.TON = 1; // Start Timer3 for (delay=0; delay<2200; delay++); OC1CONbits.OCM = 0b101; // Select the Output Compare 1 mode, Turn on IR LED T2CONbits.TON = 1; // Start Timer2 goto_sleep = 0; first_reading = 0; while (1) { if (goto_sleep) { [lines clipped] Sleep(); // Put MCU into sleep Nop(); } } //--------- Main State Machine starts here --------- if (RedReady && IRReady) { RedReady = 0; IRReady = 0; // LATBbits.LATB14 = 1; //for debugging FIR(1, &FIR_output_IR[0], &FIR_input_IR[0], &BandpassIRFilter); FIR(1, &FIR_output_Red[0], &FIR_input_Red[0], &BandpassRedFilter); CH1_ADRES_IR = FIR_output_IR[0]; CH1_ADRES_Red = FIR_output_Red[0]; [lines clipped] if (Detection_Done) { //Max & Min are all found. Calculate SpO2 & Pulse Rate SpO2_Calculation(); //calculate SpO2 Pulse_Rate_Calculation(); //calculate pulse rate [lines clipped] } /***************************************************************************** * Function Name: SpO2_Calculation() * Specification: Calculate the %SpO2 *****************************************************************************/ void SpO2_Calculation (void) { double Ratio_temp; IR_Vpp1 = fabs(IR_Max - IR_Min); Red_Vpp1 = fabs(Red_Max - Red_Min); IR_Vpp2 = fabs(IR_Max2 - IR_Min2); Red_Vpp2 = fabs(Red_Max2 - Red_Min2); IR_Vpp = (IR_Vpp1 + IR_Vpp2) / 2; Red_Vpp = (Red_Vpp1 + Red_Vpp2) / 2; IR_Vrms = IR_Vpp / sqrt(8); Red_Vrms = Red_Vpp / sqrt(8); // SpO2 = log10(Red_Vrms) / log10(IR_Vrms) * 100; // if (SpO2 > 100) // { // SpO2 = 100; // } // Using lookup table to calculate SpO2 Ratio = (Red_Vrms/CH0_ADRES_Red) / (IR_Vrms/CH0_ADRES_IR); 清單 3:在 Microchip Technology 示例代碼包中,主例程的這段代碼展示了該代碼如何初始化定時(shí)器和輸出比較模塊并進(jìn)入無限循環(huán),從而在獲得測量值后計(jì)算 SpO2 和心率,或在未連接傳感器時(shí)將處理器置于低功耗休眠模式。(代碼來源:Microchip Technology) 對(duì)于 SpO2,函數(shù) SpO2_Calculation() 將紅光和紅外光信號(hào)的脈沖幅度 (Vpp) 轉(zhuǎn)換為 Vrms 值。該函數(shù)使用這些值生成一個(gè)比值,并使用查找表(清單 3 中未顯示)將該比值轉(zhuǎn)換為特定的 SpO2 值。通常,該查找表由多次測量經(jīng)驗(yàn)總結(jié)得出。Pulse_Rate_Calculation() 使用測量的峰間計(jì)時(shí)來確定心率。 SpO2 設(shè)計(jì)優(yōu)化選項(xiàng) 雖然本文介紹的設(shè)計(jì)為低成本脈搏血氧儀提供了一個(gè)有效的解決方案,但其他器件可能會(huì)提供進(jìn)一步的優(yōu)化。例如,開發(fā)人員可以使用 Microchip Technology 的 DSPIC33CK64MP102 DSC 集成的運(yùn)算放大器,則無需添加外部 MCP6002 雙運(yùn)算放大器器件。 然而,在實(shí)現(xiàn)這種經(jīng)過修改的脈搏血氧儀設(shè)計(jì)時(shí),由于 DSC 有所不同,開發(fā)人員需要重寫以上軟件包的一些關(guān)鍵部分。 例如,不同于 DSPIC33FJ128GP802 DSC 中的 Timer2/Timer3 功能,DSPIC33CK64MP102 DSC 提供了一組多用途定時(shí)器模塊,因此需要開發(fā)人員提供自己的解決方案,以實(shí)現(xiàn)本文清單中所述的某些功能。即便如此,工作原理依然不變,開發(fā)人員至少可以使用 Microchip Technology 示例軟件包所示的設(shè)計(jì)模式來指導(dǎo)自己的定制軟件設(shè)計(jì)。 結(jié)語 血氧飽和度測量可提供重要的呼吸功能指標(biāo),在新冠肺炎疫情期間已成為重要的健康管理工具。使用簡單的光學(xué)方法,脈搏血氧儀提供了可靠的外周血氧飽和度 (SpO2) 估計(jì)值,可滿足疫情期間對(duì)平價(jià)健康監(jiān)測解決方案的特別需求。 如上所述,DSC 與一些基本元器件相結(jié)合,為實(shí)現(xiàn)低成本的脈搏血氧儀提供了有效的硬件基礎(chǔ),能夠提供可靠的 SpO2 測量值,從而針對(duì)是否需要尋求進(jìn)一步醫(yī)療護(hù)理以診治不斷加重的新冠肺炎感染,為用戶提供必要信息。 來源:Digi-Key 作者:Stephen Evanczuk |