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