杜妍辰,周 琦,喻洪流
(1上海理工大學(xué) 健康科學(xué)與工程學(xué)院,上海 200093;2上海理工大學(xué) 康復(fù)工程與技術(shù)研究所,上海 200093)
腰椎牽引作為椎間盤突出癥的治療方法,是治療背痛和腿痛患者的常見方式。根據(jù)腰椎牽引原理,已有大量牽引設(shè)備出現(xiàn)在市面上。如:機(jī)械式牽引床、電動(dòng)式牽引床、自重式牽引床等。但是,該類設(shè)備普遍存在牽引維度單一,牽引力不足的劣勢(shì),由于運(yùn)動(dòng)維度的限制,無(wú)法實(shí)現(xiàn)手法牽引。為解決這些問(wèn)題,本設(shè)備實(shí)現(xiàn)了多維的牽引,包括成角牽引、擺角牽引、旋角牽引和手法牽引。另外,用液壓驅(qū)動(dòng)代替?zhèn)鹘y(tǒng)的電機(jī)驅(qū)動(dòng),能方便地實(shí)現(xiàn)無(wú)級(jí)調(diào)速,而且輸出推力轉(zhuǎn)矩更大。
本文基于STM32F103ZET6芯片,針對(duì)多維腰椎牽引裝置,設(shè)計(jì)了相關(guān)牽引裝置的控制系統(tǒng)。該系統(tǒng)由軟硬件兩部分組成。底層硬件包括RS485通訊電路、液壓電磁閥控制電路、液壓調(diào)節(jié)電路以及傳感器信號(hào)變送電路。軟件方面采用RT-THREAD實(shí)時(shí)操作系統(tǒng),以及多線程架構(gòu)。為了提高控制精度,系統(tǒng)中包含多個(gè)傳感器,實(shí)時(shí)提供位置信號(hào)和拉壓力數(shù)據(jù),形成閉環(huán)控制。另外,還配備了移動(dòng)端上位機(jī),通過(guò)WIFI與設(shè)備通訊,實(shí)現(xiàn)無(wú)線操作。
系統(tǒng)控制主板主要由電源模塊、液壓電磁閥控制模塊、通訊模塊、傳感器采集模塊和液壓調(diào)節(jié)模塊構(gòu)成,其結(jié)構(gòu)如圖1所示。
STM32F103ZET6單片機(jī),是32位基于Arm的Cortex-M3微控制器,具有全面的外設(shè)選擇。該芯片同時(shí)保持完全集成和易于開發(fā)兩種特點(diǎn),其MCU的最大系統(tǒng)時(shí)鐘可達(dá)72 MHz,可在外圍搭建IO控制電路、模擬量采集電路以及RS485通訊電路,能夠滿足本系統(tǒng)的設(shè)計(jì)需求。而且該單片機(jī)引腳數(shù)充足,體積小,既能夠滿足功能又能夠減小控制主板的整體大小,其具有強(qiáng)大的實(shí)時(shí)功能,也可對(duì)數(shù)字信號(hào)進(jìn)行相關(guān)處理。
圖1 控制主板結(jié)構(gòu)圖Fig.1 Control board structure diagram
RS485(TIA-485(-A)/EIA-485)采用2線通訊,允許半雙工數(shù)據(jù)傳輸,數(shù)據(jù)可以在兩個(gè)方向上一次向一個(gè)方向往返于設(shè)備;RS485能夠在長(zhǎng)距離和電噪聲環(huán)境中有效使用。
設(shè)計(jì)中采用MAX485芯片,搭建了能夠自收發(fā)的RS485電路,如圖2所示。本電路能夠最小化EMI,減少不良終端對(duì)電路產(chǎn)生的干擾,其傳輸頻率最高可達(dá)2.5 Mbps。
控制系統(tǒng)液壓調(diào)節(jié)模塊中使用了24 V的直流有刷電機(jī),作為壓力調(diào)節(jié)電機(jī)。通過(guò)對(duì)電機(jī)的控制,改變內(nèi)部閥口的開合大小,控制內(nèi)部壓力,進(jìn)而控制運(yùn)動(dòng)速度。
圖2 RS485電路原理圖Fig.2 RS485 circuit schematic diagram
該模塊基于全集成、大電流半橋BTS7970,設(shè)計(jì)的電機(jī)驅(qū)動(dòng)電路如圖3所示。由于p通道高壓側(cè)開關(guān)無(wú)需電荷泵,從而將EMI降至最低。集成驅(qū)動(dòng)IC易于與微控制器接口,具有邏輯電平輸入、電流檢測(cè)診斷、轉(zhuǎn)換率調(diào)整、死區(qū)時(shí)間生成功能。在過(guò)熱、過(guò)壓、欠壓、過(guò)流和短路的情況下,能夠?qū)﹄娐菲鸬奖Wo(hù)作用。當(dāng)電機(jī)驅(qū)動(dòng)需要大電流驅(qū)動(dòng)時(shí)選擇BTS7970,能夠優(yōu)化電路、降低電路板空間消耗。
圖3 BTS7970驅(qū)動(dòng)電路圖Fig.3 BTS7970 driving circuit diagram
另外,電磁閥控制模塊主要實(shí)現(xiàn)對(duì)液壓回路中電磁換向閥的控制,從而控制整個(gè)設(shè)備的成角、擺角、旋角以及牽引運(yùn)動(dòng)。電路中主要采用ULN2803達(dá)靈頓晶體管陣列,每一對(duì)達(dá)林頓集的電極電流額定值為500 ma,足以驅(qū)動(dòng)30 ma繼電器。達(dá)林頓(復(fù)合)管原理如圖4所示。其中,COM端是為了連接感性負(fù)載時(shí)所需續(xù)流而用;鉗位二極管具有電路保護(hù)作用。
圖4 達(dá)林頓(復(fù)合)管原理圖Fig.4 Darlington(composite)tube schematic diagram
系統(tǒng)所用傳感器包括光電式編碼器和拉壓力傳感器。其中,光電式編碼器主要用于檢測(cè)設(shè)備進(jìn)行成角、擺角和旋角運(yùn)動(dòng)時(shí)的位置信息,從而實(shí)現(xiàn)對(duì)運(yùn)動(dòng)位置的精準(zhǔn)控制;拉壓力傳感器用于觀察牽引過(guò)程中牽引力的變化情況?;诶瓑毫鞲衅鞯姆答佇畔?,可以實(shí)現(xiàn)牽引力的閉環(huán)控制。
光電式編碼器利用的是光電轉(zhuǎn)換原理,通過(guò)內(nèi)部光電傳感器產(chǎn)生電信號(hào),輸出3組方波脈沖。其中,A、B相輸出脈沖相位之間相差90°,脈沖的先后可以用于判斷旋轉(zhuǎn)方向,Z相脈沖的一個(gè)周期對(duì)應(yīng)電機(jī)旋轉(zhuǎn)一圈。STM32內(nèi)部自帶通用定時(shí)器的編碼器模式,可以直接連接編碼器,對(duì)其輸出脈沖計(jì)數(shù),從而直接獲取旋轉(zhuǎn)角度值。
由于拉壓力傳感器的輸出形式為電壓差分信號(hào),單片機(jī)無(wú)法通過(guò)內(nèi)部AD轉(zhuǎn)換直接讀取信號(hào)值,因此需要相關(guān)的儀表放大電路進(jìn)行信號(hào)處理。INA128芯片是常用的儀表放大器芯片,能夠保護(hù)輸入電路,具有輸入緩沖放大器,起到差動(dòng)放大作用。使用INA128芯片時(shí),不需要對(duì)輸入阻抗進(jìn)行特意匹配,放大倍數(shù)可以根據(jù)公式(1)計(jì)算,使其放大器特別適用于測(cè)量和測(cè)試設(shè)備。
其中,為放大倍數(shù),為外部增益設(shè)置電阻器,控制實(shí)際放大倍數(shù),具體電路如圖5所示。
圖5 INA128儀表放大器電路圖Fig.5 INA128 instrumentation amplifier circuit diagram
控制系統(tǒng)使用RS485,通過(guò)WIFI串口服務(wù)器連接,實(shí)現(xiàn)與上位機(jī)的無(wú)線通訊。對(duì)RS485通訊的相關(guān)基礎(chǔ)配置在程序初始化中完成,保證通訊的正常啟動(dòng)。通訊初始化包括單片機(jī)對(duì)應(yīng)引腳的配置、內(nèi)部時(shí)鐘使能、相關(guān)標(biāo)志位設(shè)置、接收中斷優(yōu)先級(jí)以及RS485的工作模式設(shè)置。RS485正常工作模式下,波特率為115200,采用自擬的通訊協(xié)議格式。
RS485處于接收狀態(tài)時(shí),先在中斷函數(shù)內(nèi)完成上位機(jī)下發(fā)的指令報(bào)文接收,并驗(yàn)證報(bào)文是否符合正常報(bào)文格式。符合則進(jìn)入報(bào)文解析函數(shù),對(duì)報(bào)文進(jìn)行解析,其中包括頭幀、ID號(hào)、功能碼、數(shù)據(jù)幀以及16位的CRC校驗(yàn);否則返回錯(cuò)誤報(bào)文信息。當(dāng)RS485處于發(fā)送狀態(tài)時(shí),會(huì)對(duì)數(shù)據(jù)信息進(jìn)行打包處理,報(bào)文格式與接收?qǐng)?bào)文格式相同。協(xié)議格式見表1。
表1 通訊協(xié)議表Tab.1 Communication protocol table
根據(jù)輸入指令,確定設(shè)備所需要進(jìn)行的動(dòng)作,通過(guò)控制繼電器驅(qū)動(dòng)電磁閥開合,實(shí)現(xiàn)設(shè)備具體動(dòng)作(如成角、旋角、擺角等牽引);在動(dòng)作進(jìn)行過(guò)程中,能夠通過(guò)編碼器實(shí)時(shí)采集位置角度信息,不斷更新實(shí)際位置與預(yù)定位置的誤差值θ,控制運(yùn)動(dòng)速度,使其能更精準(zhǔn)的到達(dá)設(shè)定角度或是牽引位置。位置控制框架如圖6所示。
圖6 PID控制框圖Fig.6 PID control block diagram
由于PID算法具有簡(jiǎn)單實(shí)用、響應(yīng)快、對(duì)靜態(tài)誤差有抑制效果等優(yōu)勢(shì),所以采用PID算法進(jìn)行控制器設(shè)計(jì)。為了便于程序?qū)崿F(xiàn),將公式離散化??刂破鞯膶?shí)現(xiàn)形式為:
式中,K為比例增益;K為積分時(shí)間常數(shù);K為微分時(shí)間常數(shù);()是當(dāng)前周期位置偏差;(1)為上周期的位置偏差。
本控制程序采用RT-Thread實(shí)時(shí)操作系統(tǒng),搭建了多線程的架構(gòu)。其中包括:RS485通訊線程、傳感器數(shù)據(jù)采集線程、調(diào)壓電機(jī)控制線程,以及繼電器控制線程。線程之間通過(guò)消息隊(duì)列進(jìn)行通信,發(fā)送線程將消息發(fā)送到消息隊(duì)列控制模塊中,從而喚醒被掛起的線程接收并處理消息。
系統(tǒng)啟動(dòng)后,先對(duì)線程初始化并創(chuàng)建消息隊(duì)列。RS485通訊線程最先啟動(dòng),保持接收狀態(tài)。當(dāng)接收到上位機(jī)發(fā)來(lái)報(bào)文時(shí),對(duì)報(bào)文進(jìn)行處理,提取其中的功能指令和數(shù)據(jù)信息,將其放入消息隊(duì)列;繼電器控制線程獲取功能指令,控制對(duì)應(yīng)繼電器;傳感器數(shù)據(jù)采集線程獲取數(shù)據(jù)信息,不斷更新當(dāng)前傳感器的數(shù)據(jù);調(diào)壓電機(jī)控制線程根據(jù)實(shí)時(shí)運(yùn)動(dòng)位置信息變化,對(duì)調(diào)壓電機(jī)進(jìn)行控制,調(diào)整系統(tǒng)內(nèi)部壓力,從而控制運(yùn)動(dòng)速度。系統(tǒng)控制流程如圖7所示。
圖7 系統(tǒng)程序控制流程圖Fig.7 System program control flow chart
控制系統(tǒng)搭建安裝完成后,對(duì)整機(jī)進(jìn)行了功能試驗(yàn)。圖8的電路安裝在設(shè)備側(cè)面的門板上,占用極少的設(shè)備內(nèi)部空間。
圖8 控制系統(tǒng)主板和樣機(jī)實(shí)物圖Fig.8 The physical diagram of the control system
在實(shí)驗(yàn)過(guò)程中,上位機(jī)發(fā)送指令,控制設(shè)備進(jìn)行成角、擺角、旋角以及牽引動(dòng)作的實(shí)現(xiàn)。實(shí)時(shí)采集編碼器反饋的位置信號(hào),并通過(guò)最后停止位置與設(shè)定位置進(jìn)行比較。經(jīng)5次檢測(cè)實(shí)驗(yàn),最終結(jié)果數(shù)據(jù)見表2。
由表中數(shù)據(jù)可知,各個(gè)角度和牽引動(dòng)作的誤差基本保持在1%左右,驗(yàn)證了該控制系統(tǒng)能夠準(zhǔn)確控制裝置進(jìn)行三維牽引。另外,也表明控制系統(tǒng)對(duì)整體的液壓控制是可行的。
表2 實(shí)驗(yàn)數(shù)據(jù)表Tab.2 Experimental data table
本文針對(duì)多維腰椎牽引裝置,設(shè)計(jì)了基于STM32的液壓控制系統(tǒng)。采用RS485實(shí)現(xiàn)了與上位機(jī)的通信,配合電磁閥驅(qū)動(dòng)電路、液壓調(diào)節(jié)模塊與傳感器采集模塊,構(gòu)成多維腰椎牽引裝置的硬件系統(tǒng)。軟件系統(tǒng)方面,采用了實(shí)時(shí)操作系統(tǒng),多線程的程序架構(gòu)。控制器使用了PID算法,通過(guò)編碼器獲取位置偏差,對(duì)內(nèi)部液壓進(jìn)行調(diào)整,提高裝置的精確度。經(jīng)多次實(shí)驗(yàn),驗(yàn)證了控制系統(tǒng)的可行性。