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