基于MN101EF32D單片機實現(xiàn)示波法測量血壓
引言
水銀血壓計存在一些固有的缺點:一是放氣的快慢對讀數(shù)有直接影響,國際標準放氣速度為每秒3~5mmHg,而不同的醫(yī)生放氣有快有慢,會影響測量的準確度;二是這種方法以人的視覺、聽覺和協(xié)調(diào)程度為主要依據(jù),很難標準化。為此,本設(shè)計從血壓的檢測方法著手,采用日本松下公司高速、低功耗的MN101EF32D單片機,作為血壓計測量、控制、數(shù)據(jù)讀寫、數(shù)據(jù)顯示的核心,可準確地采用示波法(振蕩法)測量血壓。
工作原理
示波法(振蕩法)是根據(jù)袖帶在減壓過程中,其壓力振蕩波的振幅變化包絡線來判定血壓的。目前比較一致的看法是當袖帶壓力振蕩波的振幅最大時,袖帶的壓力就是動脈的平均壓。動脈的收縮壓對應于振幅包絡線的第一個拐點,舒張壓對應于包絡線的第二個拐點。
硬件設(shè)計
系統(tǒng)基本工作原理如圖1所示。壓力傳感器輸出的電壓信號首先通過低通濾波器濾波,之后由運放電路將信號轉(zhuǎn)化為適合單片機的輸入信號,最后將模擬的采樣信號經(jīng)過MN101EF32D單片機轉(zhuǎn)化為數(shù)字量。程序?qū)Σ杉臄?shù)據(jù)進行數(shù)字濾波后分析,計算出人體血壓的兩個關(guān)鍵指標舒張壓和收縮壓,之后單片機立即將數(shù)據(jù)存儲到外部存儲器中,并將這些重要數(shù)據(jù)顯示在LCD上。
傳感器介紹及其外圍電路的設(shè)計
該血壓計使用的傳感器為MPS-3100-006G壓阻式壓力傳感器,是由四個等值電阻組成的惠式電橋,其輸出電壓和輸入壓力成正比,理想狀態(tài)下當壓力輸入時,電阻值就跟著改變,但實際上溫度的改變也會影響其阻值輸出結(jié)果。另外,由于晶體和電路設(shè)計制作的誤差,加上封裝過程等方面的影響,零點偏移不是零。所以必須由外加元件來進行個別溫度補償電路校正。其重要指標如下:
a、傳感器測定范圍:5.8~15 PSIG
b、操作溫度范圍:?40~85 ℃
c、驅(qū)動電流:1.5~3mA
d、驅(qū)動電壓:5~15V
e、零點漂移:?25~25mV
f、電阻溫度系數(shù)為:0.2%/℃
因為血壓信號取自手臂,測量的信號容易受袖帶的位置、手臂的挪動而帶來的干擾。根據(jù)這些專業(yè)特點,要求系統(tǒng)具備高輸入阻抗、高增益、高共模抑制比、低噪聲以及低漂移等特征。如圖2所示,圖中的T1即為MPS-3100-006G壓阻式壓力傳感器。整個電路首先將壓力信號轉(zhuǎn)換為電壓信號,然后進行放大濾波。圖中U1、U2為有源運放LM324,它的輸入阻抗很高。壓力傳感器的信號通過放大后,并通過調(diào)節(jié)VR1的大小來改變運放的閉環(huán)增益,以調(diào)節(jié)為適應于A/D的電壓輸入范圍。U1運放回路用來測量袖帶中的壓力,測量的數(shù)據(jù)用來供MCU分析并控制對袖帶充氣和放氣的速度。另外U2運放回路是將通過C11電容隔直的交流信號放大,此回路測量的是人體的脈搏波。兩個回路的采集數(shù)據(jù)構(gòu)成了血壓計各個指標的重要計算參數(shù)。
MN101EF32D是松下(Panasonic)公司于2008年初推出的產(chǎn)品,MN101Exx系列8位單片機復合了多功能的外圍功能,具有靈活而最優(yōu)化的硬件結(jié)構(gòu),簡潔而高效的指令體系,充分實現(xiàn)經(jīng)濟性和高速性。
MN101E32D型單片機,內(nèi)置64KB Flash、4KB RAM,具備6個外部中斷、20個內(nèi)部中斷(包括NMI)、9個定時器計數(shù)器、3個串行接口、8路A/D轉(zhuǎn)換器、32×4段LCD驅(qū)動器、監(jiān)視定時器、單系統(tǒng)的數(shù)據(jù)自動傳送功能、同步輸出功能以及蜂鳴器輸出等外圍功能。最小指令執(zhí)行時間可達50ns,封裝為64引腳LQFP。本血壓計使用MN101EF32D的功能大致如下:
a、10位A/D采樣,用于靜態(tài)壓力及脈搏波的測量。
b、LCD顯示控制器,直接驅(qū)動23*4段的液晶顯示器,顯示測量的過程及結(jié)果。
c、定時器功能,用于定時A/D采樣數(shù)據(jù)并計算自動關(guān)機時間。
d、采用數(shù)字信號處理的技術(shù)對A/D采樣的信號進行處理,主要有數(shù)字低通濾波和相關(guān)的計算。
e、電源開啟采用硬件控制的方法,電源關(guān)閉采用軟件控制的方法,關(guān)機時除了穩(wěn)壓模塊外,其它芯片處于斷電狀態(tài),功耗極低。
f、測量時可以選擇mmHg和Kpa作為主顯示方式,測量精度高,達到靜態(tài)1mmHg、動態(tài)3mmHg的測量精度。由于采用鐵電存儲器作為存儲媒介,數(shù)據(jù)的保存時間很長。
MN101EF32D與外部串行鐵電存儲器的硬件連接
在選擇外部存儲器時,由于考慮到要長期反復擦除、寫入所設(shè)置的工作參數(shù)和測量到的重要信息,并保存大量的歷史數(shù)據(jù),因此必須使用容量較大的靜態(tài)存儲器,以便寫入盡可能多的數(shù)據(jù)信息并保證掉電后數(shù)據(jù)不丟失。由于EEPROM本身的設(shè)計工藝。壽命有限,而且寫入的時間較長,因此不適合用于電池供電的系統(tǒng)。血壓計需要保存的數(shù)據(jù)設(shè)計依次為收縮壓(2個字節(jié))、舒張壓(2個字節(jié))、平均壓(2個字節(jié))、脈搏(2個字節(jié))、每次記錄的時間(5個字節(jié))等,每次測量需要13字節(jié)存儲數(shù)據(jù)。假設(shè)每天測量4次,需要13×4=52字節(jié),血壓計能夠保存7天的數(shù)據(jù)則需要364字節(jié),故選用鐵電的24cL04。當打開血壓計使用的時候,單片機在其PA0口模擬出IIC總線的SCL,并輸入給外部存儲器24cL04的SCL引腳,同時PA1口與24cL04的SDA口進行數(shù)據(jù)交換,將有用的數(shù)據(jù)顯示在LCD上。
電源處理模塊及其相關(guān)電路設(shè)計
本血壓計選用2節(jié)7號電池作為電源的輸入。為了達到較好的供電質(zhì)量,在此電路中選擇了DC/DC升壓芯片RN5RK331A,將2節(jié)串聯(lián)的1.5伏7號電池構(gòu)成的3V左右的電壓升到3.3V,供給系統(tǒng)中的模擬電路電源,也作為數(shù)字電路的正電源供給MCU(如圖3所示)??紤]到氣泵、氣閥如果與模擬電路、數(shù)字電路直接共用一個電源,會引入比較大的干擾,從而影響壓力傳感器、運放以及MCU的正常工作,所以設(shè)計成氣泵、氣閥不與其它器件接在一起,直接由電池供電。
另外,血壓計的重要采集數(shù)據(jù)通過運放放大的袖帶氣壓和隔直后的脈搏波,由于它們都是通過微小的信號放大后得到的,所以A/D轉(zhuǎn)換的設(shè)計也極為重要。系統(tǒng)采用智能充氣測量、自動降壓,在降壓的過程中進行測量。由于在氣閥工作降壓的時候,電源受到波動,如果用系統(tǒng)電源直接拿來作為A/D的參考電壓基準,必然會給測量帶來誤差。采用National Semiconductor的LM385作為A/D轉(zhuǎn)換的電壓基準連接到芯片的VREF+引腳,確保采集的數(shù)據(jù)轉(zhuǎn)換準確。
LCD顯示模塊的設(shè)計
如圖4、5所示,為了使用戶更為方便、簡單地使用本系統(tǒng),采用LCD顯示。
松下的MN101EF32D芯片內(nèi)置了LCD驅(qū)動模塊,可以直接驅(qū)動LCD。先初始化LCD方式控制寄存器1(LCDMD),它是8位寄存器,用來指定LCD時鐘、LCD顯示的ON/OFF、顯示占空比等。
軟件的主要流程如下:
上電后,首先完成系統(tǒng)的初始化工作。單片機開始給氣泵供電,讓袖帶迅速充氣至被測者收縮壓以上約30mmHg左右。之后單片機通過1路A/D開始采集袖帶的氣壓,并根據(jù)袖帶內(nèi)氣壓下降的速度來控制排氣閥排氣,使袖帶內(nèi)勻速降壓(3~5mmHg /s)。與此同時,另外1路A/D開始采集經(jīng)過隔直的脈搏波。當脈搏波的振幅最大時,袖帶的壓力就是動脈的平均壓。動脈的收縮壓對應于振幅包絡線的第一個拐點,舒張壓對應于包絡線的第二個拐點。
軟件主要細分為以下3個重要模塊:
一)勻速降壓控制模塊
盡管氣閥有自動緩慢放氣的特點,但為了使袖帶迅速充氣至被測者收縮壓以上30mmHg左右后勻速降壓(3~5mmHg /s),而不能用普通的處理方法,因為整個測量過程中容易受到外界震動的影響,如人為的震動袖帶、氣管的震動、人的身體運動等,另外氣管的剛性度也會影響到袖帶內(nèi)氣壓微弱的變化。所以袖帶內(nèi)的壓力降低的速度與氣閥開關(guān)的頻率為非線形關(guān)系。
本設(shè)計采用了PID算法來控制氣閥的開關(guān)時間來確保袖帶以3~5mmHg /s的速度勻速降壓。受到單片機的處理速度和RAM資源的限制,這里不采用浮點數(shù)運算,而將所有參數(shù)全部用整數(shù),最后再除以2N(相當于移位),作類似定點數(shù)運算,可大大提高運算速度。最終賦值給定時器,來控制氣閥的開啟時間,從而保證降壓的速度恒定。
在PID算法中三個基本的參數(shù)Kp、Ki、Kd的設(shè)定與調(diào)整是比較難的部分,根據(jù)這些參數(shù)的作用原理,總結(jié)調(diào)整方法大致如下:
1、壓力很快就降到目標值,但壓力降的太多:
a)比例系數(shù)太大;
b)微分系數(shù)過小;
2、壓力下降達不到目標值:
a)比例系數(shù)過小;
b)積分系數(shù)過小;
3、基本上能夠控制在目標上,但上下偏差較大,且經(jīng)常波動
a)微分系數(shù)過小;
b)積分系數(shù)過大;
二)信號處理模塊
本血壓計測量信號為2路,MPS-3100-006G壓力傳感器的信號首先進行低通濾波處理,排除因外界干擾造成的信號讀數(shù)的誤差,之后放大送AD1,作為靜態(tài)血壓信號;隔直后經(jīng)再次放大送AD2,作為脈搏波信號。由于MN101EF32D的A/D為10位,因此最高精度可達1/1024。為了最大限度地利用A/D轉(zhuǎn)換的采樣速度,用中斷來實現(xiàn)A/D轉(zhuǎn)換后的數(shù)據(jù)處理。當A/D轉(zhuǎn)換完畢,在中斷程序中,用防脈沖干擾移動平均值法來實現(xiàn)簡單有效的數(shù)字濾波,使測量更加準確。具體做法為在一次定時中斷內(nèi)連續(xù)進行5次A/D轉(zhuǎn)換,去掉最大值和最小值,剩余3個數(shù)據(jù)求算術(shù)平均值,該算術(shù)平均值作為此次的A/D轉(zhuǎn)換結(jié)果。
三)計算血壓模塊
袖帶氣壓和脈搏波經(jīng)信號處理模塊的處理后,得出如圖6所示的數(shù)據(jù)。圖中的下方為被測者的脈搏波,上方為血壓計升壓和壓降過程中的袖帶壓力。在此基礎(chǔ)上分析信號,供收縮壓、舒張壓、平均壓和心率的計算。單片機在測量過程中已經(jīng)存儲各個脈搏波的峰值,以及每個脈搏波的間隔時間。
收縮壓判據(jù)的確定采用最大振幅法,即在放氣過程中脈搏波幅度包絡線的上升段,當某一個脈搏波的幅度Ui與最大幅度Um(平均壓)之比剛剛大于Ks時,就認為此時對應的氣袖壓力為收縮壓。
Ps=P/Ui=Ks*Um
舒張壓判據(jù)的確定也是用最大振幅法來判定的,不過是在脈搏波幅度包絡線的下降段,當某一個脈搏波的幅度Ui與最大幅度Um(平均壓)之比剛剛小于Kd時,就認為此時對應的氣袖壓力為舒張壓。
Pd=P/Ui=Kd*Um
先用經(jīng)驗參數(shù)Ks = 0.54和Kd = 0.72來計算,經(jīng)測試后再進行修正。
心率即為脈搏波的周期,具體也為算術(shù)平均值做法。
結(jié)論
基于MN101EF32D單片機的血壓計,充分利用了該芯片本身的功能,具備電路簡單、功耗低、電源要求單一、精度高以及實用性強等特點,有著廣闊的市場前景。
.
評論