冀風州,唐圓檸,王茂鑫,張婷,李旭峰
(1.上海工程技術(shù)大學(xué)工程實訓(xùn)中心,上海201620;2.山西省人民醫(yī)院計算機室,太原030012)
兩輪平衡智能車作為一種精巧的輪式機器人,其電控系統(tǒng)是集姿態(tài)檢測、分析、電機控制的復(fù)雜系統(tǒng),因此需要較高的反應(yīng)速度和較快的數(shù)據(jù)處理能力,是自動控制技術(shù)發(fā)展的一個重要產(chǎn)物。由于它結(jié)構(gòu)簡單、小巧輕便以及可以適應(yīng)各種復(fù)雜地形的獨特優(yōu)勢,使得其被廣泛應(yīng)用于生活。平衡車的控制較為復(fù)雜,具有強耦合性、非線性、不穩(wěn)定性,成為了研究的一個熱點。
本文采用了對稱式的方法建立平衡車的機械框架,通過動態(tài)重心分析,將平衡車的重心集中于車軸上方。以8位單片機STC8G為主控制器,搭建平衡智能車的主控電路,顯示電路,驅(qū)動電路等硬件電路平臺。由于單片機資源限制,因此對傳統(tǒng)串級PID進行優(yōu)化,得出高效簡單控制策略,經(jīng)過驗證STC8G2K64S4能夠滿足自平衡,勻速運動以及尋跡轉(zhuǎn)向的控制功能。
平衡智能車整個系統(tǒng)分為為機械結(jié)構(gòu)、電路硬件、程序算法三部分。三者的相互配合才能使得系統(tǒng)高效的運行,控制系統(tǒng)組成示意圖如圖1所示。工作過程為:采用8位單片機STC8G為主控制器,通過陀螺儀ICM20602傳感器自身姿態(tài)進行數(shù)據(jù)獲取、通過電感傳感器獲得地面循跡路線的20KHz信號。傳感器數(shù)據(jù)傳至單片機,單片機通過濾波和分析、計算后實時驅(qū)動電機的轉(zhuǎn)動,達到速度、平衡以及轉(zhuǎn)向的運行控制。

圖1 控制系統(tǒng)組成
經(jīng)典控制算法最常用的是PID控制算法,具有如下優(yōu)點:①結(jié)構(gòu)簡單,方便,很容易應(yīng)用于實踐,尤其對于單變量輸入的線性系統(tǒng)有著極其顯著的控制效果,因此在工業(yè)領(lǐng)域應(yīng)用極其廣泛。②PID算法有著悠久的歷史,經(jīng)歷了前輩無數(shù)的驗證,使用方法成熟。③非常適合于解決一些結(jié)構(gòu)復(fù)雜,數(shù)學(xué)模型不易推導(dǎo)的系統(tǒng)參數(shù)整定問題。
雖然PID有如此多的優(yōu)點,但是鑒于平衡車是一種具有強耦合性、非線性、不穩(wěn)定性的系統(tǒng),直接生搬硬套PID算法對小車的姿態(tài)、速度、轉(zhuǎn)向進行控制,效果往往不盡如人意。因此,如何優(yōu)化PID控制算法成為了一個重要的問題。但是,如果添加其他的控制算法又會使得控制方法變得極其復(fù)雜,難以理解,采用普通8位單片機不能勝任。因此,本文嘗試在傳統(tǒng)PID的基礎(chǔ)上優(yōu)化和組合算法,找到一種高效,簡單的控制算法。
單級PID算法原理如圖2所示,單級PID控制簡單易于實現(xiàn),無需精準模型就能實現(xiàn)較好的控制,因此廣泛應(yīng)用于各種控制中。PID是一種線性控制,偏差e(t)是給定值與實際值的差值,對其進行比例、積分、微分三部分運算,三部分的協(xié)調(diào)配合來達到預(yù)期的控制量輸出,對于不同的被控系統(tǒng)只需要調(diào)節(jié)不同的參數(shù)就可以了。

圖2 單級PID算法原理
PID的控制公式為:

其中kp是比例系數(shù)、Ti是積分時間常數(shù)、Td是微分時間常數(shù)。
智能平衡車的輸出控制左右兩個電機的轉(zhuǎn)動速度,整個單片機控制程序任務(wù)主要分為如下三方面。
(1)控制平衡車直立:通過陀螺儀ICM20602的姿態(tài)數(shù)據(jù)控制電機的正反轉(zhuǎn)達到是平衡車直立的效果。
(2)控制平衡車速度:通過調(diào)節(jié)車身的角度來控制平衡車的速度,但是究其本質(zhì)仍舊落足于控制電機的轉(zhuǎn)動來控制速度。
(3)控制平衡車方向:通過前瞻電感傳感器的軌跡偏差來控制兩個電機的轉(zhuǎn)動差速實現(xiàn)平衡車的轉(zhuǎn)向。
既然車模的控制已經(jīng)可以分解為三個任務(wù),那么理想狀態(tài)下只需要將每一個任務(wù)分別進行完成,然后將控制信號疊加到電機上即可達到預(yù)期的控制效果。
(1)平衡控制。平衡車的平衡控制原理類似于倒立擺模型,通過負反饋機制達到直立效果。結(jié)合到PID控制中也很容易。由于有外界的干擾,會產(chǎn)生干擾誤差。如果采用積分環(huán)節(jié)則會積累誤差,不利于控制。而且車體直立最重要的是響應(yīng)速度,因此使用PD控制,計算公式如下。

平衡控制關(guān)鍵程序如下:

通過計算車體的實際角度與期望角度的差值,進行PD計算轉(zhuǎn)化為PWM值輸出到電機上進行平衡控制。
(2)運行控制。運行控制包含速度與轉(zhuǎn)向控制,速度控制通過采集兩輪編碼器測速PI控制實現(xiàn),轉(zhuǎn)向控制則可以通過陀螺儀z軸數(shù)據(jù)進行PD控制。
速度控制關(guān)鍵程序?qū)崿F(xiàn)如下:

轉(zhuǎn)向控制關(guān)鍵程序?qū)崿F(xiàn)如下:

將三個任務(wù)的控制信號疊加到電機上控制車子運行。但是,在實際的運行中明顯的察覺到平衡車并不能很好地適應(yīng)顛簸路面或者是陡坡等路段。這與控制策略的局限性有關(guān),因為平衡車系統(tǒng)的耦合性很強且為非線性,一旦干擾較大,就會出現(xiàn)三個任務(wù)的相互掣肘,不僅不能夠保持穩(wěn)定還會加劇破壞穩(wěn)定。經(jīng)過尋找發(fā)現(xiàn)問題主要出現(xiàn)在速度控制和平衡控制兩個環(huán)節(jié)上。一旦路面出現(xiàn)較大的抖動車子就要進行較大幅度的調(diào)整,這時候由于兩個任務(wù)的耦合很強就會導(dǎo)致沖突,最后不僅不能調(diào)節(jié)至穩(wěn)定還會使得平衡車完全失控。于是,經(jīng)過大量試驗驗證采用串級PID來可以解決這個問題。
(3)串級PID優(yōu)化設(shè)計。由于直接將速度與直立控制信號疊加會造成沖突,而平衡最重要的就是直立。那么將速度控制串入直立控制中去,以直立外環(huán)為主導(dǎo),保證外環(huán)穩(wěn)定為主要目的,兩環(huán)控制協(xié)調(diào)一致,互相配合,不僅可以解決之前的兩環(huán)沖突問題。而且對于二次干擾,由內(nèi)環(huán)先進行“粗調(diào)”,外環(huán)再進行“細調(diào)”,控制效果必然優(yōu)于之前的單環(huán)疊加控制。平衡智能車串級PID算法原理框圖如圖3所示。

圖3 平衡智能車串級PID算法原理
串級PID算法關(guān)鍵程序?qū)崿F(xiàn)如下:

實踐證明,相同干擾下串級控制系統(tǒng)的控制質(zhì)量是單級控制系統(tǒng)無法比擬的。由于內(nèi)環(huán)的存在改變了原來的特性,使得調(diào)節(jié)時間變短,這就更加符合平衡車對于直立控制快速響應(yīng)的要求。串級PID起到了超前控制的作用,有效抑制了內(nèi)環(huán)的干擾,這就使得兩個控制不再會出現(xiàn)之前的沖突的情況。由于串級控制系統(tǒng)的外環(huán)是一個隨動控制系統(tǒng),它的設(shè)定值是在隨著內(nèi)環(huán)的輸出而變化的。因此可以保證在操作條件和符合發(fā)生變化的情況下,控制系統(tǒng)仍然有較好的控制效果。
本文以平衡車為研究對象,通過在實際情況下對比不同PID控制的效果,最終找到了一種高效簡單的控制策略,完成了能夠適應(yīng)不同路面狀況的快速移動的平衡智能車。該平衡車能夠很好地完成預(yù)定的路線任務(wù),為以后的相關(guān)研究打下了良好的技術(shù)基礎(chǔ)。