南昌大學信息工程學院 張旭堯
干擾電治療儀在康復物理治療中起到舉足輕重的作用。針對干擾電治療儀嵌入式設計,通過LPC1788和FPGA可實現多路并行輸出,具有多種模式選擇,多種參數設定方案,達到同時治療多人使用的設計。同時該設計具備吸附電極、壓力檢測,在操作頁面可進行按鍵操作和觸摸屏兩種操作功能,具有實時電壓電流顯示反饋。
隨著中國人口老齡化的嚴重,越來越多老年疾病治療應用到康復物理治療儀器,電治療是物理治療方式,在臨床上有著良好的治療效果,在當今物理治療中有著舉足輕重的作用。干擾電治療儀是通過兩個治療輸出通道同時輸出并產生不同頻率,不同相位形成干擾的一種中頻治療儀。本設計可以通過更改治療時間,治療頻率,調制時間等參數來達到針對不同疾病的干擾電輸出。該干擾電治療具有多通道輸出功能,可同時治療6個病人,每個病人使用兩通道四個電極進行干擾電治療。
本設計應用LPC1788作為主控MCU,它以ARM Cortex-M3為內核。Cortex-M3是32位的處理器,最高主頻為120MHz,本系統使其UART功能進行和觸摸屏,FPGA,Debug口之間進行通信,協議傳輸。使用SPI通信控制數字電位器進行輸出強度調節,使用其定時器功能進行治療時間控制。
本設計使用FPGA進行多通道并行12路輸出,通過功率放大后并經過隔離變壓器后,達到輸出治療電信號。FPGA和MCU之間通過串口進行通信,通信協議內容中包括波形基波類型,基波頻率,調制頻率和調制上升時間,下降時間,工作時間,停止時間參數。
系統的硬件電路可以從電源電路、顯示屏電路、觸摸屏驅動電路、氣泵控制電路、壓力檢測電路、數顯和按鍵電路、FPGA通信電路和輸出放大電路、MCU控制輸出強度電路、輔助USB、JTAG、DEBUG端口組成。
(1)電源電路
電源輸入為AC 220家用電壓,通過開關電源轉換成DC 15V電壓,通過TPS5430DDA轉換成DC 12V電壓供給LCD顯示屏幕供電,通過TPS79633將12V電壓轉換成3.3供給MCU供電使用。
(2)顯示屏電路
雖然LPC1788帶有顯示屏控制器,但本設計為了更兼容屏幕使用RA7788芯片作為顯示屏驅動芯片,該芯片和MCU間使用SPI通信,MCU下達控制指令控制屏幕刷圖。同時RA8877支持外掛字庫芯片,以供畫面設計中使用漢字進行設計。
(3)氣泵控制電路
本治療儀具有吸附電極功能,故需要使用氣泵進行抽氣產生負壓,同時MCU通過I/O口產生PWM波,對交流氣泵進行調速,交流氣泵需要提供一個零點信號給MCU,MCU通過識別該信號后延遲不同時間給定導通信號來控制調速。
(4)壓力檢測電路
壓力檢測電路使用六個MPXV5050DP壓力傳感器通過傳遞AD值給LPC1788,但因為LPC1788的AD口有限,故使用CD74HC-4067SM96進行多路復選給LPC1788的AD接口。CD74HC4067SM96通過MCU可控制讀取六個中某一個壓力傳感器的AD值。
(5)數顯和按鍵電路
該治療儀因為通過LED數碼管顯示電流、電壓輸出強度和時間顯示,故需要使用大量LED數碼管,如果使用LPC1788進行控制,I/O口顯然不能滿足12路通道電流、電壓顯示和時間顯示。同時該治療儀每個通道配有模式、氣泵、時間+,-按鍵功能。故使用TM1629B進行LED顯示和按鍵讀取實現,該芯片是一種帶鍵盤掃描接口的LED驅動控制專用IC,MCU通過讀寫該芯片內部寄存器從而控制LED的點亮和按鍵識別功能。
(6)FPGA通信電路和輸出放大電路
FPGA作為并行輸出控制芯片,該FPGA使用XC6SLX16,該芯片通過和MCU進行通信協議對接,實現將上位機選擇設定的參數傳給FPGA,進行波形輸出參數的設定。FPGA輸出波形后經過運放及隔離變壓器進行放大最終輸出治療所需的干擾電波形。
(7)MCU控制輸出強度電路
輸出強度通過面板上編碼器進行調節,通過編碼器給定MCU的信號,LPC1788控制數字電位器進行輸出強度調節,本設計使用數字電位器為MCP42010,該數字電位器具有雙路控制功能,因此本設計只需使用6個數字電位器即可控制12路輸出既6組干擾輸出。MCP42010使用SPI進行控制。
(8)輔助USB、JTAG、DEBUG端口
LPC1788具有USB控制端口,本治療儀使用USB端口進行應用程序升級,同時使用LPC1788的JTAG端口進行軟件開發時期軟件燒錄操作。DEBUG端口是串口用來打印調試程序使用。
本系統程序使用C語言進行編寫,編程軟件使用keil。下面按程序設計順序描述程序各部分功能。
因LPC1788是單核ARM芯片,如果不使用任務調度操作系統,處理上述功能在實時響應上達不到預期要求,故軟件設計中使用FreeRTOS實時操作系統。通過使用RTOS實時操作系統,可以盡可能做到良好的調度各個任務進程。
(1)引導程序
上電后軟件首先進入引導程序,該引導程序主要功能實現USB的初始化,通過讀取EEROM中某地址值進行判斷是否進行U盤升級,如果不需要升級則跳轉到MCU中應用程序中。
(2)初始化程序
在應用程序中,首先進行芯片初始化,芯片初始化配置相關時鐘參數,配置完成時鐘參數后,需要配置氣泵I/O口初始化,RA8877及屏幕進行初始化配置、MCU、數顯和按鍵通信SPI初始化,DEBUG串口、觸摸屏串口、USB串口初始化,壓力傳感器、電流電壓反饋AD引腳配置及初始化。
(3)自檢程序
初始完成后,進行開機自檢,主要自檢和FPGA之間串口通信是否正常,壓力傳感器是否正常,各電路板之間是否正常連接,如不正常則進行則通過屏幕顯示錯誤信息并在開始頁面進入死循環。
(4)觸摸屏初始化
自檢完成后,因該設計使用屏幕為電阻屏,故在初次使用時需將屏幕進行初始化設置,通過采集對角4點橫坐標和縱坐標的AD值,通過線性計算利用AD值=k*坐標值+b,求出k和b的值,則后續即可通過采集的AD值算出所點擊屏幕橫縱坐標。同時將k和b的值保存在內部EEROM中,以供下次開機時直接調用該值。
(5)參數調用及啟動設定參數
軟件通過讀取LPC1788內部EEROM中輸出波形參數,每個通道模式,每個通道治療時間參數,將波形,模式參數通過串口發送給FPGA,FPGA通過LPC1788傳輸的參數設定每個通道模式和波形參數信息。同時LPC1788控制數顯和按鍵驅動芯片,顯示默認設定治療時間。
(6)啟動任務調度系統
完成上述軟件功能后,就可以初始配置任務調度系統,并開始任務調度。在調度系統中分別有如下任務:①觸摸屏任務:該任務主要處理當屏幕按下時,實時通過串口中斷返回橫縱坐標AD值,并通過計算AD值算出所觸碰橫縱坐標,同時判斷該坐標是否是可按下區域,以及該區域內需要調用相應畫圖函數或者更改參數功能,如果更改參數則需要調用RA8877的API函數進行畫面參數修改和同時執行參數保存到EEROM中并且向FPGA發送修改后的參數。②輸出幅度調節任務:該任務主要執行通過LPC1788外部中斷引腳讀取相應通道編碼器動作,并通過SPI控制相應數字電位器進行輸出調節。③按鍵掃描任務:該任務主要通過SPI讀取相應通道氣泵、時間+、-、模式按鍵信號并進行相應程序動作。④電壓、電流、氣壓檢測任務:該任務實時周期性檢測每個通道電壓電流并將AD值轉換成所需點亮LED的數量,用SPI傳遞給LED顯示驅動芯片進行點燈顯示。⑤氣泵控制任務:該任務通過讀取零點信號,在零點信號后延遲來控制氣泵的吸附壓力。
本文通過LPC1788配合FPGA完成醫用干擾電治療儀的設計,給出系統的硬件框架,軟件設計過程和軟件各功能介紹,實現多路干擾電治療儀的輸出。完成基本干擾波形輸出。但在設計使用過程中有些功能使用并不是完善,如氣泵壓力檢測功能并沒有用作氣泵壓力控制閉環反饋。同時治療過程中如果電極脫載也并沒有相應脫載提示及停止輸出功能。這些都可在后續優化中進行添加升級。