吳云龍,程武山,2
(1.上海工程技術(shù)大學(xué)機械與汽車工程學(xué)院,上海 201620;2.安徽非禾科技有限公司,安徽 蕪湖 241003)
我國醫(yī)療器械研發(fā)還處于初級階段,不能完全滿足社會需求[1-2]。血壓是人體健康的重要指標,國內(nèi)的血壓測量方式大多為直接測量,即水銀式測壓法,該方法存在攜帶不便、技術(shù)要求高等缺點。國外的血壓測量方式多為間接測量。本文結(jié)合以上兩種測量方式,設(shè)計了一種基于STM32F407 的血壓動態(tài)監(jiān)測系統(tǒng)。通過對血壓的測量原理分析,設(shè)計了微型氣泵、電磁閥、信號放大電路、濾波電路等[3-4],通過軟件設(shè)計將壓力曲線和測量值顯示在屏幕上,并通過無線局域網(wǎng)上傳到上位機界面實現(xiàn)實時監(jiān)控。
本文采用32 位的STM32F407 作為微控制器,主要負責(zé)血壓數(shù)據(jù)的采樣及與串口屏進行通訊。壓力傳感器采集到的信號經(jīng)過直流信號放大電路、交流信號濾波電路送到STM32 內(nèi)部進行模數(shù)轉(zhuǎn)換,通過串口與顯示屏進行數(shù)據(jù)通訊,最終顯示在屏幕上。采用無線局域網(wǎng)上傳到上位機界面數(shù)據(jù)庫,實現(xiàn)實時監(jiān)控。采用定時器輸出PWM 方波控制氣泵的充氣速度以適應(yīng)人體的壓力反饋。最后根據(jù)相應(yīng)算法進行濾波、擬合,計算出血壓值[5]。系統(tǒng)總體設(shè)計架構(gòu)如圖1 所示。
Fig.1 Overall system architecture圖1 系統(tǒng)總體架構(gòu)
血壓是血液作用于單位面積上的側(cè)壓力。血壓主要由3 個基本因素形成:①心室收縮射血所產(chǎn)生的動力和血液在血管內(nèi)流動所受到的阻力間的相互作用。當心臟收縮射血時,血液就對血管壁產(chǎn)生側(cè)壓力,此為動脈壓力的直接來源,如果心臟沒有跳動也就沒有血壓了;②循環(huán)血量必須足夠大。足夠大的循環(huán)血量是形成血壓的重要因素。假如血量不夠大,血管壁處于凹陷狀態(tài)就不能形成血壓;③大血管壁的彈性。在心臟收縮噴射出血液時,因為阻力的原因動脈血流速度緩慢。在壓力的作用下,彈力纖維被拉長,彈力變大,能量從之前的動能轉(zhuǎn)化為位能。與此相反,心臟舒張時,管腔變小,位能又轉(zhuǎn)化為動能,促使血液流動,保持血液對于血管壁的側(cè)壓力。當心臟收縮時,大動脈流入大量血液致使壓力升高,在心室收縮中期達到最高,這時的壓力稱為收縮壓。當心臟舒張時,血液暫停進入動脈,在這之前進入動脈的血液利用血管的彈性和張力作用繼續(xù)向前流動,此時動脈內(nèi)壓力下降,于心室舒張末期達到最低值,稱為舒張壓(或低壓)。
柯式音法即水銀測壓法,是將袖套綁在人的胳臂上不斷充氣,當壓力值在180mmhg 左右時停止加壓,打開泄氣閥,當聽診器聽到明顯搏動聲時血壓計的讀數(shù)即為收縮壓。然后不斷放氣,當聽診器聽不到搏動聲時即為舒張壓。由此可知,柯式音法人為因素影響較大,存在很大的誤差。示波法基于統(tǒng)計學(xué)原理,其血壓檢測由血液撞擊血管壁產(chǎn)生的振動來計量。尋找來自于血管壁的搏動包絡(luò)痕跡并根據(jù)包絡(luò)痕跡與動脈血壓之間的關(guān)系得到血壓值。示波法主要有幅度系數(shù)法和波形特征法兩種。幅度系數(shù)法旨在通過高壓、低壓、平均壓之間的關(guān)系來確定血壓值。示波法測血壓如圖2 所示。
Fig.2 Measuring blood pressure by oscillographic method圖2 示波法測血壓
圖2 中,①為表袖帶的壓力曲線,②為脈搏波曲線。t1時刻,脈搏波中出現(xiàn)明顯的脈搏跳動,對應(yīng)收縮壓;t2時刻對應(yīng)平均壓;t3時刻對應(yīng)舒張壓。
采用基于內(nèi)核Cortex-M4 的STM32F407 系列微控制器,其系統(tǒng)時鐘為168MHz,具有傳輸速度快、集成單精度FPU 等優(yōu)點,擁有2 個全雙工的I2S,17 個定時器,6 個串口,3 個SPI,運行 速度可達到10.5Mbit/s。2 個12 位的DAC,3個12 位的ADC,可達到2.4MSPS 或在交替模式中達到7.2MSPS 等豐富的外設(shè)資源。
血壓測量采用壓力傳感器MPS-2107-006GC,其可以提供精確的、與外界壓力感線性相關(guān)的電壓輸出,廣泛應(yīng)用于電子血壓計、心率檢測儀、汽車等領(lǐng)域。MPS-2107-006GC 內(nèi)部電路由4 個電阻組成電橋,通過4 個電阻阻值的變化間接反映壓力的變化,通過傳感器轉(zhuǎn)化的電壓信號進行輸出,傳感器輸出的電壓模擬信號通過模數(shù)轉(zhuǎn)換芯片轉(zhuǎn)換成數(shù)字量,通過IIC 與控制器進行通訊[6]。
3.2.1 直流信號放大電路
因壓力傳感器輸出的信號很小,因此需要對直流信號放大。直流信號放大電路采用MPS2107 芯片、ICL7660 芯片、AD620 放大器。MPS2107 芯片實現(xiàn)對壓力信號的實時采集,AD620 芯片將微弱信號進行放大,ICL7660 芯片輸出對應(yīng)的負壓值。通過改變電位計的值調(diào)整放大倍數(shù)[7]。直流放大電路如圖3 所示。
Fig.3 DC amplifier circuit圖3 直流放大電路
3.2.2 交流信號濾波放大電路
交流信號濾波放大電路采用LM324N 芯片,將采集到的直流信號經(jīng)過三級放大,將輸出信號作為脈搏跳動時的信號。系統(tǒng)開始運行時,氣泵開始工作,當壓力值為180mmhg 時,通過模數(shù)轉(zhuǎn)換為21mV。STM32F407 的ADC芯片供電來自系統(tǒng)電源,為3.3V,所以要將21mV 放大157倍,電位計阻值應(yīng)設(shè)計為317Ω。最后,將直流信號經(jīng)放大器由PC0 口送入模數(shù)轉(zhuǎn)換器[8]。交流信號濾波放大電路如圖4 所示。
Fig.4 AC signal filtering and amplifying circuit圖4 交流信號濾波放大電路
本文采用IIC 與STM32F407 通訊,傳感器采集數(shù)據(jù)后由芯片進行模數(shù)轉(zhuǎn)換,將轉(zhuǎn)換得到的數(shù)字量通過IIC 與下位機進行通訊。IIC 是一種半雙工通信方式,主要包括數(shù)據(jù)線(SDA)與時鐘線(SCL),可實現(xiàn)數(shù)據(jù)傳輸。IIC 協(xié)議主要由空閑狀態(tài)、開始信號、停止信號、應(yīng)答信號、數(shù)據(jù)的有效性、數(shù)據(jù)傳輸?shù)冉M成。當時鐘線電平為高電平時,數(shù)據(jù)線的電平由高變?yōu)榈图礊槠鹗夹盘枺c此相反就是停止信號。由此可見,起始信號與停止信號都是一個電平跳變信號,并不是一個電平信號[9]。當主機向從機發(fā)送一個字節(jié)時,在第9 個時鐘周期內(nèi)釋放數(shù)據(jù)線,由從機向主機發(fā)出一個應(yīng)答信號。當反饋回來的應(yīng)答信號為低電平時就認為有效,說明從機已經(jīng)成功接收該字節(jié);反之,則說明應(yīng)答無效,從機沒有接收到數(shù)據(jù)[10]。
給控制板上電,對串口、WiFi、ADC、TIM3、IIC 等初始化,然后啟動電機給袖帶充氣,采用定時器輸出PWM 方波改變電機的充氣速度,將電磁閥打開并將出氣口關(guān)閉。將觸摸屏顯示在初始界面[11-12]。通過執(zhí)行Get_Adc(10)函數(shù)判斷袖帶壓力是否達到180mmhg,若滿足條件,勻速泄氣,開始進行數(shù)據(jù)采集。對直流信號以及交流信號采集1 000個數(shù)據(jù),交流信號通過調(diào)用Get_Adc(13)函數(shù)將數(shù)值存到valueAC[j]中,將所得到的數(shù)據(jù)通過USART2 賦值給數(shù)據(jù)寄存器。將交流信號通過調(diào)用Get_Adc(10)函數(shù)將值存到valueDC[j]中,所得到的數(shù)據(jù)通過USART2 賦值給數(shù)據(jù)寄存器。血壓測量流程如圖5 所示[13]。
Fig.5 Blood pressure measurement process圖5 血壓測量流程
4.2.1 高斯曲線原理分析
高斯曲線擬合方法如下:
假設(shè)采集的一組實驗數(shù)據(jù)為(xi,yi)(i=1,2,3,...,N),則高斯函數(shù)表達式為:
式(1)中,待定系數(shù)為a,b 和c,代表高斯曲線的峰高、半寬度和峰位置。對式(1)兩邊取自然對數(shù),化為:
在不考慮總量誤差E 影響的情況下,根據(jù)最小二乘法原理可求得擬合常數(shù)b0,b1,b2,構(gòu)成的矩陣B 的廣義最小二乘解為:
4.2.2 傳感器信號采集分析
壓力信號主要由袖帶壓力信號即直流信號和脈搏波信號即交流信號組成。將采集到的血壓波形實時顯示在屏幕上,如圖6 所示(彩圖掃OSID 碼可見,下同)。紅線代表脈搏波包絡(luò)線,綠色代表袖帶壓力的包絡(luò)線。
4.2.3 選取脈搏波包絡(luò)線峰值點
壓力傳感器采集到信號之后需要進行濾波處理。將每個單波的最大值作為單波的峰值點[14-15]。在峰值點中存在一些干擾,對曲線的擬合精度以及血壓值確定有很大影響,因此需要對峰值點進行處理。具體方案如下:假設(shè)第i-1 與i-2 個峰值點是正常的,如果滿足第i個峰值點的值在第i-1 個峰值點的值在0.6~1 內(nèi),那么第i個峰值點就不是干擾點,保留;否則說明該峰值點是干擾點,去除。當泄氣閥開始勻速泄氣時,袖帶壓也不是勻速減小。由屏幕顯示選取脈搏波最大的峰值的0.4~0.6 倍之間的波形曲線擬合效果較好。
4.2.4 曲線擬合與血壓計算
得到脈搏波峰值點后就可對曲線進行擬合。最小二乘法廣泛應(yīng)用于曲線擬合,如果選取的函數(shù)為冪函數(shù)就為多項式擬合,如果選取的函數(shù)為高斯函數(shù)就為高斯擬合[16]。本文采用高斯擬合,擬合曲線如圖7 所示。
Fig.6 Blood pressure waveform圖6 血壓波形
Fig.7 Gaussian curve fitting圖7 高斯曲線擬合
其中,x代表時間,單位為s;y代表血壓值,單位為mmhg。
平均壓為脈搏波最大峰值點對應(yīng)的袖帶壓值,收縮壓為脈搏波明顯跳動時對應(yīng)的袖帶壓值(第i+1 脈搏波的峰值大于第i個脈搏波的峰值5 倍),舒張壓為脈搏波逐漸趨于不變并且第i個脈搏波峰值點的值大于第i-1 的脈搏波峰值的值對應(yīng)的袖帶壓值。根據(jù)經(jīng)驗公式,平均壓等于1/3的收縮壓加上2/3 的舒張壓[17-18]。
串口屏采用迪文科技公司研發(fā)的產(chǎn)品,采用5V 供電,分辨率為480*320,采用FPC 軟排線與STM32 進行通訊,通訊的IO 口為PA2,PA3。采用DGUS Tool 軟件進行組態(tài),通過R1 寄存器設(shè)置通訊的波特率為115 200,R3 寄存器設(shè)置串口幀高字節(jié)為0x5A,RA 寄存器串口幀低字節(jié)為0xA5。血壓測量界面由收縮壓顯示框、舒張壓顯示框以及壓力曲線顯示框組成。變量數(shù)據(jù)顯示指令格式是:“5A A5 05 82 00 00 00 26”,5A A5 是數(shù)據(jù)信息的針頭,固定不變,05 表示實際需要發(fā)送的數(shù)據(jù)為5 個字節(jié),82 對應(yīng)的是寫數(shù)據(jù)指令,00 00 表示該數(shù)據(jù)所要存儲在屏幕寄存器的具體地址,00 26 表示需要顯示的數(shù)據(jù)值[19]。Char Systolic_pressure[8]={0x5A,0XA5,0X05,0X82,0X00,0x00,0x00,0x00};發(fā)送收縮壓數(shù)據(jù)組charDiastolic_pressure[8]={0x5A,0XA5,0X05,0X82,0X00,0x01,0x00,0x00};發(fā)送舒張壓數(shù)據(jù)組,0x84 指令:寫曲線緩沖區(qū),0x82 指令:變量地址(2 個字節(jié))+數(shù)據(jù)(2個字節(jié))。
上位機顯示界面采用C#語言設(shè)計,顯示血壓、心率、呼吸、體溫、血氧等五大參數(shù),界面右上角標示生命體征測量儀是否通過WiFi 連接到上位機,界面上給“歸檔”按鈕注冊了一個點擊事件,將每次測得的數(shù)據(jù)自動歸檔到數(shù)據(jù)庫,以便掌握自己的身體情況,實現(xiàn)實時監(jiān)控[20-22]。WiFi 通訊模塊采用ESP8266,設(shè)置為AP 模式,TCP 通訊協(xié)議,采用AT指令集對其初始化,設(shè)置IP 地址、端口號以及熱點名稱與密碼。能作為熱點被其他設(shè)備連接,也可主動連接其他AP熱點,以保證多設(shè)備之間進行數(shù)據(jù)傳輸與共享。
實驗選用160 名志愿者,其中有100 位老年自愿者,50男,50 女,年齡在45-80 歲之間,60 名年輕志愿者,男30 名,女30 名,年齡在21-40 歲之間。測試之前在25℃環(huán)境靜坐10min,同一志愿者測試兩次,保證袖帶的位置與心臟的位置處于相同高度。電子血壓計與水銀測量儀測量結(jié)果如表1 所示。
Table 1 Measurement results of electronic sphygmomanometer and mercury meter表1 電子血壓計與水銀測量儀測量結(jié)果
對30 名志愿者使用電子血壓計進行血壓測量,步驟是第一觀測者、第二觀測者、第一觀測者。3 次測得的血壓值為:舒 張 壓60~93mmhg(69.13±7.77mmHg),收 縮 壓80~133mmhg(101.73±11.59 mmHg),由此可見,使用本電子測量儀測得血壓值無顯著差異,舒張壓的相關(guān)系數(shù)為0.898,收縮壓的相關(guān)系數(shù)為0.872。
血壓數(shù)據(jù)測好之后,通過無線局域網(wǎng)上傳到上位機界面,界面顯示某次測得的數(shù)據(jù)。將每次測得的數(shù)據(jù)上傳到界面,并且歸檔到數(shù)據(jù)庫,實現(xiàn)實時監(jiān)控。
本文針對血壓實時監(jiān)控需求設(shè)計了基于STM32F407的血壓動態(tài)監(jiān)測系統(tǒng)。對血壓形成原理、血壓測量方法進行了分析,設(shè)計了直流信號放大電路、交流信號濾波放大電路及其軟件。通過采集大量數(shù)據(jù),繪制曲線并擬合進行血壓動態(tài)監(jiān)測。實驗展示血壓動態(tài)監(jiān)測系統(tǒng)運行穩(wěn)定、可靠、精度高,可以廣泛應(yīng)用到醫(yī)療領(lǐng)域。后續(xù)工作是優(yōu)化算法以進一步提升測量準確度,針對不同人群設(shè)計出通用的算法,使血壓計得到更廣泛的應(yīng)用。