文 冬,王景存,蔡清清
(武漢科技大學 信息科學與工程學院,武漢430081)
隨著醫療檢驗技術和設備的不斷進步,醫療液體樣本檢驗自動處理工作平臺得到了越來越廣泛的應用,離心機的主要作用是對醫療檢驗樣本進行離心以達到分離樣本細胞結構的目的,是全自動樣本檢驗處理工作平臺上的關鍵設備,目前平臺系統中離心機的功能多數靠人工干預,不能完成完整的
自動化處理過程,在此,設計了搭建在醫療液體樣本檢驗自動處理工作平臺上的自動定位離心機控制系統,其主要功能是配合工作平臺完成待檢驗樣本的自動抓取、自動放置和自動離心功能,減少人工干預影響、提高工作效率。
自動定位離心機的簡明機械結構如圖1所示,其實物如圖2所示,自動定位離心機的內部機械結構包括離心機托架、托架盒、槽型光電開關、光孔、圓盤、編碼器碼盤、編碼器讀頭、步進電機、離心盒、轉軸、皮帶。

圖1 自動定位離心機機械結構Fig.1 Mechanical structure of automatic positioning centrifuge

圖2 醫用自動定位離心機實物Fig.2 Real object of medical automatic positioning centrifuge
由圖2可見,離心機頂部有一個開孔,為平臺的機械臂手將離心盒取出或者放入離心機的通道;側面有一塊液晶顯示屏,用于顯示離心機的狀態信息,轉軸通過皮帶與步進電機連接;離心機托架上設有多個離心盒(即試管盒),平臺中的機械臂手可以將離心盒自動取出或者放入離心機。
在自動定位離心機工作前,需要對其進行初始化,初始化后,主要通過接收主控板發送的命令、參數,完成勻速找零點、自動定位、高速離心、狀態顯示和信號反饋等工作。
典型的運動控制系統主要由運動部件、傳動機、執行機構、驅動器和控制器構成,在此,控制系統主要由基于STM32單片機的控制器、驅動器、增量型編碼器、步進電機、LCD液晶顯示屏、槽型光電開關等構成,控制系統硬件的結構如圖3所示。

圖3 控制系統硬件結構Fig.3 Hardware structure of control system
編碼器起到記錄離心機位置的作用,系統工作過程中,編碼器讀頭讀取編碼器信號后,經過濾波和整形等處理,最終將讀取的信號輸出到單片機的CPU。
槽型關電開關的作用是記錄離心機零點位置和離心機轉速,系統工作過程中,槽型光電開關采集開關信號后,經過濾波和放大等處理,最終將開關信號輸出到單片機的CPU。
LCD顯示模塊用于顯示當前離心機的狀態信息,包括當前離心機位置、離心速度、離心時間等。

圖4 離心機控制系統程序流程Fig.4 Program flow chart of centrifuge control system
離心機控制系統程序流程如圖4所示,控制系統在上電復位后進行初始化,然后進入等待458總線命令的狀態,在等待一段時間后進入正常工作狀態或手動工作狀態,若在一定時間內接收到總線命令,此時離心機進入正常工作狀態,然后對總線命令做進一步處理,否則離心機進入手動工作狀態,主程序掃描鍵盤,等待按鍵,通過功能按鍵做進一步處理[1],在正常工作和手動工作狀態下均可完成離心機參數設置、勻速找零、自動定位、高速離心等工作。
醫用自動定位離心機的工作方式分為2種,低速定位方式和高速離心方式,低速定位方式能夠實現以下功能:找零點,找離心盒位置1,找離心盒位置2,找位置離心盒3,找離心盒位置4。
1.企業核心能力整體上相當匱乏。具有自身獨特核心能力的企業才是健康擁有活力的,然而,縱觀國內眾多企業,雖然有些時候一些企業也表現出很大優勢,獲得了很大利潤,但對于企業核心能力,多數企業仍然沒有建立起來。快速成立又快速破產的企業比比皆是,并由此造成我國就業市場持續嚴峻的形勢。
找零點過程通過單片機控制器發送一個固定較低頻率的脈沖,使步進電機帶動離心機勻速旋轉,當槽型缺口一側到達槽型光電開關處時,開關信號的變化以輸入捕獲的方式進入單片機,反復確認3次后,此時單片機記錄當前位置為初始零點,編碼器數值清零。
離心機找離心盒位置1通過控制器發固定脈沖數來實現,步進電機以初始零點為起點,偏移一個固定脈沖數來確定離心盒位置1,偏移量(脈沖數)用參數OFFSET表示。該參數值為每臺離心機的個性參數,不同離心機的參數值因機械裝配差異而不同,當步進電機走完該偏移量后,單片機以編碼器的數值作為反饋來判斷找位置的精度,并在一定范圍內進行參數調整,從而實現對自動定位離心機的定位控制。
同理,離心機可實現其他位置的定位控制。
醫用自動定位離心機在離心狀態下,步進電機轉速從0 開始增加,經過加速階段達到給定的速度值,并穩定在該速度即進入勻速階段,勻速階段保持值一段時間后進入減速階段,直至速度為0。
電機常用的控制算法有LQR、模糊控制、PID等,其中,線性二次型調節器LQR(linear quadratic regulator)的控制對象,是現代控制理論中以狀態空間方程給出的線性系統,需要通過MatLab計算最優反饋增益矩陣K=lqr(A,B,Q,R,N)[2],模糊控制依賴于模糊規則表的制定,模糊規則表則根據專家或自己在調試系統時的控制心得而定,模糊控制適用于非線性系統,魯棒性好[3],PID是一種常規的反饋閉環控制,具有算法簡單、控制可靠、魯棒性較好等特點,P越大魯棒性越好,若魯棒性增強則會出現強烈的抖振現象,反之若減少抖振現象則系統的魯棒性會降低,所以魯棒性和抖振是一對矛盾[3],在達到控制目的的前提下,通過PID控制算法來控制離心機旋轉,即使沒有控制系統的數學模型,也能得到比較滿意的控制效果,通過PID控制算法來編程,程序設計簡單,參數調整方便;有較強的靈活性和適應性,根據被控對象的具體情況,可以采用P,PI,PID等方式。故在此系統選用PID 閉環的穩態控制方案。
傳統的位置式PID算法公式為

式中:Kp,Ti,Td,e(t)分別為比例系數、積分系數、微分系數、誤差值,位置式PID算法的最大缺點在于它的每次輸出U(t)與過去的狀態均有關,在計算時需要對過去的所有誤差進行累加,工作量較大,此外PID控制器如果出現問題對系統造成的影響很大。
增量式PID算法公式為

由式(2)可知,增量式PID輸出不需要對過去所有誤差進行累加,輸出的控制增量僅需要通過最近的3次采樣值就能確定。當Kp,Ti,Td確定后,輸出的控制增量也就確定了,相比位置式PID算法更容易計算,通過加權處理就能得到較好的效果,控制器出現問題時也不會對系統造成非常大的影響[4]。故在此所設計的離心機采用了增量式PID算法控制,易于實現且系統穩定,所采用的PID 閉環控制系統模型如圖5所示。
編碼器單圈線數為600,為了提高編碼器的計數精度,實際將編碼器4倍頻處理,步進電機旋轉一圈,步進電機運行的距離為5 mm,編碼器變化的數值Encoder_SPR為2400。

圖5 電機閉環控制系統框圖Fig.5 Closed loop control system block diagram of motor
Vel_SetPoint為設定的電機目標速度,r/min;后續試驗中電機速度設定值為1800 r/min,因編碼器采樣周期為20 ms,故需將其轉化為20 ms內目標速度對應的編碼器變化值Vel_Target,即

在STM32控制程序中,所用的增量式PID算法數學模型為

式中:TarVal為目標速度對應的20 ms內編碼器變化值;CurVal為當前20 ms 編碼器變化的反饋值;Kp為比例系數;Ki為積分系數;Kd為微分系數;e(k)為TarVal與CurVal的偏差值;e(k-1)為記錄e(k)的上一次偏差;e(k-2)為記錄e(k-1)的上一次偏差。由相鄰3 組偏差計算一次輸出的增量。
控制步進電機時,增量式PID算法每20 ms 執行1次,每次執行算法均會累積ΔUk,即

式中:Vel_Exp_Val為速度的輸出值,其轉換成電機的輸出頻率就可以控制電機的實際轉速。
STM32單片機的通用定時器自帶編碼器接口。系統所使用的通用定時器Time 3輸入通道口TI 1和TI 2作為編碼器的接口,在使用時將Time 3配置為正交編碼器計數模式,且在TI 1和TI 2 上升沿捕獲。自動重裝載值TIMx_ARR為65535,根據步進電機運行方向,或是0 至TIMx_ARR計 數,或是TIMx_ARR 至0計 數,并且設置URS 寄存器僅允許溢出才產生一次更新中斷,Over 用于紀錄電機旋轉過程中編碼器計數寄存器CNT 溢出的次數,電機正轉溢出,Over值自加1,反之則Over值自減1,Getcount為當前計數寄存器CNT的計數值,則捕獲編碼器所走的脈沖值CapNum為

系統滴答定時器每隔20 ms對編碼器的值進行一次采樣,LastCapNum 用于記錄上一個20 ms的CapNum的值,則本次20 ms內采樣的值為MSF,為避免采樣值出現負數,需對計算結果取絕對值,即

每20 ms內的MSF值進行一次累加,并將累加值保存到變量SUM,1 s內累積50次,得到前1 s內的步進電機編碼器變化值,然后轉化為1 min 電機旋轉的圈數即Vel_Cur_Val,r/min,有

每隔1 s 將Vel_Cur_Val的值發送到LCD液晶屏上顯示出來,用以記錄步進電機的速度,發送后將SUM值清零。
3.4.1 輸出比較脈沖產生原理
PUL腳產生脈沖原理如圖6所示。

圖6 PUL腳產生脈沖原理Fig.6 Schematic of PUL pin generate pulse
輸出比較產生脈沖的原理如下:輸出比較也為翻轉輸出,初始化設置通道的脈沖計數值為Toggle_Pluse(即500),在啟動定時器運行后,定時器從0 開始計數,待計數到Toggle_Pluse(即500)值時就會產生中斷,翻轉PUL通道引腳,并且執行DelayCal 函數。在該函數內,讀取當前定時器計數值保存到變量count(此時該值為500),并設置新的比較值為count+Toggle_Pluse(即500+500=1000),然后,定時器繼續計數,待計數值達到1000時,又產生中斷,翻轉PUL通道引腳,并把比較值設置為1500(1000+Toggle_Pluse),……,如此循環執行,最終的效果即在定時器通道引腳輸出持續的脈沖信號,因為一個完整的脈沖周期,PUL引腳通道電平需要翻轉2次,所以一個完整的脈沖信號對應定時器的計數值為2(Toggle_Pluse),這樣通過改變Toggle_Pluse值可以非常方便地改變脈沖信號頻率。
3.4.2 步進電機運動控制
系統中,步進電機轉1 周需要200個脈沖,步距角為1.8°。為提高步進電機的步距精度,將驅動器的細分數調為16 細分,即步進電機步距角變小,此時電機轉一圈的脈沖數Motor_SPR為3200。
通過速度的輸出值Vel_Exp_Val,計算出步進電機的頻率為

定時器TIM1的系統時鐘為72 MHz,在此進行4分頻處理,驅動電機TIM1的實際時鐘頻率T1_Freq為18 MHz,則每20 ms 采樣TIM 1的時鐘頻率為

那么TIM 1每個脈沖的計數值為

根據輸出脈沖產生原理,一個完整脈沖需要翻轉PUL腳電平2次,則PUL通道脈沖的設定值為

最終通過改變Toggle_Pluse的大小來調整脈沖頻率的大小,從而改變步進旋轉的轉速。
整個PID 速度閉環控制的調整流程如圖7所示,其中每20 ms對編碼器的值進行一次采樣。
試驗過程中,速度目標值為步進電機所達到的實際速度值,在此,設定電機運行的最高速度為1800 r/min,速度的初始比例系數kp=0.001,然后逐漸增大kp值,經過調節,取其中4 組有代表性的數據進行繪制(如圖8所示),其中kp分別為0.001,0.004,0.008,0.014。
由圖可見,其中3 組曲線(kp為0.004,0.008,0.014時)的越大,步進電機運行到目標速度的調整時間越短。由實際測量的數據發現,kp=0.004時電機可以較快且比較穩定地達到目標速度1800 r/min。又由圖可見,電機到達目標速度卻不能穩定,存在穩態誤差。

圖7 PID 調整流程Fig.7 PID adjustment flow chart

圖8 比例調節Fig.8 Proportional adjustment
為消除穩態誤差,需要引入積分調節,固定速度的比例參數kp=0.004,調節積分參數ki(起始參數為0.001),反復調整ki,當ki=0.005時繪制的PI 調節曲線如圖9所示。
圖9與圖8對比可見,積分參數ki的引入,使速度調節的穩態誤差基本消除,電機在此之后一直以1800 r/min的速度勻速運行,由此表明速度調節采用PI 調節即可使離心機快速、穩定地達到目標速度。

圖9 比例積分調節Fig.9 Proportional integral adjustment
所設計的醫用自動定位離心機控制系統,通過增量型編碼器和槽型光電開關采集信號,最終實現精確定位;通過增量式PID控制算法控制離心機旋轉,實現對離心機轉速的穩定控制;單片機輸出狀態信號并在顯示設備上顯示,多次模擬試驗成功后,在隨后的實際現場也得到了成功的驗證,達到了預期的效果,該自動定位離心機具有定位精度高、可免除人工參與、工作效率高等優點。