




已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
脈搏血氧飽和度的測(cè)量一、測(cè)量值:脈搏血氧飽和度、脈率二、測(cè)量原理:以兩路光線(紅光vs,紅外光ir)高頻交替照射被測(cè)部位,兩路透射光經(jīng)光電轉(zhuǎn)換得到兩路變化的光電流信號(hào),兩路光電流信號(hào)經(jīng)過放大、去直流、去工頻干擾得到兩路信號(hào)的交流部分,交流部分的平均功率之比即為動(dòng)脈血的含氧量,通過線性擬合得到脈搏血氧飽和度;其中任何一路信號(hào)交流部分即為脈搏波,測(cè)得其周期可計(jì)算出脈率。三、測(cè)量電路及其參數(shù)。電路包括三部分:探頭驅(qū)動(dòng)電路、光電流放大和去直流電路、計(jì)算電路。探頭驅(qū)動(dòng)電路實(shí)現(xiàn)兩路光線由對(duì)稱的兩組三極管構(gòu)成,與計(jì)算電路的兩個(gè)IO端口和兩個(gè)DA端口相連,分別控制兩路光線的交替開關(guān)和幅值。光電流放大和去直流電路由兩級(jí)運(yùn)放構(gòu)成,一級(jí)運(yùn)放將光電流信號(hào)放大為電壓信號(hào),這個(gè)電壓信號(hào)包含交流分量和較大的直流分量(分別對(duì)應(yīng)著測(cè)量部位的動(dòng)脈血和其他成分),因此需要二級(jí)運(yùn)放去直流處理。計(jì)算電路接受兩個(gè)運(yùn)放的輸出,作為反饋為探頭驅(qū)動(dòng)電路和去直流電路提供參考電壓幅值。探頭接口說明:1為地線,6、7分別為外屏蔽和內(nèi)屏蔽線,2為紅外光輸入正極,紅光輸入負(fù)極,3為紅光輸入正極,紅外光輸入負(fù)極,9為光電管輸出正極,5為光電管輸出負(fù)極。四、測(cè)量流程基本測(cè)量流程如下圖。200Hz定時(shí)器中斷,兩路LED交替通斷,即1秒內(nèi)兩路光各有100次采樣。以紅外光這一路為例:每次開啟紅外光LED,根據(jù)OA0輸出改變LED的幅度ir_LED_level(Q3 的基極),根據(jù)OA1輸出改變?nèi)ブ绷麟娐返闹绷鲄⒖茧妷篿r_dc_offset (OA1的正向輸入端),得到的OA1的輸出作為計(jì)算電路的輸入,關(guān)燈,原始信號(hào)去工頻處理后得到ir_heart_signal,數(shù)字去直流后得到ir_heart_signal_ac,該信號(hào)進(jìn)入脈搏波周期判斷的隊(duì)列g(shù)roup_caculate64,同時(shí)計(jì)算ir_heart_signal_ac信號(hào)的平方和,并且采樣計(jì)數(shù),同時(shí)進(jìn)行脈搏周期的判斷。數(shù)字信號(hào)直流跟隨可表達(dá)為:跟隨系數(shù)(輸入信號(hào)-直流分量)+直流分量=更新的直流分量。脈搏周期的判斷過程:隊(duì)列相當(dāng)于在脈搏波信號(hào)上一個(gè)滑動(dòng)的窗口,窗口應(yīng)有一定寬度,大于噪聲時(shí)間,但需小于脈搏周期。判斷過程如下:當(dāng)最小值位置處于窗口中部位置時(shí)則判定為一個(gè)波谷,檢測(cè)到波谷以后窗口繼續(xù)滑過10個(gè)采樣點(diǎn),但不再檢查最小值,確保上一個(gè)波谷已經(jīng)離開窗口中心,然后繼續(xù)檢查最小值位置確定下一個(gè)波谷??梢苑譃槿N狀態(tài)分別稱之為確定波谷、離開波谷、尋找波谷。如下圖。利用局部特征實(shí)時(shí)判斷脈搏周期的三個(gè)階段:1)確定波谷,確定周期,計(jì)算血氧飽和度和脈率,清空計(jì)數(shù);2)離開波谷,開始計(jì)數(shù),計(jì)算信號(hào)平方和;3)尋找波谷,保持計(jì)數(shù),計(jì)算平方和,確定窗口中最小值位置五、測(cè)量程序?qū)崿F(xiàn)(可參考pulsoximeter.c文件)1、變量設(shè)置1)全局參量 根據(jù)運(yùn)放一的輸出經(jīng)AD轉(zhuǎn)化后判斷LED是否過亮過暗,2500到3000之間為合適亮度,否則進(jìn)行調(diào)節(jié),快速調(diào)節(jié)步長為2,細(xì)調(diào)步長為1,可根據(jù)實(shí)際電路修改。/反饋控制LED驅(qū)動(dòng)幅度時(shí)的上下界和調(diào)節(jié)步長#define FIRST_STAGE_TARGET_HIGH 3000#define FIRST_STAGE_TARGET_LOW 2500#define FIRST_STAGE_TARGET_HIGH_FINE 3500#define FIRST_STAGE_TARGET_LOW_FINE 2000#define FIRST_STAGE_STEP 2#define FIRST_STAGE_FINE_STEP 12)全局變量/脈搏血氧信號(hào),存儲(chǔ)脈搏血氧幾個(gè)處理方法后的值int32_t ir_heart_signal;/紅外光,OA1輸出經(jīng)過平均濾波后,等待數(shù)字去直流int32_t vs_heart_signal;/ 紅光,OA1輸出經(jīng)過平均濾波后,等待數(shù)字去直流int32_t ir_heart_signal_ac;/紅外光,經(jīng)過數(shù)字去直流,進(jìn)入計(jì)算窗口,參加平方和的累加int32_t vs_heart_signal_ac;/ 紅光,經(jīng)過數(shù)字去直流,進(jìn)入計(jì)算窗口,參加平方和的累加int32_t sum_ir_heart_signal_ac = 0;/紅外光,信號(hào)平方和累加值,一個(gè)周期計(jì)算平均功率int32_t sum_vs_heart_signal_ac = 0; /紅光,信號(hào)平方和累加值,一個(gè)周期計(jì)算平均功率/計(jì)算過程信號(hào)int group_wave512;/用于顯示,循環(huán)隊(duì)列,存儲(chǔ)幾個(gè)周期內(nèi)的ir_heart_signal_ac信號(hào)int offset_wave = 0;/循環(huán)隊(duì)列隊(duì)列頭int flag_initial = 1;/初始化標(biāo)志位int sample_count = 0;/采樣計(jì)數(shù),每個(gè)周期清空,重新計(jì)數(shù)int num_beat = 0;/初始值為1,下一個(gè)脈搏后為2,計(jì)算平均功率和血氧飽和度,重新置1int flag_jump = 0;/脈搏波周期判斷,是否處于離開波谷的狀態(tài)int sample_jump = 0;/離開波谷時(shí)的采樣計(jì)數(shù),到20則已離開波谷,置0 ,flag_jump 置1/循環(huán)隊(duì)列,以滑動(dòng)窗口的形式判斷當(dāng)前是否為脈搏波波谷int group_caculate64;/用于脈搏周期判斷的循環(huán)隊(duì)列,存儲(chǔ)64 個(gè)ir_heart_signal_ac信號(hào)int offset_caculate = 0;/隊(duì)列頭位置int min;/隊(duì)列中最小值int location_min;/最小值位置int location_min_adjust;/最小值相對(duì)與隊(duì)列頭的位置,如果是32則確認(rèn)一個(gè)波谷/最終結(jié)果/脈率unsigned int heart_rate = 6000;/脈率最終測(cè)量結(jié)果,初始值為60.00unsigned int group_heart_rate8;/最近8秒內(nèi)的脈率,循環(huán)隊(duì)列,初始化為6000int offset_heart_rate=0;/隊(duì)列頭unsigned int sample_heart_rate;/脈率當(dāng)前原始結(jié)果,經(jīng)過一定調(diào)整后進(jìn)入group_heart_rate8int32_t sum_heart_rate;/最近8秒的脈率累加值,除以8得到新的heart_rate/脈搏血氧飽和度unsigned int SpO2 = 9500;/血氧飽和度最終測(cè)量結(jié)果,初始值為95.00unsigned int group_SpO28; /最近8秒內(nèi)的血氧飽和度,循環(huán)隊(duì)列,初始化為9500int offset_SpO2=0;/隊(duì)列頭int32_t sum_SpO2; /最近8秒的血氧飽和度累加值,除以8得到新的heart_rate/控制參數(shù)int fresh=0; /調(diào)試使用,無意義/反饋控幅和OA1參考電壓的參數(shù)int led_tab=0; /控制開啟紅光還是紅外光,每次中斷切換狀態(tài)int ir_LED_level;/ir驅(qū)動(dòng)幅度,控制Q3基極,范圍1到2500,數(shù)字越大,亮度越弱int vs_LED_level;/vs驅(qū)動(dòng)幅度,控制Q4基極,范圍1到4095,數(shù)字越大,亮度越弱int ir_dc_offset = 4095;/ir燈直流參考電壓,開啟紅外LED時(shí),控制OA1正向輸入端int vs_dc_offset = 4095;/ /vs燈直流參考電壓,開啟紅光LED時(shí),控制OA1正向輸入端int ir_dc_offset_second = 0;/數(shù)字去直流時(shí)的直流跟隨量int vs_dc_offset_second = 0; /數(shù)字去直流時(shí)的直流跟隨量/運(yùn)放輸出的輸出int ir_sample;/ir燈,OA0的輸出,根據(jù)該輸出改變ir_LED_levelint vs_sample;/vs燈,OA0的輸出,根據(jù)該輸出改變vs_LED_level3)子函數(shù)unsigned long isqrt32(register unsigned long h);/開方運(yùn)算int16_t ir_filter_test(int16_t sample);/平均濾波器_紅外int16_t vs_filter_test(int16_t sample);/平均濾波器_紅光2、程序主體(請(qǐng)參照pulsoximeter.c文件)1)晶振、電源設(shè)置2)初始化操作:group_heart_rate8初始化為6000,sum_heart_rate 初始化為48000,group_SpO28初始化為9500,sum_SpO2初始化為76000。3)DAC設(shè)置,ir_LED_level初始化為2500,vs_LED_level初始化為900。ADC設(shè)置。定時(shí)器設(shè)置,200Hz采樣中斷,1600Hz用于PWM輸出。4)設(shè)置完,進(jìn)入低功耗模式5)中斷處理程序,200Hz中斷,中斷進(jìn)入后或者進(jìn)入紅光LED流程,或者進(jìn)入紅外LED流程,都要根據(jù)輸入調(diào)整相應(yīng)參數(shù),進(jìn)行平均濾波,去直流處理。兩種流程其他計(jì)算上有所不同:在紅光流程中主要進(jìn)行兩路信號(hào)平方和累加、采樣計(jì)數(shù)、脈搏血氧飽和度和脈率的計(jì)算;紅外流程里主要進(jìn)行的是脈搏周期的判斷。兩個(gè)流程的具體操作如下。紅光流程:關(guān)閉兩路燈,設(shè)置參數(shù),開啟紅光LED,讀取輸入,關(guān)閉紅光LED,根據(jù)輸入調(diào)整參數(shù),平均濾波,去直流,循環(huán)隊(duì)列更新,是否處于找到波谷的狀態(tài)(num_beat由1變?yōu)?,找到,否則未找到),未找到則計(jì)算兩路平方和,采樣計(jì)數(shù)累加,找到則計(jì)算脈搏血氧飽和度和脈率,平方和、采樣計(jì)數(shù)置0。紅外流程:關(guān)閉兩路燈,設(shè)置參數(shù),開啟紅光LED,讀取輸入,關(guān)閉紅光LED,根據(jù)輸入調(diào)整參數(shù),平均濾波,去直流,循環(huán)隊(duì)列更新,是否處于離開波谷的狀態(tài)(flag_jump=0時(shí)為尋找狀態(tài),flag_jump=0時(shí)為離開狀態(tài)),尋找狀態(tài)找到循環(huán)隊(duì)列中最小值及位置,判斷是否波谷,不是波谷繼續(xù)尋找,是波谷則進(jìn)入離開狀態(tài),離開狀態(tài)僅計(jì)數(shù),計(jì)數(shù)滿20次進(jìn)入尋找狀態(tài)。中斷程序代碼如下所示:/紅光流程if(led_tab=0)/ led_tab=0,打開紅光LED led_tab=1;/切換led_tab,下一次進(jìn)入紅外流程 P2OUT |= BIT2;/關(guān)燈 P2OUT |= BIT3;/關(guān)燈 DAC12_0CTL &= DAC12ENC;/開啟DAC,根據(jù)vs_LED_level給出幅度 DAC12_0CTL &= DAC12OPS; DAC12_0CTL |= DAC12ENC; DAC12_0DAT = vs_LED_level;/紅光LED驅(qū)動(dòng)幅度 DAC12_1DAT = vs_dc_offset;/紅光去直流電路的參考電壓,OA1正向輸入 P2OUT &= BIT3;/開燈,紅光LED ADC12CTL0 &= ENC;/開啟DAC,讀取OA0、OA1輸出 ADC12CTL0 |= ENC; for(m=1;m=FIRST_STAGE_TARGET_HIGH|vs_sample= FIRST_STAGE_TARGET_HIGH) if (vs_sample = FIRST_STAGE_TARGET_HIGH_FINE) vs_LED_level += FIRST_STAGE_STEP; else vs_LED_level += FIRST_STAGE_FINE_STEP; if (vs_LED_level = 4095) vs_LED_level = 4095; else if (vs_sample = FIRST_STAGE_TARGET_LOW_FINE) vs_LED_level -= FIRST_STAGE_STEP; else vs_LED_level -= FIRST_STAGE_FINE_STEP; if (vs_LED_level = 4095) if (vs_dc_offset 0) vs_dc_offset-; else if (i 100) if (vs_dc_offset 7);/數(shù)字直流跟隨 vs_heart_signal_ac = vs_heart_signal - vs_dc_offset_second;/去直流 group_waveoffset_wave = ir_heart_signal_ac+4000; /加4000保證脈搏波信號(hào)為正 offset_wave = (offset_wave + 1) & 0x1ff; /循環(huán)隊(duì)列更新,用于顯示 group_caculateoffset_caculate = ir_heart_signal_ac;/循環(huán)隊(duì)列更新,用于脈搏判斷 offset_caculate = (offset_caculate + 1) & 0x3f; if(num_beat=1)/ num_beat是否為1 sample_count+;/采樣計(jì)數(shù) /兩路信號(hào)平方和累加 sum_vs_heart_signal_ac += (vs_heart_signal_ac * vs_heart_signal_ac)10); sum_ir_heart_signal_ac += (ir_heart_signal_ac * ir_heart_signal_ac)10); if(num_beat=2) / num_beat是否為2,為2表示找到一個(gè)新的波谷 int32_t x = isqrt32(sum_vs_heart_signal_ac);/平方和開方 int32_t y = isqrt32(sum_ir_heart_signal_ac);/平方和開方 int32_t w = 100 * x / y;/平均功率之比R100 sum_SpO2 -= group_SpO2offset_SpO2;/8秒內(nèi)血氧飽和度之和減去8秒前的值/計(jì)算當(dāng)先新的脈搏血氧飽和度,擬合公式110-25R,R為平均功率之比 group_SpO2offset_SpO2 = 11000 - 25 * w; /調(diào)整新的脈搏血氧飽和度,變化不能超過3個(gè)百分點(diǎn),范圍在85到100之間 if(group_SpO2offset_SpO2(group_SpO2(offset_SpO2-1)&0x07+300) group_SpO2offset_SpO2 = group_SpO2(offset_SpO2-1)&0x07+300; else if(group_SpO2offset_SpO210000) group_SpO2offset_SpO2 = 10000; else if(group_SpO2offset_SpO28500) group_SpO2offset_SpO2 = 8500; else sum_SpO2 += group_SpO2offset_SpO2; /8秒內(nèi)血氧飽和度之和加上當(dāng)前的值 offset_SpO2 = (offset_SpO2+1) & 0x07; SpO2=sum_SpO2/8;/計(jì)算平均值,得到最終結(jié)果 /清空計(jì)數(shù)和變量重置 sum_vs_heart_signal_ac = 0;/平方和累加值置零 sum_ir_heart_signal_ac = 0; /平方和累加值置零 /脈率的計(jì)算 sample_heart_rate = 600000 / sample_count;/由脈搏周期換算成脈率 num_beat = 1;/脈搏計(jì)數(shù)重置成1 sample_count = 0;/采樣計(jì)數(shù)置0 if(sample_heart_rate18000)/明顯錯(cuò)誤的結(jié)果 else /8秒內(nèi)脈率之和減去8秒前的值 sum_heart_rate -= group_heart_rateoffset_heart_rate;/循環(huán)隊(duì)列更新,得到當(dāng)前脈率 group_heart_rateoffset_heart_rate = sample_heart_rate;/8秒內(nèi)脈率之和加上當(dāng)前值 sum_heart_rate += group_heart_rateoffset_heart_rate; offset_heart_rate = (offset_heart_rate+1) & 0x07;/求平均值,為脈率最終結(jié)果 heart_rate=sum_heart_rate/8; fresh=1; /紅外流程else /前面部分與紅光部分一致,關(guān)燈,設(shè)置參數(shù),開燈,讀取運(yùn)放輸出,關(guān)燈,平均濾波,去/直流,不再做注釋,注釋的主要是脈搏周期的判斷部分 led_tab=0; P2OUT |= BIT2;/關(guān)燈 P2OUT |= BIT3;/關(guān)燈 DAC12_0CTL &= DAC12ENC; DAC12_0CTL |= DAC12OPS; DAC12_0CTL |= DAC12ENC; DAC12_0DAT = ir_LED_level;/紅外LED驅(qū)動(dòng)幅度 DAC12_1DAT = ir_dc_offset;/OA1輸入?yún)⒖茧妷?P2OUT &= BIT2;/開燈 ADC12CTL0 &= ENC; ADC12CTL0 |= ENC; for(m=1;m= FIRST_STAGE_TARGET_HIGH | ir_sample = FIRST_STAGE_TARGET_HIGH) if (ir_sample = FIRST_STAGE_TARGET_HIGH_FINE) ir_LED_level += FIRST_STAGE_STEP; else ir_LED_level += FIRST_STAGE_FINE_STEP; if (ir_LED_level = 2500) ir_LED_level = 2500; else if (ir_sample = FIRST_STAGE_TARGET_LOW_FINE) ir_LED_level -= FIRST_STAGE_STEP; else ir_LED_level -= FIRST_STAGE_FINE_STEP; if (ir_LED_level = 4095) if (ir_dc_offset 0) ir_dc_offset-; else if (i 100) if (ir_dc_offset 7); ir_heart_signal_ac = ir_heart_signal - ir_dc_offset_second; /是否為程序啟動(dòng)狀態(tài),此時(shí)flag_initial = 1 if(flag_initial = 1) if(offset_wave=500) flag_initial=0; else/脈搏周期的判斷 if(flag_jump=0)/ flag_jump=0,表示處在尋找波谷狀態(tài) sample_jump = 0;/ 離開波谷時(shí)的采樣計(jì)數(shù)置0 /尋找group_caculate 64循環(huán)隊(duì)列中的最小值及其位置m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編人教版一年級(jí)下冊(cè)語文閱讀材料復(fù)習(xí)計(jì)劃
- 網(wǎng)絡(luò)廣告行業(yè)的精準(zhǔn)投放與效果評(píng)估研究
- 消防系統(tǒng)羅托克電動(dòng)執(zhí)行器說明書
- 2025至2030中國肉蛋白質(zhì)分析設(shè)備行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國羽毛服裝行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國網(wǎng)絡(luò)安全設(shè)備行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國網(wǎng)格交互式熱水器行業(yè)市場(chǎng)深度研究及發(fā)展前景投資可行性分析報(bào)告
- 2025至2030中國綠化苗木行業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)與投資策略報(bào)告
- 網(wǎng)絡(luò)平臺(tái)建設(shè)及運(yùn)行維護(hù)快速響應(yīng)策略
- 希沃白板提升課堂互動(dòng)效果的心得體會(huì)
- 腦室腹腔分流術(shù)護(hù)理
- 2025年重慶出版集團(tuán)招聘筆試沖刺題2025
- 明星考試題及答案
- 小學(xué)生暑假安全教育主題班會(huì)教案
- 開展打擊電信網(wǎng)絡(luò)詐騙知識(shí)培訓(xùn)
- 冬雨季施工進(jìn)度保障措施
- 2025至2030中國食品軟管行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025年中新天津生態(tài)城教育系統(tǒng)教職人員招聘考試筆試試題
- 三非人員介紹課件
- 工地施工特種設(shè)備管理制度
- 江蘇省南京、鎮(zhèn)江、徐州三市多校聯(lián)考2025年高二下第二學(xué)期5月月考語文試卷
評(píng)論
0/150
提交評(píng)論