基于MAX30100傳感器心率檢測實現(xiàn)的作品報告_第1頁
基于MAX30100傳感器心率檢測實現(xiàn)的作品報告_第2頁
基于MAX30100傳感器心率檢測實現(xiàn)的作品報告_第3頁
基于MAX30100傳感器心率檢測實現(xiàn)的作品報告_第4頁
基于MAX30100傳感器心率檢測實現(xiàn)的作品報告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、 _學(xué)年度實踐學(xué)期學(xué)生實踐報告年 月 日 年 月 日項目名稱: 指導(dǎo)教師: 課 題:系 別: 專業(yè)班級: 學(xué) 號:學(xué)生姓名: 摘 要 本學(xué)期的小學(xué)期實踐設(shè)計項目作品,為基于單片機MCU開發(fā)箱的心率傳感器開發(fā),該主體采用IAP15W4K58S4型號 MCU單片機作為本項目的開發(fā)系統(tǒng),以及基于MAX30100芯片的傳感器。電源供配采用MCU開發(fā)箱自帶的恒壓電源,數(shù)據(jù)顯示采用由兩片HC595動態(tài)驅(qū)動的8個數(shù)碼管??紤]到對本項目作品的使用與數(shù)據(jù)采樣處理,本人采用最高具有16位精度的MAX30100芯片傳感器作為主要的心率數(shù)據(jù)采集模塊,MAX30100芯片內(nèi)部集成ADC數(shù)據(jù)轉(zhuǎn)換,以及多個可讀寫寄存器,本

2、作品主要操作其中的FIFO寄存器進行數(shù)據(jù)采集。同時MAX30100芯片傳感器屬于I2C接口器件,故在程序開發(fā)中,采用I2C接口協(xié)議進行。關(guān)鍵詞:單片機MCU開發(fā)箱;MAX30100;傳感器;HC595;FIFO寄存器;I2C;免責(zé)申明:本報告為本人作為學(xué)生所作報告,報告中個別部分(圖片、偽代碼、芯片介紹等)存在局部摘取他人成果,本人已做出作品后現(xiàn)發(fā)出本報告純?yōu)榉窒韺W(xué)習(xí),不做他途,故請大家善取善用。1目 錄一、項目目的 31.1、項目目的 31.2、項目目標(biāo) 3二、項目內(nèi)容及硬件設(shè)計 42.1、系統(tǒng)器件介紹 42.2、各電路模塊4三、軟件設(shè)計 53.1、程序開發(fā)使用軟件 53.2、程序流程圖 5

3、3.3、代碼示例(main函數(shù)部分) 63.4、 算法問題及分析 83.4.1、關(guān)于整體代碼框架中存在的問題 83.4.2、關(guān)于對MAX30100芯片的硬件驅(qū)動 83.4.3、關(guān)于在驅(qū)動FIFO時需要注意的細(xì)節(jié) 93.4.4、關(guān)于對項目硬件調(diào)試 9四、總結(jié)與展望 10五、附錄 11作品圖片 112一、項目目的及目標(biāo)1.1、項目目的:隨著人類的科技文明發(fā)展的進步,人們越發(fā)開始關(guān)注人們自身生活的質(zhì)量及健康安全,而隨可穿戴設(shè)備及物聯(lián)網(wǎng)的發(fā)展,心率統(tǒng)計也從此開始全面進入人們的視野及生活。為何人們關(guān)注心率統(tǒng)計?事實上,心率數(shù)據(jù)可以反映人身的多項健康指標(biāo),諸如在睡眠情況、運動時所處狀態(tài),甚至也能根據(jù)對人身

4、實時的心率數(shù)據(jù)來跟蹤人的內(nèi)心情緒的波動。本項目的選題方向,緊扣時代及社會熱點,在設(shè)計研究上,對算法的深入,也同時揭開了可穿戴設(shè)備的神秘面紗,讓我們更接近實際學(xué)習(xí)應(yīng)用的學(xué)習(xí)及實踐。1.2、項目目標(biāo):在本項目的設(shè)計實踐中,本小組成員都期待在硬件設(shè)計完備的基礎(chǔ)上,通過對MAX30100芯片的深入,進而自主設(shè)計心率算法及軟件框架來實現(xiàn)較為準(zhǔn)確的心率檢測。3二、項目內(nèi)容及硬件設(shè)計2.1、系統(tǒng)器件介紹:本次項目作品,主體采用MAX30100傳感器芯片模塊,及MCU單片機開發(fā)箱,其中MAX30100是一款集成有脈搏血氧儀和心率監(jiān)測傳感器的模塊。該器件集成有兩個LED、一個光電探測器, 經(jīng)過優(yōu)化的光學(xué)器件和低

5、噪聲模擬信號處理器,可檢測脈搏血氧及心率信號。MAX30100采用1.8V和3.3V的電源電壓。可通過軟件來關(guān)斷電源,待機模式下的電流消耗量可忽略不計,因而可以始終保持電源連接。典型應(yīng)用有健身輔助設(shè)備、醫(yī)療監(jiān)控設(shè)備和可穿戴設(shè)備。其中,MAX30100電路整體視圖如下:MCU單片機開發(fā)箱,是具備IAP15W4K58S4型號MCU芯片的單片機開發(fā)箱,箱上具有由兩片HC595動態(tài)驅(qū)動的8個數(shù)碼管,及4*4物理按鍵,及兩個中斷物理按鍵。以上兩個都支持I2C接口。數(shù)據(jù)顯示MCU數(shù)據(jù)處理MAX30100數(shù)據(jù)采集按鍵中斷4*4按鍵控制2.2、各電路模塊:4三、軟件設(shè)計3.1、程序開發(fā)使用軟件:本項目程序開發(fā)

6、所使用軟件為Keil for C51 的v4版本,及STC公司所提供的芯片燒寫軟件。其中,本小組在此提出幾點注意事項。在本項目的程序開發(fā)過程中,本小組成員發(fā)現(xiàn),在程序的功能擴展中,對所使用的程序開發(fā)軟件有一定要求。本程序代碼基本超出未激活版本Keil for C51所給的空間,所以在程序開發(fā)中,既要求程序開發(fā)人員對程序空間要節(jié)約使用,對代碼多進行優(yōu)化,同時即使節(jié)約使用,在程序開發(fā)末期也可能出現(xiàn)空間溢出,所以也要求程序開發(fā)軟件處于激活狀態(tài),如此才能得到更多的空間資源。另外在程序燒寫過程中,要求操作開發(fā)人員依據(jù)程序燒寫流程進行,由此避免硬件不必要的損壞,及實驗錯誤等。開始初始化掃描鍵盤掃描中斷計時

7、采集處理數(shù)據(jù)(讀、寫、轉(zhuǎn)換)掃描顯示結(jié)束3.2、程序流程圖:53.3、軟件設(shè)計(main函數(shù)部分):int main()u8 i;P0M1 = 0;P0M0 = 0;/設(shè)置為準(zhǔn)雙向口P1M1 = 0;P1M0 = 0;/設(shè)置為準(zhǔn)雙向口P2M1 = 0;P2M0 = 0;/設(shè)置為準(zhǔn)雙向口P3M1 = 0;P3M0 = 0;/設(shè)置為準(zhǔn)雙向口P4M1 = 0;P4M0 = 0;/設(shè)置為準(zhǔn)雙向口P5M1 = 0;P5M0 = 0;/設(shè)置為準(zhǔn)雙向口P6M1 = 0;P6M0 = 0;/設(shè)置為準(zhǔn)雙向口P7M1 = 0;P7M0 = 0;/設(shè)置為準(zhǔn)雙向口display_index = 0;IE1 = 0;/

8、外中斷1標(biāo)志位IE0 = 0;/外中斷0標(biāo)志位EX1 = 1;/INT1 EnableEX0 = 1;/INT0 EnableIT0 = 1;/INT0 下降沿中斷IT1 = 1;/INT1 下降沿中斷EA = 1;/允許總中斷AUXR = 0x80;/Timer0 set as 1T, 16 bits timer auto-reload, /使用Timer0的16位自動重裝來產(chǎn)生1ms節(jié)拍,程序運行于這個節(jié)拍下, 用戶修改MCU主時鐘頻率時,自動定時于1ms.TH0 = (u8)(Timer0_Reload / 256);/Timer0_Reload Timer 0 中斷頻率, 1000次/

9、秒 1msTL0 = (u8)(Timer0_Reload % 256);/通過 % / 分別獲取高低位時鐘值 u8 無符號8字節(jié)整型ET0 = 1;/Timer0 interrupt enable /時鐘中斷使能TR0 = 1;/Timer0 run/時鐘運行EA = 1;/允許總中斷for(i=0; i<8; i+)LED8i = 0x21;/上電消隱KeyHoldCnt = 0;/鍵按下計時KeyCode = 0;/給用戶使用的鍵碼, 116有效IO_KeyState = 0;IO_KeyState1 = 0;IO_KeyHoldCnt = 0;cnt50ms = 0;msecon

10、d = 0;ns = 0; n = 0; f = 0; K = 2; Hr_state = 1;6while(1)if(+cnt50ms >= 10)/20ms掃描一次行列鍵盤cnt50ms = 0;IO_KeyScan();if(KeyCode != 0)/有鍵按下if(KeyCode = 17)K = 0;if(KeyCode = 21)K = 1;if(KeyCode = 25)K = 2;KeyCode = 0;/*if(+msecond = 200 && K = 0)msecond = 0;ReadMAX30100_Temp();DisplayMAX30100_

11、Temp();if(+msecond = 200 && K = 1)msecond = 0;ReadMAX30100_SpO2();DisplayMAX30100_SpO2(); */if(f && Hr_state)f = 0;ReadMAX30100_Hr();DisplayMAX30100_Hr(); 73.4、算法問題及分析:在本項目中,由于在硬件的設(shè)計及準(zhǔn)備上的完備,在項目進行的過程中,所遇見的問題基本集中于本項目的算法設(shè)計及軟件程序的框架設(shè)計之上。在以下的問題列舉與分析中,主要提及重要部分。3.4.1、 關(guān)于整體代碼框架中存在的問題:在整體代碼框架中

12、,如3.2中的程序流程圖所示,基本采用分段式的各部分模塊執(zhí)行而行進,再通過時鐘及外設(shè)(諸如鍵盤,或心率采樣行為)的中斷來響應(yīng)及作出反饋。其中,在時鐘中斷中,由于MAX30100芯片的硬件設(shè)計,基本都存在對時鐘延時的需要,一為確保采樣準(zhǔn)確,二為實現(xiàn)硬件的時鐘響應(yīng)兼容。而正由于此,當(dāng)時鐘延時積累超出一定范圍時,對時鐘中斷的設(shè)計要求則不得不通過補償方式,不斷調(diào)試修正。另外,時鐘延時也在一定程度上影響外設(shè)的響應(yīng)。所以,在整體代碼框架中,非常需要注意在循環(huán)、中斷、反饋及實際硬件影響。3.4.2、關(guān)于對MAX30100芯片的硬件驅(qū)動:通過查看MAX30100芯片手冊,以下給出關(guān)于對MAX30100關(guān)鍵部分

13、的FIFO讀寫的偽代碼。偽代碼,示例如下:Pseudo-Code Example of Reading Data from FIFO/ 從FIFO中讀取數(shù)據(jù)的偽代碼示例First transaction: Get the FIFO_WR_PTR:/ 第一次交易:獲得fifo_wr_ptr:START;Send device address + write modeSend address of FIFO_WR_PTR;REPEATED_START;Send device address + read modeRead FIFO_WR_PTR;STOP;8The central processo

14、r evaluates the number of samples to be read from the FIFO: / 中央處理器評估從FIFO讀取的樣本數(shù)量:NUM_AVAILABLE_SAMPLES = FIFO_WR_PTR - FIFO_RD_PTR(Note: pointer wrap around should be taken into account)NUM_SAMPLES_TO_READ =< less than or equal to NUM_AVAILABLE_SAMPLES >Second transaction: Read NUM_SAMPLES_TO

15、_READ samples from the FIFO: / 第二次交易:從FIFO讀取num_samples_to_read樣品:START;Send device address + write modeSend address of FIFO_DATA;REPEATED_START;Send device address + read modefor (i = 0; i < NUM_SAMPLES_TO_READ; i+) Read FIFO_DATA;Save IR15:8;Read FIFO_DATA;Save IR7:0;Read FIFO_DATA;Save R15:8;R

16、ead FIFO_DATA;Save R7:0;STOP;Third transaction: Write to FIFO_RD_PTR register. If the second transaction was successful, / 第三次交易:寫fifo_rd_ptr寄存器。如果第二次交易成功, FIFO_RD_PTR points to the next sample in the FIFO, and this third transaction is not necessary. / fifo_rd_ptr指向FIFO的下一個樣品,這第三次交易不是必要的。 Otherwise

17、, the processor updates the FIFO_RD_PTR appropriately, so that the samples are reread./ 另外,處理器適當(dāng)?shù)馗耭ifo_rd_ptr,使得樣品得以重讀。START;Send device address + write modeSend address of FIFO_RD_PTR;Write FIFO_RD_PTR;STOP;83.4.3、關(guān)于在驅(qū)動FIFO時需要注意的細(xì)節(jié):在寫MAX30100芯片硬件驅(qū)動時主要問題在于對FIFO的操作上,在此需要注意的細(xì)節(jié)主要體現(xiàn)在,在使用IIC協(xié)議對FIFO的寄存器進

18、行操作時,首先根據(jù)項目需求,如采集樣本數(shù)及精度等,配置config寄存器,接著需要對FIFO的各個寄存器進行清零(寫0x00),其中包括寫寄存器、讀寄存器、計數(shù)寄存器和數(shù)據(jù)寄存器,最后才進行寫操作或讀操作。3.4.4、關(guān)于對項目硬件調(diào)試:在程序基本完成時,由于要在實際環(huán)境下完成心率數(shù)據(jù)的采集及處理,所以在硬件調(diào)試中,必然根據(jù)實際測得數(shù)據(jù),計算出實際測量誤差,再由此修改調(diào)節(jié)在中斷、延時、反饋、采集數(shù)量、樣本精度等過程中的數(shù)據(jù)參數(shù)。硬件調(diào)試中,重點注意誤差分析。本項目的實驗誤差,一體現(xiàn)在實驗操作,二體現(xiàn)在數(shù)據(jù)處理及算法優(yōu)化上。所以,在實驗操作上,要求實驗人員多次重復(fù),控制操作流程;在數(shù)據(jù)處理及算法優(yōu)化上,要求程序開發(fā)人員對

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論