閉瓊元 陳劍雪 張琳珊 焦世恒 宗瑪?shù)? 袁榮浩
摘要:本次主要介紹以aduino Mega 2560芯片為核心,配合外圍電路,利用MAX30100傳感器來進行心率監(jiān)測及預(yù)警的實際設(shè)計過程。同時MAX30100芯片傳感器屬于I2C接口器件,故在程序開發(fā)中,采用I2C接口協(xié)議進行。
關(guān)鍵詞:Mega 2560;MAX30100;傳感器;FIFO寄存器;I2C
一、引言
心臟是人體發(fā)動機,對人體健康至關(guān)重要。如何早期覺察“發(fā)動機”出了故障,及時檢修,保證其正常運轉(zhuǎn),已經(jīng)成為一項不可忽略的保健措施。心臟病發(fā)病時常具有突發(fā)性和一過性的特點,如果發(fā)現(xiàn)不及時將會危及生命。而心率反映著心臟功能,所以可以通過監(jiān)測心率來反映心臟功能。此次項目設(shè)計的“家用心率監(jiān)護與預(yù)警裝置”可以檢測心率是否在正常范圍、以及監(jiān)測心率異常增高、心臟停搏等。利用血液是高度不透明的液體,光照在一般組織中穿透性要比在血液中大幾十倍的特點,可通過光電容積法制成的脈搏傳感器,通過對手指末端透光度的監(jiān)測,間接檢測出脈搏信號。光電式脈搏傳感器具有結(jié)構(gòu)簡單、無損傷、可重復(fù)好等優(yōu)點。根據(jù)光電容積法原理,從改善光源、消除景光噪聲、電磁屏蔽和提高信噪比四個方面出發(fā),研究改進方法,對提高使用的靈活性和準(zhǔn)確度有著重大意義。通過光電傳感器對脈搏信號進行檢測,并用單片機技術(shù)進行數(shù)據(jù)處理,實現(xiàn)智能化的脈搏測試技術(shù)。人正常心率范圍在60到100次,當(dāng)心率低于60或者高于100時心率可能存在異常,當(dāng)心率可能發(fā)生異常時,我們所設(shè)計的家用心率監(jiān)護與預(yù)警裝置可以起到及時報警的作用。
二、設(shè)計方案
1、裝置組成及工作原理:
此設(shè)計以單片機aduino Mega 2560為核心,由心率傳感器MAX300100采集脈搏信號。當(dāng)一定波長的光束照射到指端皮膚時,光束將通過透射或反射方式傳送到光電接收器,在此過程中,LED光射向皮膚,透過皮膚組織反射回的光被光敏傳感器接受并轉(zhuǎn)換為電信號再經(jīng)過AD轉(zhuǎn)換成數(shù)字信號,簡化過程:光--->電--->數(shù)字信號。由于動脈對光的吸收有變化而其他組織對光的吸收基本不變,得到的信號就可以分為直流DC信號和交流AC信號。提取其中的AC信號,就反映出血液流動的特點。而MAX30100芯片有兩個LED燈,內(nèi)部集成ADC數(shù)據(jù)轉(zhuǎn)換,經(jīng)過優(yōu)化的光學(xué)器件和低噪聲模擬信號處理器,檢測脈搏血氧及心率信號。采集到的信號為脈沖信號,以該脈沖信號作為中斷信號交由單片機進行脈沖周期的計算,然后得到每分鐘的心率,若測量數(shù)據(jù)超過正常范圍(小于60次或大于100次),報警器就會報警。
2、各電路模塊:
三、軟硬件設(shè)計
軟件介紹:Arduino集成開發(fā)環(huán)境(或是Arduino IDE)包含了一個用于寫代碼的文本編輯器、一個消息區(qū)、一個文本控制臺以及一個帶有常用功能按鈕和文本菜單的工具欄。軟件連接Arduino和Genuino之后,能給所連接的控制板上傳程序,還能與控制板相互通信。
主控制器模塊:主控制器使用Aduino Mega2560單片機。Arduino Mega2560是采用USB接口的核心電路板,具有54路數(shù)字輸入輸出,適合需要大量IO接口的設(shè)計。處理器核心是ATmega2560,它的接口齊全,一個就能滿足多種需要,這給我們省去了很多不必要的麻煩。Arduino Mega2560可以通過3種方式供電,而且能自動選擇供電方式:外部直流電源通過電源插座供電、電池連接電源連接器的GND和VIN引腳、USB接口直接供電。這里我們使用連接3.3V的GND和VIN引腳。
傳感器模塊:這里我們使用MAX30100心率傳感器,集成有兩個LED燈,一個光檢測器,優(yōu)化光學(xué)和低噪聲的仿真信號處理,以檢測脈搏血氧飽和度和心臟速率信號。只要將手指頭緊貼在傳感器上,就能估計脈搏血氧飽和濃度及脈搏(相當(dāng)于心跳)。兩個LED發(fā)出波長的光,即紅色和紅外。發(fā)射的光線可透過人體內(nèi)的單組織點。先由響應(yīng)紅色和紅外光線的單個光電二極管接收光線,然后由互阻放大器產(chǎn)生正比于接收光強的電壓。紅色和紅外LED通常采用時間復(fù)用的方式,因此相互間不會干擾。環(huán)境光線經(jīng)估計將從每個紅色和紅外光線中扣除。測量點包括手指、腳趾和耳垂。因為指端皮膚最薄,所以我們的實際操作在指端進行。由于MAX30100芯片的硬件設(shè)計,基本存在對時鐘延時的需要,當(dāng)延時積累超出一定范圍時,對時鐘中斷的設(shè)計要求則不得不通過補償方式???,不斷調(diào)試修正。
報警模塊:報警器為蜂鳴器,由單片機控制當(dāng)所測心率低于60或大于100時,則蜂鳴器報警。
顯示模塊:采用RS485串口表LED數(shù)碼管顯示屏232/TTL顯示模塊。單片機Mega2560可以通過RS485總線、RS232或者TTL接口發(fā)送指令控制顯示屏的顯示內(nèi)容。顯示屏上面的數(shù)據(jù)來自于MAX30100的兩個LED燈。顯示器支持常用的ASCII協(xié)議。可顯示整數(shù)小數(shù)、負(fù)號、小數(shù)點等ASCII字符,是市面上支持ASCII字符最全面的一款數(shù)碼顯示器。
四、難點突破
MAX30100心率傳感器的通訊是I2C的通訊,在通訊過程中要注意一個點,就是在進行讀操作時,讀出一個寄存值后給予ACK,讀寄存器的指針會自動加一,但有一個例外就是FIFO寄存器(0X50)。SCL、SDL都要4.7K上拉電阻,要外接一個,而且電壓不宜過大,以免燒壞芯片!用3.3V電壓是比較合適的。兩個LED的電流不要設(shè)成最大的值,否則讀出來的值都是0xffff。在數(shù)據(jù)處理方面,Aduino代碼燒錄完成后,模擬出來的數(shù)據(jù)不是0就是255,??我們使用一個示波器,檢查時序有沒有錯誤,以及觀察器件通信時器件有無反應(yīng),一步步發(fā)現(xiàn)并解決問題,而不是單純靠瞎猜。在實際操作中發(fā)現(xiàn),使用IR(紅外)讀出的心跳值會比較大,所以使用IR的數(shù)據(jù)作為測心率的標(biāo)準(zhǔn)。在程序基本完成時,因為要在實際環(huán)境中完成心率數(shù)據(jù)的采集及處理,所以在硬件的調(diào)試中,一定要根據(jù)實際測的數(shù)據(jù),計算測量誤差,然后不斷調(diào)節(jié)程序,以使測出的心率與實際心率貼合。
五、收獲體會
參加本次項目實踐是一次收獲很大的經(jīng)歷。經(jīng)過小組成員的團結(jié)協(xié)作,我們終于完成了項目要求。人們都說大學(xué)是培養(yǎng)解決問題能力的階段,在實踐之中我們培養(yǎng)了個人獨立思考能力。在項目實施過程中發(fā)現(xiàn)問題、提出問題并解決問題。最重要的是我們增強了團隊協(xié)作意識,做完這個項目之后,我們的眼界更開闊了,本次項目成為我們?nèi)松械囊还P財富。
參考文獻(xiàn):
[1]孫駿榮、吳明展、盧聰勇.Arduino一試就上手[M].臺北:科學(xué)出版社,2012:7-25
[2]Dale Wheat.Arduino技術(shù)內(nèi)幕[M].北京:人民郵電出版社,2013:57-59
作者簡介:閉瓊元,男,上海工程技術(shù)大學(xué)電子電氣工程學(xué)院自動化系學(xué)生。