基于89C51RD的腸營養(yǎng)液輸液系統(tǒng)設計
隨著各種電子系統(tǒng)在各個領域中應用的不斷深入,對電子系統(tǒng)本身的要求也越來越高,尤其對于控制系統(tǒng)軟件設計的可靠性、實時響應等各個方面的性能有了更嚴格的要求。單片機的程序設計不再是前后臺的運行模式,而是采用多任務實時操作系統(tǒng)的設計思想。由于使用嵌入式操作系統(tǒng),可以將具體應用分解成多個任務,簡化了應用系統(tǒng)軟件的設計,使控制系統(tǒng)的實時性得到保證,使其達到理想狀態(tài)。良好的多任務設計,還有助于提高系統(tǒng)的穩(wěn)定性和可靠性。
本文引用地址:http://cafeforensic.com/article/199606.htm目前,國內應用最多的是以51系列單片機為主的8位單片機。在51系列單片機系統(tǒng)中,可以進行移植的嵌入式操作系統(tǒng)為數(shù)不多。其中,Keil自帶的RTX51沒有源代碼,使用起來很不方便;uC/OSII雖然有源代碼,也有移植成的例子,但是,它對于51系列單片機系統(tǒng)的資源占用過大,需要外擴RAM,而且要保證每個函數(shù)的可重入性,使用起來比較勉強。Small RTOS51是專門為小RAM系統(tǒng)設計的占先式內核,占用資源少、實時性好,應用在本系統(tǒng)上非常合適。
1 系統(tǒng)功能及硬件描述
1.1 系統(tǒng)的功能描述
對于處于昏迷狀態(tài)或食道進行手術的病人,需要一種按時、按量對病人進行腸營養(yǎng)液輸入的智能型腸營養(yǎng)液輸液泵,以達到維持病人生命的目的。本文介紹的智能型腸營養(yǎng)輸液泵(以下簡稱營養(yǎng)泵)主要實現(xiàn)以下功能:
根據(jù)要求,可以設定輸入營養(yǎng)液的總量、流速、溫度等參數(shù),并且在運行過程中可以任意修改;
根據(jù)指令,自動檢測和控制營養(yǎng)液的流量和流速,并將數(shù)據(jù)反饋給主程序;
根據(jù)設定營養(yǎng)液的溫度,自動檢測和控制營養(yǎng)液的溫度,并將溫度數(shù)據(jù)反饋給主程序;
在出現(xiàn)營養(yǎng)液的溫度、流量和流速異常時,發(fā)出聲、光報警信號;
使用LCD顯示各種數(shù)據(jù),隨時查看已經輸入營養(yǎng)液的數(shù)量、溫度、流量和流速;
營養(yǎng)泵主要由220VAC供電,同時備有應急充電電池,一次充電可以連續(xù)運行12小時以上,以備醫(yī)院緊急停時使用。
1.2 系統(tǒng)的硬件描述
本營養(yǎng)泵的電路原理框圖如圖1所示。
系統(tǒng)的主控CPU采用Philips公司的89C51RD2,實現(xiàn)系統(tǒng)的多任務控制;LCD采用北京青云的LCM12232B液晶模塊,顯示液體的控制參數(shù);控制溫度的DAC采用TI公司的TLC5615,使營養(yǎng)液溫度誤差達到0.1℃以內;電池容量和溫度的反饋值均為模擬電壓,采用A/D,轉換后,送入CPU;A/D轉換器使用的是TI公司的TLC1543;應急電池充電電路,采用Linear公司的LTC4006,充電電壓為12.6V,電池容量為4000mAh;營養(yǎng)液流量反饋,采用紅外線對管,直接由CPU 記數(shù);營養(yǎng)泵電機使用直流電動機,采用控制電機運行和停止時間的方法對轉速進行閉環(huán)控制,以達到控制液體流量的目的。
2 Small RTOS51簡介
Small RTOS51是一個專門為51系列單片機設計的嵌入式實時操作內核,使用Keil編譯器可以直接使用其代碼,它有如下特點。
公開源代碼。只要遵循許可協(xié)議,任何人可以免費獲得源泉代碼,便于用戶的二次開發(fā)。
可移植性。用戶可以把與CPU有關的控制指令壓縮到最小,把大部分精力放在CPU的控制程序上??梢允褂肁NSI C編寫應用程序,不僅簡化了編程手段,而且便于程序移植。
可固化性。Small RTOS51為嵌入式系統(tǒng)設計,可以嵌入到產品中,成為產品的一部分.
占先式運行。Small RTOS51可以管理16個用戶任務,每個任務可以設置不同的優(yōu)先級。Small RTOS51總是運行優(yōu)先級最高的任務。
中斷管理。采用中斷管理方式,當有更高級的中斷申請時,將目前正在執(zhí)行的任務掛起。如果優(yōu)先級更高的任務被中斷喚醒,則高優(yōu)先級的任務在中斷嵌套結束后立刻執(zhí)行。中斷嵌套層數(shù)可達255層。如果需要,還可以禁止中斷的嵌套管理。
RAM需求小。SmallRTOS51為小RAM的系統(tǒng)設計,因而對RAM的需求只有幾百字節(jié),相應的系統(tǒng)服務也少。
3 系統(tǒng)的軟件實現(xiàn)
按照系統(tǒng)所要實現(xiàn)的功能,將整個系統(tǒng)劃分為幾個并行的任務,占先式操作內核對任務的調度是按照任務優(yōu)先權的高低進行。本文中,將系統(tǒng)劃分為9個任務,按其優(yōu)先級從高到低的順序排列依次是:報警任務、溫控任務、按鍵輸入任務、主控制任務、電機運行任務、流量控制任務、記時任務、液晶顯示任務和電池電量檢測任務。系統(tǒng)上電以后進入主程序,首先對系統(tǒng)進行自檢并任務,啟動9個程,此時系統(tǒng)的運行就由Small RTOS51來接管。
3.1 報警任務
由于本文所述的營養(yǎng)泵,主要應用在危重病人的看護中,所以將報警任務在放在最重要的位置。報警程序由一個全局變量setbaojing來控制,其不斷檢測溫控程序、流量控制程序和電池電量檢測程序的輸出值。當上述程序出現(xiàn)故障報警信號時,setbaojing為1,報警程序立即使蜂鳴器和報警燈工作,并在液晶屏幕上顯示出現(xiàn)故障的名稱,直到有人來清除故障后,才可以正常運行。
3.2 溫控任務
由于人體對于溫度的變化非常敏感,而腸營養(yǎng)液是直接輸入到人的小腸當中,所以系統(tǒng)對溫度的要求非常高,為此,本系統(tǒng)將溫控任務放在第二位。先將設定的溫度參數(shù)輸入給CPU,經過PI計算,發(fā)出數(shù)字信號,再用TLC5615轉換成模擬量,控制加溫電路給營養(yǎng)液加溫。營養(yǎng)液的實際溫度,由溫度反饋電路轉換成電壓信號,再通過A/D轉換成數(shù)字信號反饋給CPU,由CPU進行閉環(huán)控制。
3.3 控制輸入任務
按鍵是實現(xiàn)人機交互的重要設備,要求實時性較高。從系統(tǒng)軟件的設計角度,不僅要讀出按鍵的狀態(tài),還需要具有對按鍵的抖動、連擊、串鍵等特殊情況進行處理。系統(tǒng)按鍵輸入任務流程如圖2所示,本任務使用消息隊列指令KeyReadBuf[16],向主控制程序發(fā)送按鍵的相關信息。
3.4 主控制任務
主控制任務應用SmallRTOS51提供的系統(tǒng)函數(shù)OSQPend(KeyTemp,KeyRead Buf,0)來查錄按鍵輸入任務提供的信息,一旦發(fā)覺KeyReadBuf[16]中有了相關信息,立刻運行輸入程序。根據(jù)按鍵的命令,控制電機運行程序、流量控制程序、液晶顯示程序的運行及停止,每當有一組按鍵信息進入消息隊列中,本程序就修改一次運行指令。
3.5 電機運行任務
電機運行任務一直處于等待的狀態(tài),當主控制程序給它發(fā)關字相應的指令才開始運行。在運行過程中,電機運行任務受到主控制程序和流量控制程序的控制,一旦有停止運行的命令,或流量有異常,就立刻停止電機的運行。
3.6 流量控制任務
液量控制任務主要由CPU來控制輸入營養(yǎng)液的流量及流速。正常運行情況下,流量控制程序會向液晶顯示程序發(fā)送流量及流速的信息,使液晶上顯示已經輸入營養(yǎng)液的數(shù)量、流量及流速。一旦發(fā)生異常情況,如流速過快、一段時間營養(yǎng)液沒有流動等故障,立刻向電機運行程序發(fā)出指令,停止電機的運行,同時將 setbaojing置1,使報警程序運行。
3.7 記時任務
記時任務主要是為系統(tǒng)提供一個同步時鐘,為系統(tǒng)提供同步運行的基準。
3.8 液晶顯示任務
液晶顯示任務主要由主控制程序、報警程序、流量控制程序、電池電量檢測程序傳遞到消息隊列中的參數(shù)。通過運行顯示程序,在液晶上顯示相關的漢字和字符,本身不向其它任務發(fā)送命令。
3.9 電池電量檢測任務
一旦發(fā)生220VAC市電斷電的情況,營養(yǎng)泵會立刻自動切換到內置的鋰電池供電,電池可以連續(xù)使用12小時以上。電池電量檢測程序會自動運行,檢測電池的電量。在電量低的情況,電池電量檢測程序會發(fā)出報警信號,但不會主動停止系統(tǒng)的運行。
4 試驗數(shù)據(jù)
用本文所述的智能腸營養(yǎng)液泵對目前市場上常用的幾種營養(yǎng)袋進行實驗。
以上實驗數(shù)據(jù)表明,本智能腸營養(yǎng)液泵的輸液量精度遠遠高于目前市場上10%的通用標準,并且對各種品牌的營養(yǎng)液袋都能控制在足夠的精度范圍內。
結語
在腸營養(yǎng)液泵的設計中,使用了Small TROS51,大大簡化了程序設計的難度,增強了系統(tǒng)的可靠性和安全性,滿足系統(tǒng)實時性要求。本設計達到了國家標準,并且已經在臨庫中開始使用。
評論