基于STM32和μCOS的醫(yī)用注射泵系統(tǒng)軟件設(shè)計
作者 / 王婉 劉振洗 胡林軍 郭書磊 中國電子科技集團公司第四十一研究所(安徽 蚌埠 233010)
本文引用地址:http://2s4d.com/article/201711/372159.htm王婉(1989-),女,碩士,助理工程師,研究方向:醫(yī)療電子。
摘要:本文提出一種采用STM32F103ZET6處理器平臺,使用μC/OS-II操作系統(tǒng),借助μC/GUI控件進行界面開發(fā)的注射泵控制系統(tǒng)。采用基于模塊化分層的軟件設(shè)計方法,滿足注射泵對多功能、易用界面、低功耗和多任務(wù)的需求,以提高醫(yī)用注射泵的工作效率及可靠性。
引言
醫(yī)用注射泵是一種新型泵力儀器,將少量藥液精確、均勻、持續(xù)地泵入病人體內(nèi),操作便捷、可靠性好。注射泵應(yīng)具備的功能有:設(shè)置輸液速度和輸液量,隨時更改輸液參數(shù),程序預設(shè)和數(shù)據(jù)保存,對異常情況進行報警。使用醫(yī)用注射泵搶救危重患者,能減輕護士工作量,提高工作效率,準確、安全、有效地配合醫(yī)生搶救。
1 系統(tǒng)概述
本文設(shè)計的系統(tǒng)采用閉環(huán)控制思想,結(jié)合嵌入式技術(shù)、傳感檢測技術(shù)和電機控制技術(shù),從而實現(xiàn)高精度、高可靠性的醫(yī)用注射泵系統(tǒng)開發(fā)。系統(tǒng)整體組成框圖如圖1所示,注射泵控制系統(tǒng)主要包括注射器推桿位置檢測模塊、阻塞壓力檢測模塊、注射器規(guī)格檢測模塊、聲光報警模塊、LCD顯示模塊、注射參數(shù)存儲模塊和電源管理模塊。注射泵工作時,STM32F103ZET6(以下簡稱STM32)處理器發(fā)出PWM脈沖使步進電機旋轉(zhuǎn),而步進電機通過機械傳動裝置將旋轉(zhuǎn)運動變成直線運動,推動注射器的活塞進行注射,同時STM32通過采集傳感器反饋的數(shù)據(jù)指導注射泵工作。
2 軟件設(shè)計
2.1 整體軟件架構(gòu)
本系統(tǒng)采用STM32F103ZET6處理器平臺,以μC/OS-II 實時操作系統(tǒng)為系統(tǒng)平臺,并應(yīng)用了μC/GUI圖形支持軟件。采用基于模塊化分層的軟件設(shè)計方法,具體如圖2所示。包括應(yīng)用軟件層、系統(tǒng)軟件層和硬件外設(shè)配置層,每一層又分為不同的功能模塊,方便注射泵的調(diào)試和功能擴展。
應(yīng)用軟件層通過μC/OS-II系統(tǒng)建立任務(wù),包括系統(tǒng)主任務(wù)、μC/GUI界面任務(wù)、鍵盤掃描任務(wù)、旋轉(zhuǎn)編碼器檢測任務(wù)和報警指示燈顯示任務(wù)。
系統(tǒng)軟件層包括移植于STM32處理器的μC/GUI圖形系統(tǒng)、μC/OS-Ⅱ操作系統(tǒng)和中斷管理系統(tǒng)。μC/GUI界面程序?qū)崿F(xiàn)實時顯示注射泵的各種參數(shù)和運行狀態(tài),如注射器規(guī)格、輸液速度、預輸液量、已輸液量、電池電量、注射運行標志及報警信息提示等,使操作者能夠?qū)崟r掌握注射泵的工作狀態(tài),并提供良好的人機交互界面;μC/OS-Ⅱ操作系統(tǒng)負責執(zhí)行任務(wù)調(diào)度、任務(wù)管理、時間管理、內(nèi)存管理和任務(wù)間的通信與同步等基本功能;異常與中斷處理模塊提供中斷服務(wù)程序,主要包括系統(tǒng)時鐘節(jié)拍處理函數(shù)、按鍵及編碼器定時掃描中斷、電源管理模塊定時掃描中斷、產(chǎn)生PWM脈沖的定時中斷、EEPROM讀寫中斷、注射器規(guī)格及脫落檢測中斷。
硬件外設(shè)配置層主要完成外圍器件的驅(qū)動及應(yīng)用配置。包括LCD驅(qū)動配置,壓力傳感器應(yīng)用配置,注射器檢測用傳感器驅(qū)動配置,按鍵、編碼器、LED燈及蜂鳴器應(yīng)用配置,注射器推桿位置檢測用傳感器應(yīng)用配置,EEPROM驅(qū)動配置和步進電機驅(qū)動配置。
該設(shè)計具有界面化控制、多任務(wù)處理、數(shù)據(jù)實時傳遞,并配合人性化的鍵盤板,能極大地提高使用者的工作效率。
2.2 系統(tǒng)主程序設(shè)計
系統(tǒng)的主程序講述的是整個系統(tǒng)的執(zhí)行過程,如圖3所示。在所有的初始化工作完成后,進入系統(tǒng)主界面,通過按鍵設(shè)置注射參數(shù),包括注射模式、藥物量、注射時間、注射速度等參數(shù),然后檢測注射器規(guī)格,開始注射。傳感檢測模塊實現(xiàn)閉環(huán)控制、保證本系統(tǒng)安全可靠運行,對注射過程進行注射阻塞檢測、注射器脫落檢測和注射器推桿位置檢測,如果不滿足要求則進行報警、停止注射。并在剩余藥量小于預定值時進行注射近空報警,提醒用戶提前做好準備。
2.3 功能模塊軟件實現(xiàn)
2.3.1 步進電機控制
本設(shè)計采用兩相混合式步進電機,步進電機根據(jù)電機驅(qū)動器的控制信號進行工作。通過改變PWM脈沖頻率和占空比控制電機的運動速度。電機運動方向固定為正轉(zhuǎn),使能信號由STM32的GPIO引腳控制,高電平使能控制信號輸出,電機轉(zhuǎn)動。
PWM脈沖由STM32的內(nèi)部定時器產(chǎn)生,通過改變相關(guān)寄存器配置來改變脈沖頻率與占空比。PWM 配置分以下幾個步驟:
1)定時器時鐘經(jīng)預分頻器分頻后為計數(shù)器提供時鐘;
2)重裝載寄存器和輸出比較寄存器的數(shù)值不斷與計數(shù)器比較;
3)計數(shù)器的數(shù)值與重裝載寄存器相等時,復位計數(shù)器并翻轉(zhuǎn)輸出信號;
4)計數(shù)器數(shù)值與輸出比較寄存器相等時,翻轉(zhuǎn)輸出信號。
2.3.2 注射器檢測
一般的醫(yī)用注射泵均使用ml注射器,常用的規(guī)格有10ml、20ml、30ml和50ml,系統(tǒng)在進行注射前需要獲取注射器規(guī)格,注射過程中如果注射器發(fā)生脫落,需要及時報警并停止輸液。本設(shè)計使用光電開關(guān)檢測注射器規(guī)格和注射器脫落與否。檢測注射器規(guī)格的信號連接至STM32的GPIO引腳,通過外部中斷的方式檢測對應(yīng)GPIO引腳的電平變化來判斷注射器規(guī)格同理,可以檢測注射器是否脫落。
2.3.3 注射器推桿位置檢測
注射過程中需要通過注射器推桿位移的變化來計算已注射藥量,本設(shè)計使用位移傳感器檢測注射器推桿位置。將檢測信號連接至STM32的ADC模塊,在注射時,首先測出注射器推桿的初始位置電壓值,然后實時獲取推桿運動中的電壓值,根據(jù)兩個電壓值之差,就可得出注射器推桿運動的距離,繼而算出已注射容量。
2.3.4 阻塞壓力檢測
當針頭堵塞或輸液管路打折等原因造成輸液不暢時,液路系統(tǒng)壓力大于正常注射時的壓力,可通過檢測注射器推桿處的壓力值進行判斷。檢測的壓力信號連接至STM32的ADC引腳,STM32采集變換并放大1000倍后的電壓值,然后根據(jù)應(yīng)變片壓力和電壓的線性關(guān)系,計算出實時壓力值,如果壓力值大于預設(shè)的報警值,則進行報警,并停止注射。
2.3.5 聲光報警
當注射泵出現(xiàn)異常工作時,需要及時進行警告處理。本系統(tǒng)采用蜂鳴器、LED、LCD三種方式進行報警。蜂鳴器和LED分別接到STM32的GPIO引腳,當注射完成或注射阻塞時,對應(yīng)的LED點亮并蜂鳴報警;當電池電量不足、注射器脫落、注射器推桿錯位、注射即將完成時,LCD提示并蜂鳴報警。
2.3.6 注射參數(shù)存儲
為了方便查詢上次關(guān)機時的輸液模式、參數(shù)等信息,本設(shè)計添加了參數(shù)存儲功能。EEPROM采用I2C總線與STM32交換數(shù)據(jù),每次開機時,讀取EEPROM存儲的參數(shù)值并顯示,每次設(shè)置的參數(shù)值改變時都進行重新存儲。
2.3.7 鋰電池供電管理
本設(shè)計具有交、直流兩種供電方式,并且兩種方式能自動切換。使用電源管理模塊獲取電池的電量信息,通過SMBD和SMBC將鋰電池連接到STM32的I2C總線,采用SMBus總線模式定時讀取電池信息,并在LCD實時顯示電量。如果電池電量不足,則進行報警,如果充電完成,則點亮LED示意。
2.3.8 按鍵及編碼器檢測方案
按鍵連接至STM32的GPIO引腳,編碼器連接至STM32定時器的編碼器接口引腳。通過定時器掃描按鍵和編碼器狀態(tài)。按鍵分為短按和長按功能,短按可實現(xiàn)開始/停止、蜂鳴器消音、模式切換、參數(shù)選擇和報警消除功能,長按可實現(xiàn)快注、注射器標定功能。編碼器用于實現(xiàn)參數(shù)值的輸入,可實現(xiàn)小數(shù)與整數(shù)部分的切換,參數(shù)值改變大小與旋轉(zhuǎn)速度一致。
2.3.9 LCD顯示
LCD實現(xiàn)實時顯示注射泵的各種參數(shù)和運行狀態(tài),如注射器規(guī)格、注射速度、預輸藥量、已輸藥量、電池電量、注射運行標志及報警信息提示等,使操作者能夠?qū)崟r掌握注射泵的工作狀態(tài),并提供良好的人機交互界面。本設(shè)計采用FSMC(靈活的靜態(tài)存儲器控制器)接口控制液晶顯示模塊,采用16位寬數(shù)據(jù)總線,使用NE1作為片選線,借助μC/GUI控件繪制所需的交互界面。
3 結(jié)論
本設(shè)計提供了一種人機交互友好、占用資源少、可移植性強、基于模塊化分層的注射泵軟件結(jié)構(gòu),能夠滿足注射泵對多功能、易用界面、低功耗以及多任務(wù)的需求,使醫(yī)用注射泵的工作效率顯著提高、可靠性變強。根據(jù)本軟件設(shè)計方法生產(chǎn)的注射泵適用于長時間微量、均勻、精確地注射藥液,性能上完全滿足國內(nèi)醫(yī)院對靜脈輸液的要求。
參考文獻:
[1]王曉明.電動機的單片機控制 [M].北京航空航天大學出版社,2002.
[2]劉偉.PWM技術(shù)在電機驅(qū)動控制中的應(yīng)用[D].合肥工業(yè)大學,2009
[3]簡毅,劉寶.基于AT91SAM9261的步進電機S曲線加減速控制研究與實現(xiàn)[J].輕工機械, 2012.
[4]何伶俐,賀超,楊慶華.基于uPSD3234單片機的智能注射泵控制系統(tǒng)設(shè)計[J].綿陽師范學院學報,2008.
[5]劉波文,孫巖.嵌入式實時操作系統(tǒng)uC/OS-II經(jīng)典實例:基于STM32處理器[M].北京航空航天大學出版社,2014.
本文來源于《電子產(chǎn)品世界》2017年第12期第43頁,歡迎您寫論文時引用,并注明出處。
評論