向蓓蓓,郭妍,謝光敏,陳吉鑫
(四川水利職業技術學院信息工程學院,成都 610039)
隨著社會經濟突飛猛進的發展和人民生活水平的日益提高,人們患上血液疾病的概率越來越高,眾所周知,血液的容積、血管硬化的程度、心臟功能、內分泌、運動、情緒等都是影響血壓的因素。要想了解到底是什么因素,到底影響多大,還得依靠血壓的精確測量加以判斷。生理學家Harrey在1628年提出了血液循環理論,在那之后的幾百年來,找到既方便有效又準確可靠的血壓測量方法便成為研究者們一直追求的目標,時至今日,血壓測量的方法已經有很多,但每種方法都存在一定的缺陷,始終差強人意。基于袖帶充放氣的示波法對比電子柯氏音法,具有很明顯的優點,示波法的抗干擾性強,重復性好[1],因此是電子血壓計和血壓監護儀應用最廣泛的方法。基于此,本文旨在通過袖帶式血壓信號采集的設計,采用示波法原理進行血壓測量,對比日常中各類血壓測量技術,找到最準確、最便捷的檢測方式,實現對血壓精確的測量。
設計的模擬電子血壓計的主要組成部分包括單片機、壓力傳感器、初級次級運算放大電路、濾波電路、數模轉換電路、顯示電路。首先通過壓力傳感器采集血壓信號,血壓信號通過運算放大電路和濾波電路的預處理,從而分離出兩路信號,模數轉換電路再對兩路信號進行模數轉換,最后由單片機來完成信號的儲存與計算[2],計算所得到的數據控制血壓計的外圍電路,從而通過顯示電路對收集到的血壓數據的數值進行顯示。實驗所設計的整個血壓采集系統主要由以下幾部分組成。
1.1.1 信號采集
由壓力傳感器、前置放大器、帶通與低通濾波器構成,主要功能是分離出袖帶壓力信號和脈搏波信號。
1.1.2 模數轉換
由多路D/A轉換器構成,主要是將袖帶壓力信號和脈搏波信號轉換成數字信號。D/A轉換器為單片機的外設。
1.1.3 中央處理單元
系統的中央處理單元主要部分采用的是單片機AT89C52,其主要的功能:微控制器接收特定的系統參數設置和來自微控制器的外部控制命令,并將測量數據傳送回主微控制器。這些數據為血壓計算提供了具體信息,包括收縮壓、舒張壓、平均血壓數據、氣泵模數轉換控制以及測量過程中各種算法的實施。微控制器控制氣泵的填充和排空過程,并實現對報警系統的控制。
1.1.4 顯示模塊
顯示電路主要采用LCD1602,用于顯示舒張壓、收縮壓和平均血壓值。
根據系統構成框圖(如圖1所示),該系統的整個工作流程如下:手臂套上袖帶,袖帶充氣放氣,產生氣壓。壓力下血管的血流產生振蕩波,通過氣管被壓力傳感器接收。壓力傳感器將接收到的振蕩波信號傳送到差分放大電路。差分放大器將振蕩波信號分成兩路,根據振蕩波信號的不同頻率,兩路信號被一個用于分離袖帶壓力信號的低通濾波器和一個用于分離脈沖波信號的帶通濾波器分開,并一起傳送到D/A轉換器,經由數字信號電路進行處理之后,由單片機計算出舒張壓、收縮壓和平均血壓值[2]。計算數據輸入至LCD顯示。如果測量值超出正常范圍,報警信號通過顯示模塊LCD顯示為“!!!”。

圖1 系統構成框圖
采集血壓信號,系統用到的是壓力傳感器BP01,壓力傳感器BP01具有高線性、低噪聲的特性。通過溫度補償和內部標定的方式來提升測量精準度、系統穩定性。全范圍內精度為±1%,零點失調不超過±300 μV。BP01的電路連接如圖2所示。

圖2 BP01電路連接
2.2.1 前置放大電路
動脈血壓的參數范圍為10~400 mmHg,壓力傳感器BP01輸出的差分信號為0~15 mV,無法對生理信號進行直接的記錄與顯示,因為生理信號幅度偏小、頻率偏低、內阻高、噪聲大、抗干擾性弱[3]。為了克服生理信號的這些特性,就要求初級放大電路有一個合適的通帶寬度和動態范圍,必須具備較高的共模抑制比、低噪聲、高增益以及高輸入阻抗,要達到這些高要求,前置放大器將是最好的選擇。
放大電路中,U3:B和U3:C連接成同相輸入的形式,能夠對電壓起到緩沖作用,同時增大輸入阻抗。U3:D則構成差動放大器,提供差模增益,對從U3:B和U3:C傳送來的共模電壓起到抑制的作用,從而提高共摸抑制比。前置放大電路圖如圖3所示。

圖3 前置放大電路
2.2.2 分離袖帶壓力信號和脈搏波信號
袖帶壓力信號變化非常緩慢,屬于低頻信號,因而需要采用低通濾波器來提取出袖帶壓力信號。本次實驗設計采用的是二階有源低通濾波器,如圖4所示。

圖4 二階有源低通濾波器及次級放大電路圖
通常情況下,脈搏波信號的頻率在0.6~6.4 Hz范圍內,脈搏波信號還摻雜著一些高頻干擾和低頻分量。基于此,本實驗設計采用帶通濾波器進行信號除雜優化,采用兩級帶通濾波器的級聯來提高增益。兩級級聯能使頻率響應更加尖銳,從而提高輸出的信噪比。獲取脈搏波信號,將頻率設定為0.4~6.6 Hz,電路圖如圖5所示。


圖5 兩帶通濾波器的級聯
2.3.1 ADC0808模數轉換芯片
本設計用到的模數轉換芯片是ADC0808,如圖6所示。它的構成包括一個地址鎖存器、一個譯碼器、一個8路的模擬開關、一個D/A轉換器和一個三態輸出鎖存器[4]。各引腳功能如下:

圖6 ADC0808模數轉換芯片
START:啟動D/A轉換的信號輸入端,上跳沿時,所有內部寄存器處于清零狀態;下跳沿時,開始進行D/A轉換;在轉換期間,START應保持低電平。
EOC:轉換結束信號的輸出引腳,低電平時開始轉換,高電平時轉換結束[5]。
OE:輸出允許控制端,用于控制三條輸出鎖存器向單片機輸出轉換得到的數據。OE=1,輸出轉換得到的數據;OE=0,輸出數據線呈高阻狀態。
ALE:地址鎖存允許信號輸入端,高電平時有效,此時地址鎖存連同譯碼器將鎖存3位地址線的地址信號,經譯碼的通道的模擬量被選中后被轉換器轉換。
IN0~IN7:8位模擬量輸入引腳。
OUT1~OUT8:8位數字量輸出引腳。
A、B、C:對IN0—IN7進行選通的一路模擬量輸入,是3位地址輸入線。
2.3.2 單片機AT89C52
單片機AT89C52是本設計的中央處理單元,如圖7所示。內部結構與MCS-51系列單片機的構成基本相同,但數據存儲器與51系列的其他單片機相比大很多,存儲容量為256字節,單片機AT89C52的指令系數和引腳功能與MCS-51的完全兼容[6]。各引腳功能如下。

圖7 AT89C52
XTAL1:振蕩器反相放大器的輸入端。
XTAL2:振蕩器反相放大器的輸出端。
RST:復位輸入。
P0口:是一個8位漏級開路的雙向I/O口。每位能驅動8個TTL邏輯電平。當輸入高電平時,引腳作為高阻抗輸入。當訪問外部程序和數據存儲器時,P0口也被作為低8位地址/數據復用[7]。
P1口、P2口、P3口:是具有內部上拉電阻的8位雙向I/O口,P口輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯電平[7]。當輸入高電平時,內部上拉電阻將拉高端口,此時可作為輸入口。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流ILL。
2.3.3 ADC0808與單片機AT89C52的連接
模擬信號通過output0和output1進入ADC-0808,經模數轉換之后,數字信號由OUT1-8輸出到單片機P0口。如圖8所示。

圖8 D/A轉換電路
在選擇顯示器上,考慮到仿真結果的血壓計數據顯示。數碼管只能顯示數字,一次只能顯示一個內容,需要按鍵切換,操作相對麻煩。LCD顯示的內容較多,一次能把全部需要的內容顯示出來,操作更方便,看起來也更直觀。另外LCD工作電流不大、體積輕巧、功耗低、壽命長,顯示效果逼真[8],因此本設計的數據顯示采用的是LCD1602。
系統軟件設計流程如圖9所示。開始時,系統首先對按鍵進行判斷。如果按鍵按下,單片機的控制口將啟動氣泵充氣;若按鍵無效,則返回初始化重新判斷。當ADC信道0所測的血壓直流量大于4 V時,氣壓足量則充氣結束,氣泵開始放氣,此時氣壓大致為180 mmHg或略微大于180 mmHg;若血壓直流量不大于4 V,則返回初始化重新判斷。通過ADC信道1采集血壓交流分量測量出脈沖的峰峰值,并計算ADC通道0在該脈沖期間測量的袖帶壓力信號的平均值。該峰峰值和袖帶壓力信號平均值作為測量的一對數據,每個心跳脈沖對應這樣的一對數據。

圖9 系統軟件設計流程圖
由ADC信道0測到的血壓直流分量小于1 V就表示氣壓低于50 mmHg,單次測量結束。從記錄下來的多對由峰峰值和袖帶壓力信號的平均值組成的數據中找到最大的峰峰值,再從這些數據中找出最接近最大峰值0.5倍的一對數據,對應的血壓直流分量就為收縮壓;最接近最大峰值0.7倍的一對數據,對應的血壓直流分量就為舒張壓。然后對測出的血壓值是否在正常值范圍內進行判斷。本實驗設計的合理的測量范圍是收縮壓為90~140 mmHg,舒張壓為65~90 mmHg。如果測量數據不在合理范圍內,將通過LCD顯示出報警信號“!!!”。
系統在氣泵開始充氣時就開始了D/A轉換,D/A轉換與充氣放氣同時進行。單片機采用查詢P2.5口來判斷轉換是否結束,一旦模數轉換結束,P2.5接收到高電平,系統檢測到高電平后開始讀入數據。模數轉換的程序流程如圖10所示。

圖10 模數轉換程序流程圖
系統在調試仿真部分采用的是Keil uVision2和Proteus ISIS。按下按鈕,氣泵充氣。血壓直流量大于4 V時,氣泵均勻放氣,開始測量交流信號;當血壓直流量小于1 V時,測量結束,顯示模板顯示測量值。
(1)血壓測量值在系統設計的合理測量范圍內,仿真結果如圖11所示。

圖11 血壓正常顯示圖
(2)血壓測量值不在合理范圍內,LCD顯示屏上顯示報警信號“!!!”。仿真結果如圖12所示。

圖12 血壓偏高報警電路圖
本設計以單片機AT89C52為控制核心,利用單片機的高度集成化,大大簡化了實驗電路圖,再輔以壓力傳感器BP01、氣泵、報警、外圍的模擬電路以及LCD驅動芯片,設計出簡易的血壓測量計,其基本工作過程為:壓力傳感器采集信號,通過差分放大器分離出袖帶壓力信號和脈搏波信號,再對這兩種信號作濾波處理,之后所得的信號通過模數轉換后,單片機AT89C52再計算分析數字信號,最后得出收縮壓、舒張壓,通過LCD顯示。在軟件設計中,采用數字信號處理技術對D/A采樣的信號進行處理,并結合相應的算法及編程方法實現計算血壓值的程序。