文 冬,王景存,蔡清清
(武漢科技大學(xué) 信息科學(xué)與工程學(xué)院,武漢430081)
隨著醫(yī)療檢驗技術(shù)和設(shè)備的不斷進步,醫(yī)療液體樣本檢驗自動處理工作平臺得到了越來越廣泛的應(yīng)用,離心機的主要作用是對醫(yī)療檢驗樣本進行離心以達到分離樣本細(xì)胞結(jié)構(gòu)的目的,是全自動樣本檢驗處理工作平臺上的關(guān)鍵設(shè)備,目前平臺系統(tǒng)中離心機的功能多數(shù)靠人工干預(yù),不能完成完整的
自動化處理過程,在此,設(shè)計了搭建在醫(yī)療液體樣本檢驗自動處理工作平臺上的自動定位離心機控制系統(tǒng),其主要功能是配合工作平臺完成待檢驗樣本的自動抓取、自動放置和自動離心功能,減少人工干預(yù)影響、提高工作效率。
自動定位離心機的簡明機械結(jié)構(gòu)如圖1所示,其實物如圖2所示,自動定位離心機的內(nèi)部機械結(jié)構(gòu)包括離心機托架、托架盒、槽型光電開關(guān)、光孔、圓盤、編碼器碼盤、編碼器讀頭、步進電機、離心盒、轉(zhuǎn)軸、皮帶。
圖1 自動定位離心機機械結(jié)構(gòu)Fig.1 Mechanical structure of automatic positioning centrifuge
圖2 醫(yī)用自動定位離心機實物Fig.2 Real object of medical automatic positioning centrifuge
由圖2可見,離心機頂部有一個開孔,為平臺的機械臂手將離心盒取出或者放入離心機的通道;側(cè)面有一塊液晶顯示屏,用于顯示離心機的狀態(tài)信息,轉(zhuǎn)軸通過皮帶與步進電機連接;離心機托架上設(shè)有多個離心盒(即試管盒),平臺中的機械臂手可以將離心盒自動取出或者放入離心機。
在自動定位離心機工作前,需要對其進行初始化,初始化后,主要通過接收主控板發(fā)送的命令、參數(shù),完成勻速找零點、自動定位、高速離心、狀態(tài)顯示和信號反饋等工作。
典型的運動控制系統(tǒng)主要由運動部件、傳動機、執(zhí)行機構(gòu)、驅(qū)動器和控制器構(gòu)成,在此,控制系統(tǒng)主要由基于STM32單片機的控制器、驅(qū)動器、增量型編碼器、步進電機、LCD液晶顯示屏、槽型光電開關(guān)等構(gòu)成,控制系統(tǒng)硬件的結(jié)構(gòu)如圖3所示。
圖3 控制系統(tǒng)硬件結(jié)構(gòu)Fig.3 Hardware structure of control system
編碼器起到記錄離心機位置的作用,系統(tǒng)工作過程中,編碼器讀頭讀取編碼器信號后,經(jīng)過濾波和整形等處理,最終將讀取的信號輸出到單片機的CPU。
槽型關(guān)電開關(guān)的作用是記錄離心機零點位置和離心機轉(zhuǎn)速,系統(tǒng)工作過程中,槽型光電開關(guān)采集開關(guān)信號后,經(jīng)過濾波和放大等處理,最終將開關(guān)信號輸出到單片機的CPU。
LCD顯示模塊用于顯示當(dāng)前離心機的狀態(tài)信息,包括當(dāng)前離心機位置、離心速度、離心時間等。
圖4 離心機控制系統(tǒng)程序流程Fig.4 Program flow chart of centrifuge control system
離心機控制系統(tǒng)程序流程如圖4所示,控制系統(tǒng)在上電復(fù)位后進行初始化,然后進入等待458總線命令的狀態(tài),在等待一段時間后進入正常工作狀態(tài)或手動工作狀態(tài),若在一定時間內(nèi)接收到總線命令,此時離心機進入正常工作狀態(tài),然后對總線命令做進一步處理,否則離心機進入手動工作狀態(tài),主程序掃描鍵盤,等待按鍵,通過功能按鍵做進一步處理[1],在正常工作和手動工作狀態(tài)下均可完成離心機參數(shù)設(shè)置、勻速找零、自動定位、高速離心等工作。
醫(yī)用自動定位離心機的工作方式分為2種,低速定位方式和高速離心方式,低速定位方式能夠?qū)崿F(xiàn)以下功能:找零點,找離心盒位置1,找離心盒位置2,找位置離心盒3,找離心盒位置4。
1.企業(yè)核心能力整體上相當(dāng)匱乏。具有自身獨特核心能力的企業(yè)才是健康擁有活力的,然而,縱觀國內(nèi)眾多企業(yè),雖然有些時候一些企業(yè)也表現(xiàn)出很大優(yōu)勢,獲得了很大利潤,但對于企業(yè)核心能力,多數(shù)企業(yè)仍然沒有建立起來。快速成立又快速破產(chǎn)的企業(yè)比比皆是,并由此造成我國就業(yè)市場持續(xù)嚴(yán)峻的形勢。
找零點過程通過單片機控制器發(fā)送一個固定較低頻率的脈沖,使步進電機帶動離心機勻速旋轉(zhuǎn),當(dāng)槽型缺口一側(cè)到達槽型光電開關(guān)處時,開關(guān)信號的變化以輸入捕獲的方式進入單片機,反復(fù)確認(rèn)3次后,此時單片機記錄當(dāng)前位置為初始零點,編碼器數(shù)值清零。
離心機找離心盒位置1通過控制器發(fā)固定脈沖數(shù)來實現(xiàn),步進電機以初始零點為起點,偏移一個固定脈沖數(shù)來確定離心盒位置1,偏移量(脈沖數(shù))用參數(shù)OFFSET表示。該參數(shù)值為每臺離心機的個性參數(shù),不同離心機的參數(shù)值因機械裝配差異而不同,當(dāng)步進電機走完該偏移量后,單片機以編碼器的數(shù)值作為反饋來判斷找位置的精度,并在一定范圍內(nèi)進行參數(shù)調(diào)整,從而實現(xiàn)對自動定位離心機的定位控制。
同理,離心機可實現(xiàn)其他位置的定位控制。
醫(yī)用自動定位離心機在離心狀態(tài)下,步進電機轉(zhuǎn)速從0 開始增加,經(jīng)過加速階段達到給定的速度值,并穩(wěn)定在該速度即進入勻速階段,勻速階段保持值一段時間后進入減速階段,直至速度為0。
電機常用的控制算法有LQR、模糊控制、PID等,其中,線性二次型調(diào)節(jié)器LQR(linear quadratic regulator)的控制對象,是現(xiàn)代控制理論中以狀態(tài)空間方程給出的線性系統(tǒng),需要通過MatLab計算最優(yōu)反饋增益矩陣K=lqr(A,B,Q,R,N)[2],模糊控制依賴于模糊規(guī)則表的制定,模糊規(guī)則表則根據(jù)專家或自己在調(diào)試系統(tǒng)時的控制心得而定,模糊控制適用于非線性系統(tǒng),魯棒性好[3],PID是一種常規(guī)的反饋閉環(huán)控制,具有算法簡單、控制可靠、魯棒性較好等特點,P越大魯棒性越好,若魯棒性增強則會出現(xiàn)強烈的抖振現(xiàn)象,反之若減少抖振現(xiàn)象則系統(tǒng)的魯棒性會降低,所以魯棒性和抖振是一對矛盾[3],在達到控制目的的前提下,通過PID控制算法來控制離心機旋轉(zhuǎn),即使沒有控制系統(tǒng)的數(shù)學(xué)模型,也能得到比較滿意的控制效果,通過PID控制算法來編程,程序設(shè)計簡單,參數(shù)調(diào)整方便;有較強的靈活性和適應(yīng)性,根據(jù)被控對象的具體情況,可以采用P,PI,PID等方式。故在此系統(tǒng)選用PID 閉環(huán)的穩(wěn)態(tài)控制方案。
傳統(tǒng)的位置式PID算法公式為
式中:Kp,Ti,Td,e(t)分別為比例系數(shù)、積分系數(shù)、微分系數(shù)、誤差值,位置式PID算法的最大缺點在于它的每次輸出U(t)與過去的狀態(tài)均有關(guān),在計算時需要對過去的所有誤差進行累加,工作量較大,此外PID控制器如果出現(xiàn)問題對系統(tǒng)造成的影響很大。
增量式PID算法公式為
由式(2)可知,增量式PID輸出不需要對過去所有誤差進行累加,輸出的控制增量僅需要通過最近的3次采樣值就能確定。當(dāng)Kp,Ti,Td確定后,輸出的控制增量也就確定了,相比位置式PID算法更容易計算,通過加權(quán)處理就能得到較好的效果,控制器出現(xiàn)問題時也不會對系統(tǒng)造成非常大的影響[4]。故在此所設(shè)計的離心機采用了增量式PID算法控制,易于實現(xiàn)且系統(tǒng)穩(wěn)定,所采用的PID 閉環(huán)控制系統(tǒng)模型如圖5所示。
編碼器單圈線數(shù)為600,為了提高編碼器的計數(shù)精度,實際將編碼器4倍頻處理,步進電機旋轉(zhuǎn)一圈,步進電機運行的距離為5 mm,編碼器變化的數(shù)值Encoder_SPR為2400。
圖5 電機閉環(huán)控制系統(tǒng)框圖Fig.5 Closed loop control system block diagram of motor
Vel_SetPoint為設(shè)定的電機目標(biāo)速度,r/min;后續(xù)試驗中電機速度設(shè)定值為1800 r/min,因編碼器采樣周期為20 ms,故需將其轉(zhuǎn)化為20 ms內(nèi)目標(biāo)速度對應(yīng)的編碼器變化值Vel_Target,即
在STM32控制程序中,所用的增量式PID算法數(shù)學(xué)模型為
式中:TarVal為目標(biāo)速度對應(yīng)的20 ms內(nèi)編碼器變化值;CurVal為當(dāng)前20 ms 編碼器變化的反饋值;Kp為比例系數(shù);Ki為積分系數(shù);Kd為微分系數(shù);e(k)為TarVal與CurVal的偏差值;e(k-1)為記錄e(k)的上一次偏差;e(k-2)為記錄e(k-1)的上一次偏差。由相鄰3 組偏差計算一次輸出的增量。
控制步進電機時,增量式PID算法每20 ms 執(zhí)行1次,每次執(zhí)行算法均會累積ΔUk,即
式中:Vel_Exp_Val為速度的輸出值,其轉(zhuǎn)換成電機的輸出頻率就可以控制電機的實際轉(zhuǎn)速。
STM32單片機的通用定時器自帶編碼器接口。系統(tǒng)所使用的通用定時器Time 3輸入通道口TI 1和TI 2作為編碼器的接口,在使用時將Time 3配置為正交編碼器計數(shù)模式,且在TI 1和TI 2 上升沿捕獲。自動重裝載值TIMx_ARR為65535,根據(jù)步進電機運行方向,或是0 至TIMx_ARR計 數(shù),或是TIMx_ARR 至0計 數(shù),并且設(shè)置URS 寄存器僅允許溢出才產(chǎn)生一次更新中斷,Over 用于紀(jì)錄電機旋轉(zhuǎn)過程中編碼器計數(shù)寄存器CNT 溢出的次數(shù),電機正轉(zhuǎn)溢出,Over值自加1,反之則Over值自減1,Getcount為當(dāng)前計數(shù)寄存器CNT的計數(shù)值,則捕獲編碼器所走的脈沖值CapNum為
系統(tǒng)滴答定時器每隔20 ms對編碼器的值進行一次采樣,LastCapNum 用于記錄上一個20 ms的CapNum的值,則本次20 ms內(nèi)采樣的值為MSF,為避免采樣值出現(xiàn)負(fù)數(shù),需對計算結(jié)果取絕對值,即
每20 ms內(nèi)的MSF值進行一次累加,并將累加值保存到變量SUM,1 s內(nèi)累積50次,得到前1 s內(nèi)的步進電機編碼器變化值,然后轉(zhuǎn)化為1 min 電機旋轉(zhuǎn)的圈數(shù)即Vel_Cur_Val,r/min,有
每隔1 s 將Vel_Cur_Val的值發(fā)送到LCD液晶屏上顯示出來,用以記錄步進電機的速度,發(fā)送后將SUM值清零。
3.4.1 輸出比較脈沖產(chǎn)生原理
PUL腳產(chǎn)生脈沖原理如圖6所示。
圖6 PUL腳產(chǎn)生脈沖原理Fig.6 Schematic of PUL pin generate pulse
輸出比較產(chǎn)生脈沖的原理如下:輸出比較也為翻轉(zhuǎn)輸出,初始化設(shè)置通道的脈沖計數(shù)值為Toggle_Pluse(即500),在啟動定時器運行后,定時器從0 開始計數(shù),待計數(shù)到Toggle_Pluse(即500)值時就會產(chǎn)生中斷,翻轉(zhuǎn)PUL通道引腳,并且執(zhí)行DelayCal 函數(shù)。在該函數(shù)內(nèi),讀取當(dāng)前定時器計數(shù)值保存到變量count(此時該值為500),并設(shè)置新的比較值為count+Toggle_Pluse(即500+500=1000),然后,定時器繼續(xù)計數(shù),待計數(shù)值達到1000時,又產(chǎn)生中斷,翻轉(zhuǎn)PUL通道引腳,并把比較值設(shè)置為1500(1000+Toggle_Pluse),……,如此循環(huán)執(zhí)行,最終的效果即在定時器通道引腳輸出持續(xù)的脈沖信號,因為一個完整的脈沖周期,PUL引腳通道電平需要翻轉(zhuǎn)2次,所以一個完整的脈沖信號對應(yīng)定時器的計數(shù)值為2(Toggle_Pluse),這樣通過改變Toggle_Pluse值可以非常方便地改變脈沖信號頻率。
3.4.2 步進電機運動控制
系統(tǒng)中,步進電機轉(zhuǎn)1 周需要200個脈沖,步距角為1.8°。為提高步進電機的步距精度,將驅(qū)動器的細(xì)分?jǐn)?shù)調(diào)為16 細(xì)分,即步進電機步距角變小,此時電機轉(zhuǎn)一圈的脈沖數(shù)Motor_SPR為3200。
通過速度的輸出值Vel_Exp_Val,計算出步進電機的頻率為
定時器TIM1的系統(tǒng)時鐘為72 MHz,在此進行4分頻處理,驅(qū)動電機TIM1的實際時鐘頻率T1_Freq為18 MHz,則每20 ms 采樣TIM 1的時鐘頻率為
那么TIM 1每個脈沖的計數(shù)值為
根據(jù)輸出脈沖產(chǎn)生原理,一個完整脈沖需要翻轉(zhuǎn)PUL腳電平2次,則PUL通道脈沖的設(shè)定值為
最終通過改變Toggle_Pluse的大小來調(diào)整脈沖頻率的大小,從而改變步進旋轉(zhuǎn)的轉(zhuǎn)速。
整個PID 速度閉環(huán)控制的調(diào)整流程如圖7所示,其中每20 ms對編碼器的值進行一次采樣。
試驗過程中,速度目標(biāo)值為步進電機所達到的實際速度值,在此,設(shè)定電機運行的最高速度為1800 r/min,速度的初始比例系數(shù)kp=0.001,然后逐漸增大kp值,經(jīng)過調(diào)節(jié),取其中4 組有代表性的數(shù)據(jù)進行繪制(如圖8所示),其中kp分別為0.001,0.004,0.008,0.014。
由圖可見,其中3 組曲線(kp為0.004,0.008,0.014時)的越大,步進電機運行到目標(biāo)速度的調(diào)整時間越短。由實際測量的數(shù)據(jù)發(fā)現(xiàn),kp=0.004時電機可以較快且比較穩(wěn)定地達到目標(biāo)速度1800 r/min。又由圖可見,電機到達目標(biāo)速度卻不能穩(wěn)定,存在穩(wěn)態(tài)誤差。
圖7 PID 調(diào)整流程Fig.7 PID adjustment flow chart
圖8 比例調(diào)節(jié)Fig.8 Proportional adjustment
為消除穩(wěn)態(tài)誤差,需要引入積分調(diào)節(jié),固定速度的比例參數(shù)kp=0.004,調(diào)節(jié)積分參數(shù)ki(起始參數(shù)為0.001),反復(fù)調(diào)整ki,當(dāng)ki=0.005時繪制的PI 調(diào)節(jié)曲線如圖9所示。
圖9與圖8對比可見,積分參數(shù)ki的引入,使速度調(diào)節(jié)的穩(wěn)態(tài)誤差基本消除,電機在此之后一直以1800 r/min的速度勻速運行,由此表明速度調(diào)節(jié)采用PI 調(diào)節(jié)即可使離心機快速、穩(wěn)定地達到目標(biāo)速度。
圖9 比例積分調(diào)節(jié)Fig.9 Proportional integral adjustment
所設(shè)計的醫(yī)用自動定位離心機控制系統(tǒng),通過增量型編碼器和槽型光電開關(guān)采集信號,最終實現(xiàn)精確定位;通過增量式PID控制算法控制離心機旋轉(zhuǎn),實現(xiàn)對離心機轉(zhuǎn)速的穩(wěn)定控制;單片機輸出狀態(tài)信號并在顯示設(shè)備上顯示,多次模擬試驗成功后,在隨后的實際現(xiàn)場也得到了成功的驗證,達到了預(yù)期的效果,該自動定位離心機具有定位精度高、可免除人工參與、工作效率高等優(yōu)點。