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