MN101EF32D單片機實現示波法測量血壓
軟件的主要流程如下:
上電后,首先完成系統的初始化工作。單片機開始給氣泵供電,讓袖帶迅速充氣至被測者收縮壓以上約30mmHg左右。之后單片機通過1路A/D開始采集袖帶的氣壓,并根據袖帶內氣壓下降的速度來控制排氣閥排氣,使袖帶內勻速降壓(3~5mmHg /s)。與此同時,另外1路A/D開始采集經過隔直的脈搏波。當脈搏波的振幅最大時,袖帶的壓力就是動脈的平均壓。動脈的收縮壓對應于振幅包絡線的第一個拐點,舒張壓對應于包絡線的第二個拐點。
軟件主要細分為以下3個重要模塊:
一)勻速降壓控制模塊
盡管氣閥有自動緩慢放氣的特點,但為了使袖帶迅速充氣至被測者收縮壓以上30mmHg左右后勻速降壓(3~5mmHg /s),而不能用普通的處理方法,因為整個測量過程中容易受到外界震動的影響,如人為的震動袖帶、氣管的震動、人的身體運動等,另外氣管的剛性度也會影響到袖帶內氣壓微弱的變化。所以袖帶內的壓力降低的速度與氣閥開關的頻率為非線形關系。
本設計采用了PID算法來控制氣閥的開關時間來確保袖帶以3~5mmHg /s的速度勻速降壓。受到單片機的處理速度和RAM資源的限制,這里不采用浮點數運算,而將所有參數全部用整數,最后再除以2N(相當于移位),作類似定點數運算,可大大提高運算速度。最終賦值給定時器,來控制氣閥的開啟時間,從而保證降壓的速度恒定。
在PID算法中三個基本的參數Kp、Ki、Kd的設定與調整是比較難的部分,根據這些參數的作用原理,總結調整方法大致如下:
1、壓力很快就降到目標值,但壓力降的太多:
a)比例系數太大;
b)微分系數過小;
2、壓力下降達不到目標值:
a)比例系數過小;
b)積分系數過小;
3、基本上能夠控制在目標上,但上下偏差較大,且經常波動
a)微分系數過小;
b)積分系數過大;
二)信號處理模塊
本血壓計測量信號為2路,MPS-3100-006G壓力傳感器的信號首先進行低通濾波處理,排除因外界干擾造成的信號讀數的誤差,之后放大送AD1,作為靜態血壓信號;隔直后經再次放大送AD2,作為脈搏波信號。由于MN101EF32D的A/D為10位,因此最高精度可達1/1024。為了最大限度地利用A/D轉換的采樣速度,用中斷來實現A/D轉換后的數據處理。當A/D轉換完畢,在中斷程序中,用防脈沖干擾移動平均值法來實現簡單有效的數字濾波,使測量更加準確。具體做法為在一次定時中斷內連續進行5次A/D轉換,去掉最大值和最小值,剩余3個數據求算術平均值,該算術平均值作為此次的A/D轉換結果。
三)計算血壓模塊
袖帶氣壓和脈搏波經信號處理模塊的處理后,得出如圖6所示的數據。圖中的下方為被測者的脈搏波,上方為血壓計升壓和壓降過程中的袖帶壓力。在此基礎上分析信號,供收縮壓、舒張壓、平均壓和心率的計算。單片機在測量過程中已經存儲各個脈搏波的峰值,以及每個脈搏波的間隔時間。

收縮壓判據的確定采用最大振幅法,即在放氣過程中脈搏波幅度包絡線的上升段,當某一個脈搏波的幅度Ui與最大幅度Um(平均壓)之比剛剛大于Ks時,就認為此時對應的氣袖壓力為收縮壓。
Ps=P/Ui=Ks*Um
舒張壓判據的確定也是用最大振幅法來判定的,不過是在脈搏波幅度包絡線的下降段,當某一個脈搏波的幅度Ui與最大幅度Um(平均壓)之比剛剛小于Kd時,就認為此時對應的氣袖壓力為舒張壓。
Pd=P/Ui=Kd*Um
先用經驗參數Ks = 0.54和Kd = 0.72來計算,經測試后再進行修正。
心率即為脈搏波的周期,具體也為算術平均值做法。
結論
基于MN101EF32D單片機的血壓計,充分利用了該芯片本身的功能,具備電路簡單、功耗低、電源要求單一、精度高以及實用性強等特點,有著廣闊的市場前景。
評論