卓明鋒,王鑫凱,殷惠莉,邱澤源,代 芬
(華南農業大學 電子工程學院,廣東 廣州 510642)
?
基于ZigBee與PID算法的多功能靜脈輸液控制器
卓明鋒,王鑫凱,殷惠莉,邱澤源,代 芬
(華南農業大學 電子工程學院,廣東 廣州 510642)
設計了一種基于STC89C52單片機的多功能靜脈輸液控制器,控制器實現靜脈輸液過程的輸液時間實時監測和智能加熱控溫,并與上位機進行不間斷的數據通信。加熱模塊通過獨立按鍵可設定恒溫運行時的溫度值,并用LCD1602顯示設定溫度值。在運行過程中DS18B2采樣到溫度,再將轉換后的數字量用LCD1602進行顯示,調用PID算法,確定PWM波的占空比,確定加熱的功率,直到能在規定的溫度下恒溫加熱。紅外對管計時模塊通過對液滴的采樣獲得速度,進而計算出所需輸液時間并且在LCD1602上顯示,顯示過程中可通過獨立按鍵重置速度和輸液所需時間。應用程序的開發與運行環境是Visual Studio 2015,由VC++的MFC編程得到,無線通信由ZigBee實現。
輸液加熱;PID算法;紅外對管;MFC;ZigBee
隨著社會的進步與發展,醫療問題越來越受到人們的關注,而作為醫療上必不可少的一個環節—輸液,也就對于人們的重要性也日趨重要。在中國的冬天,特別是北方地區,低溫度的液體輸入到病人的血管中,不僅會讓病人感覺到不適,還有可能加重病人的病情;病人和醫護人員因不能及時獲取輸液時的實時狀態,浪費了廣大病人寶貴的時間,也給醫護人員的工作帶來了很大的困擾。為了向病人及醫護人員提供輸液實時狀態,設計出了一個多功能靜脈輸液控制器,它通過采集輸液信息來算出輸液剩余時間,并且可以顯示輸液液體溫度和輸液剩余時間,自動提示病人和護士,同時實時監控輸液的狀態并且把數據傳到上位機,還可以調控輸液的液體溫度并保持溫度。
1.1 系統結構
單個控制器的系統[1]框圖如圖1所示,主控制器的單片機[2]采用了STC89C52RC。對輸液信息的采集,采用了紅外對管測出輸液時液體的滴速和矩陣鍵盤輸入液體體積。加熱溫控模塊采用STC89C52單片機進行控制,獨立按鍵輸入設定溫度,調用PID算法來實現溫度的精確控制,通過DS18B20溫度傳感器實時顯示溫度在LCD1602上,設定溫度上下限以保證系統整體結構[3]穩定安全。

圖1 單控制器系統結構
整個系統的框圖如圖2所示,利用ZigBee的無線數據透傳以及上位機應用程序的控制,可以實現上位機對多個病人的智能控制、智能提示、智能呼叫。整個系統分為加熱溫控模塊、上位機通信模塊、計時報警模塊[4]。

圖2 單控制器系統結構
1.2 加熱溫控模塊的PID算法
在過程控制中,按偏差的比例(P)、積分(I)和微分(D)進行控制的PID控制器是應用最為廣泛的一種自動控制器。它具有原理簡單、易于實現、適用面廣、控制參數相互獨立、參數的選定比較簡單等優點;而且在理論上可以證明,對于過程控制的典型對象——“一階滯后+純滯后”與“二階滯后+純滯后”的控制對象,PID控制器[5]是一種最優控制。
比例(P)、積分(I)、微分(D)控制算法各有作用:比例,反映系統的基本(當前)偏差e(t),系數大,可以加快調節,減小誤差,但過大的比例使系統穩定性下降,甚至造成系統不穩定;積分,反映系統的累計偏差,使系統消除穩態誤差,提高無差度;微分,反映系統偏差信號的變化率e(t)-e(t-1),具有預見性,能預見偏差變化的趨勢,產生超前的控制作用,在偏差還沒有形成之前,已被微分調節作用消除,因此可以改善系統的動態性能。但是微分對噪聲干擾有放大作用,加強微分對系統抗干擾不利。積分和微分都不能單獨起作用,必須與比例控制配合。
PID增量式算法如下:
Δu(k)=u(k)-u(k-1)
(1)
Δu(k)=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)]
(2)
進一步可以改寫成:
Δu(k)=Ae(k)-Be(k-1)+Ce(k-2)
(3)
采用Kp=10,Kie=10,Kd=6, 映射在單片機就是當實時溫度達到預設溫度時,控制繼電器斷開電路,系統停止加熱,當實時溫度小于預設溫度時,控制繼電器接通電路,系統開始加熱。當預設溫度和實時溫度有3℃及以上的溫度差時,系統全力加熱,當預設溫度和實時溫度的溫度差小于3℃時,系統進入PID算法[4]以保持溫度在某一特定值。
1.3 上位機無線通信模塊數據的傳送與接收
1.3.1 無線數據傳輸原理
數據可以從上位機通過串口傳給ZigBee主管,ZigBee主管把數據發給單片機上的ZigBee子管,ZigBee子管通過單片機的TXD/RXD傳給單片機或者把數據傳出來,實現了上位機與單片機無線通信的要求。反過來,數據也可以從單片機傳到ZigBee子管,再到ZigBee主管,最后送達上位機。
1.3.2 廣播模式的ZigBee實現一對多的無線通信
基于本設計,采用了三個ZigBee,一個作為主管,其他兩個為子管(子管數量可根據輸液病人數量所定)。
廣播模式中,每個ZigBee都能無差別地接收彼此的數據,但是同一時刻每個ZigBee只能接收一個ZigBee的信息,即上位機每一時刻只能接收一個下位機傳來的數據。這就導致了三個問題:當上位機發出數據給特定的下位機時,其他不相干的下位機也能收到信息;當下位機實時給上位機發數據時,其他下位機也能收到此下位機發出的數據;上位機實時顯示多個病人的輸液剩余情況遇到挑戰。
針對第一個和第二個問題,采取了特定指令原則。也就是說每個子系統都有特定的指令,只有指令對了,才采取動作,否則不做任何動作。只有當上位機發送特定指令時,才能讓下位機的單片機工作。反之,當下位機發出的數據被其他下位機接收到,其他下位機將把這些數據當做“亂碼”處理,亦即不做任何動作。
針對第三個問題,采取循環差錯發送原則。每個子系統都有自己的實時數據發送周期,并且不盡相同。本設計,采用子系統1每4 s發送一次數據給上位機,子系統2每5 s發送一次數據給上位機,并且計時起點相同。為做到計時起點相同,運用廣播模式,在上位機發送一個開始指令,所有下位機立即進入工作狀態開始計時。
1.4 計時報警模塊的輸液剩余時間
紅外對管測量液位,將紅外對管分別放置于滴管兩側,當有液滴落下時會阻礙和折射紅外光使接受管從高電平跳轉到低電平,用單片機的外部中斷0記錄這個電平翻轉,用單片機的定時器0計算20滴液體滴落的時間,即外部中斷0反轉20次所需的時間。
液體的滴落速度=滴20滴液體所需的時間/20,即:
v1=T1/20
(4)
根據前面輸入的液體體積,輸液所需時間=輸入的液體體積/液體的滴落速度,即:
T=V/v1
(5)
2.1 主程序流程圖
系統的主程序[6]流程圖如圖3所示,首先在矩陣鍵盤輸入液體體積,按下矩陣鍵盤的S16確定輸入體積,然后控制器自動對滴下的20滴液體進行采樣[7],由定時器0計算出滴落20滴液體所需的時間,進而算出輸液剩余時間,當需要改變輸液的速度時,按下K1鍵即可重新對改變速度后的液體重新采樣。按下K2鍵即可向上位機發送求助信號。K3、K4鍵可對預設溫度進行實時調控。

圖3 系統的主程序流程圖
2.2 上位機應用程序的設計
2.2.1 預期上位機所能實現的功能
上位機[8]將實現功能如下:
(1)實時接收下位機中多個病人的輸液情況數據,并在計算機上實時顯示出來。
(2)當下位機發出0K指令,在上位機的應用程序會有指定信息(如病人a呼叫護士)出現在顯示框,并以響鈴方式提醒醫護人員。
(3)當上位機接收到下位機發來的求助信息并聽到響鈴方式的提醒后,在上位機發送指令,控制下位機做出相應動作(如在1602顯示屏上顯示coming字樣),以提示病人,醫護人員收到求助信息并立即過來。
(4)當病人的輸液剩余時間小于某個特定值時(如5 min),單片機自動發送特定指令(如“病人a輸液時間小于5 min”),在下位機的蜂鳴器會自動響,并以響鈴方式提醒護士,只有在上位機輸入特定指令,才能消除下位機蜂鳴器的響聲并以特定信號提醒病人(如在1602顯示屏上顯示coming字樣),醫護人員立即過來。
2.2.2 實現的基本過程
采用VC++的MFC[9]的基于對話框的應用程序模板,開發及運行的環境是Visual Studio 2015。
實現步驟如下:創建基于對話框的MFC應用程序[10]→在對話框添加所需要的控件以及通信控件→在控件的函數內編寫代碼以實現所需要的功能→編譯→運行生成應用程序→調試測試。
通過測試,做出的應用程序完成了預期目標所要實現所有的功能,并在此基礎上盡量簡化了界面的操作,廣大用戶都能操作此界面。
(1)輸液時間測試數據
實際時間采用秒表計時得到,沒改變輸液速度時所測的數據如表1所示。

表1 未改變輸液速度時所測的數據
在測試中如果按了K1鍵亦即改變了輸液速度時所測的數據如表2所示。

表2 改變輸液速度時所測的數據
從以上兩組數據可以算出,誤差的平均值為5.02%。
(2)輸液溫度加熱測試數據
在室溫20.5℃時所測的數據如表3所示,液體真實溫度由數字溫度計所測得。

表3 室溫20.5℃時所測的數據
在室溫26.2℃時所測的數據如表4所示,液體真實溫度由數字溫度計所測得。

表4 室溫:26.2℃時所測的數據
(3)數據分析與結論
根據上面測試數據,系統對輸液剩余時間的計算還算比較準確,平均誤差在5.02%,并且體積越大,誤差會越小。此外,系統還能在較低的室溫下穩定工作,將輸液溫度加熱到25℃至39℃,加熱負載能夠穩定工作,實現平穩逐步加熱,安全性得到保證。由此可以得出下列結論:
(1)由系統自動計算出的輸液剩余時間已經符合要求;
(2)自動加熱到預設溫度,并可有按鍵控制設定加熱溫度;
(3)加熱范圍溫度25℃至39℃,誤差保持在±0.5℃;
(4)能精確地顯示實時溫度、預設溫度和輸液時間。
目前市場上的同類設計大部分只能實現單一的通電加熱功能,即只能加熱到一個特定值,而帶有控制裝置的加熱裝置成本普遍較高。本設計采用了按鍵輸入和LCD實時顯示的方案,能夠自動加熱到設定溫度值并保持恒溫,通過調用PID算法可以大大增強加熱系統的穩定性,恒溫誤差可以控制在±0.5℃之內,綜合其他功能,本方案成本更加低廉高效,操作也更加人性化和智能化。 在整個系統中,采用一臺上位機,通過應用程序,可以同時智能控制多臺下位機。自成系統后,可以適用于廣大的大中小醫院診所的連接控制。在上位機的應用程序中,按下開始鍵,就可以實時顯示多個病人的輸液情況,并在輸液剩余時間小于某個特定值時,自動智能提示醫護人員。在下位機上,設置了OK顯示按鍵,當病人在輸液時間還沒到,又想呼叫醫護人員的時候,按下此鍵,就會自動向上位機發送指令。此時,在單片機上的顯示屏會顯示“OK”字樣以提示按鍵成功,向上位機發送的指令會在上位機電腦顯示“X病人呼叫護士”字樣,并以響鈴方式提醒醫護人員。醫護人員看到此提示信息后,輸入相應指令就可以相除單片機上顯示屏“OK”字樣,并立即在單片機顯示屏顯示“Coming”字樣,以提示病人醫護人員收到了病人的呼叫信息,并即將過來。
[1] 范立南,謝子殿.單片機原理及應用教程北京[M].北京:北京大學出版社,2006.
[2] 邊春元.C51單片機典型模塊設計與應用[M].北京:機械工業出版社,2008.
[3] 彭為,黃科,雷道仲.單片機典型系統設計實例精講[M].北京:電子工業出版社,2006.
[4] 王恩義,羅先喜,王甲甲,等.基于PID算法的智能溫控系統設計與實現[J],微型機與應用,2014,33(12):18-20.
[5] 黃友銳,曲立國.PID控制器參數整定與實現[M].北京:科學出版社,2010.
[6] 楊將新,李華軍,劉東駿.單片機程序設計及應用從基礎到實踐[M].北京:電子工業出版社,2006.
[7] 范立男.單片機微型計算機控制系統設計[M].北京:人民郵電出版社,2004.
[8] 黃品梅.C++程序設計教程——化難為易地學習C++[M].北京:機械工業出版社,2012.
[9] 仇谷烽.基于Visual C++的MFC編程[M].北京:清華大學出版社,2015.
[10] 周韌研,商斌.Visual C++串口通信開發入門與編程實踐.北京:電子工業出版社,2009.
Multi-function intravenous infusion controller based onzigbee and PID algorithm
Zhuo Mingfeng, Wang Xinkai, Yin Huili, Qiu Zeyuan, Dai Fen
(College of Electronic Engineering, South China Agricultural University, Guangzhou 510642, China)
The multi-function intravenous infusion controller is designed based on STC89C52 MCU to realize the infusion time of the infusion process of real-time monitoring, intelligent heating and temperature control, and uninterrupted data communication with the host computer. The temperature value of heating module could be set by the independent button and be displayed by the LCD1602. During the running process temperature is sampled by DS18B2, then it is converted into digital and displayed by LCD1602. PID algorithm is called, and PWM wave of accounting cycle and the heating power are determined until it achieves constant temperature heating under the specified temperature. The speed of liquid droplets can be obtained by sampling in the infrared tube timing module , and then the required infusion time can be calculated and displayed by the LCD1602 .The speed and the time required for infusion can be reset by the independent button . Application is written by the MFC VC++ in the Visual Studio 2015 and the wireless communication is achieved by using the ZigBee.
infusion heating; PID algorithm; infrared tube; MFC; ZigBee
TN919.72; TP273
A
10.19358/j.issn.1674- 7720.2017.14.023
卓明鋒,王鑫凱,殷惠莉,等.基于ZigBee與PID算法的多功能靜脈輸液控制器[J].微型機與應用,2017,36(14):75-78.
2016-12-29)
卓明鋒(1995-),男,本科生,主要研究方向:無線通信與軟件開發。
王鑫凱(1995-),男,本科生,主要研究方向:單片機控制方面的研究。
殷惠莉(1975-),通信作者,女,碩士,講師,主要研究方向:無線通信、機器視覺。E-mail:huiliyin@scau.edu.cn。