謝豐澤
摘 要:電動自平衡車大大地簡化了車體結(jié)構(gòu),能夠?qū)崿F(xiàn)原地旋轉(zhuǎn)和任意半徑轉(zhuǎn)向,移動軌跡更為靈活易變,減少占地面積,因此成為現(xiàn)代人們喜愛的代步和應(yīng)用工具之一。由于具有結(jié)構(gòu)簡單、運行穩(wěn)定、能量利用率高、環(huán)境適應(yīng)性強(qiáng)等優(yōu)點,無論是在軍事領(lǐng)域還是在民用領(lǐng)域都具有非常廣闊的應(yīng)用前景。該文結(jié)NXT2.0以及LEGO9797等軟硬件資源,組裝了平衡小車,并且對自行設(shè)計的PID算法進(jìn)行了實驗和驗證,取得了滿意的結(jié)果。有助于中學(xué)生理解智能小車原理,學(xué)會NXT語言,掌握和準(zhǔn)確運用PID算法;設(shè)計性和綜合性強(qiáng),包括硬件組裝,算法設(shè)計和程序編寫,物理知識的應(yīng)用;有助于激發(fā)中學(xué)生對機(jī)器人、以及科學(xué)實驗的興趣,提高動手能力,創(chuàng)新能力,培養(yǎng)創(chuàng)新意識。
關(guān)鍵詞:平衡車 算法 實驗
中圖分類號:TP24 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2015)10(a)-0251-04
Experiment of Self-Balancing Little Car Based on a Light Sensor
Xie Fengze
(Chengdu shuter middle school,Chengdu Sichuan,610000,China)
Abstract:Electric self-balancing vehicle car body structure is simplified greatly,can realize to spin around and arbitrary radius, mobile trajectory is more flexible and variable,reduce cover an area of an area,thus became one of the modern people love walking and application tools.Because of its simple structure, stable running, high energy utilization and environment adaptable advantage, whether in the military field and civilian field has very broad application prospect.Software and hardware resources,this paper NXT2.0 and LEGO9797 assemble the balance of the car, and designed the PID algorithm for the experiments and verification,and satisfactory results were achieved.Help students understand the principle of intelligent car,learn the NXT languages,grasp and accurate use of PID algorithm;Design and comprehensive strength, including the hardware group.
Key Words:Balanced;Algoritm;Experiment
電動自平衡車大大地簡化了車體結(jié)構(gòu),能夠?qū)崿F(xiàn)原地旋轉(zhuǎn)和任意半徑轉(zhuǎn)向,移動軌跡更為靈活易變,減少占地面積,因此成為現(xiàn)代人們喜愛的代步和應(yīng)用工具之一。由于具有結(jié)構(gòu)簡單、運行穩(wěn)定、能量利用率高、環(huán)境適應(yīng)性強(qiáng)等優(yōu)點,無論是在軍事領(lǐng)域還是在民用領(lǐng)域都具有非常廣闊的應(yīng)用前景。兩輪自平衡車是一個多變量、非線性、高階次、強(qiáng)耦合、本質(zhì)不穩(wěn)定的運動控制系統(tǒng),是檢驗各種控制理論和控制方法的典型裝置,因而,對其研究有很大的理論和實踐意義。市場上主要有獨輪和雙輪兩類平衡車。它們一般都根據(jù)被稱為“動態(tài)穩(wěn)定”(Dynamic Stabilization)的基本原理工作,同時利用車體內(nèi)的陀螺儀和加速度傳感器,檢測車體姿態(tài)的變化,并利用伺服控制系統(tǒng),較精確地驅(qū)動電機(jī)進(jìn)行相應(yīng)的調(diào)整,以保持車體平衡及準(zhǔn)確轉(zhuǎn)向。然而,在小車實際運行過程中,由于車本身運動所產(chǎn)生的加速度會產(chǎn)生很大的干擾信號疊加在其獲得的測量信號上,使得輸出信號無法準(zhǔn)確反映真正的傾角,導(dǎo)致加速度傳感器無法完全獲取直立控制所需要的姿態(tài)信息。而陀螺儀本身的噪聲所引發(fā)的傾角漂移也是個大問題:陀螺儀可以測量車傾斜的角速度,將角速度信號進(jìn)行積分處理便可以得到車的傾角。但是由于陀螺儀本身具有一定噪聲,如果一直積分的話,就會引起傾角漂移。因此,對于直立控制所需要的姿態(tài)信息,也不能單獨由陀螺儀來積分獲得。因此要采用陀螺儀,就必須采用加速度傳感器,二者缺一不可。這樣,第一,成本較高;第二,導(dǎo)致車體結(jié)構(gòu)復(fù)雜化;第三,控制算法復(fù)雜度高,需要對兩種傳感器數(shù)據(jù)進(jìn)行融合處理,以充分利用加速度傳感器獲得的靜態(tài)信息和陀螺儀獲得的動態(tài)信息;第四,調(diào)試和測試時間長,研發(fā)周期較大。因此,有必要探索其它的車身姿態(tài)控制方式。采用光傳感器進(jìn)行車體姿態(tài)控制即是其中之一:將光電傳感器獲得的車體姿態(tài)信息,控制驅(qū)動電機(jī)運轉(zhuǎn),準(zhǔn)確控制車體系統(tǒng)平衡及正常運動。光電傳感器結(jié)構(gòu)緊湊,非接觸控制,抗干擾性能高,速度測量能力強(qiáng),使用光線傳感器可以簡化小車拼裝和程序算法復(fù)雜度,成本相對較低;但受限條件較大,如受光強(qiáng)(亮度、對比度、流明)及溫度影響較大,且響應(yīng)速度不快,需要采取相應(yīng)的措施進(jìn)行處理。該文采用lego9797套件組裝了一個基于光線傳感器姿態(tài)感知法和PID控制策略的平衡車實驗?zāi)P?,對基于光線傳感器姿態(tài)感知法的平衡車的平衡原理、姿態(tài)感知和控制方法、平衡過程和平衡效果等進(jìn)行了分析和實驗驗證。
1 實驗內(nèi)容
1.1 實驗?zāi)康?/p>
采用lego自行組裝的平衡車,驗證采用光電傳感器和自行設(shè)計的PID控制算法對自平衡小車的控制性能。
1.2 軟、硬件資源
樂高機(jī)器人Nxt9797套件包括硬件和軟件兩部分。硬件部分共有431個組件,包括一個NXT可編程的微型電腦(CPU),一塊可充電的鋰電池,三個伺服電機(jī),二個觸動傳感器,一個光電傳感器,一個超聲波傳感器,一個聲音傳感器,三個燈以及足夠課堂教學(xué)所需的樂高積木。(見圖1)
套件中的軟件工具為Nxt2.0,編程語言為樂高公司為Mindstorms NXT機(jī)器人開發(fā)的一種圖形化編程語言:NXT-G,簡稱G語言。NXT-G語言由多個模塊組成,其最主要的編程方法是模塊化編程,每一個模塊代表著一個指令:或者接收測量信號,或者輸出處理數(shù)據(jù),或者送出控制指令等。模塊與模塊之間用線連接,構(gòu)成需要的算法。
1.3 方法
1.3.1 平衡車實驗?zāi)P痛罱?/p>
該文搭建的平衡車實驗?zāi)P腿鐖D2所示,主要采用了樂高機(jī)器人Nxt9797套件中的光線傳感器、NXT可編程的CPU、伺服電機(jī)模塊。其硬件原理框圖如圖5所示,其中光線傳感器模塊用于測量傳感器與地面之間的距離。NXT可編程CPU是平衡車的控制核心,接收來自傳感器的數(shù)據(jù),并對數(shù)據(jù)進(jìn)行分析和運算,產(chǎn)生伺服電機(jī)的控制信號。伺服電機(jī)模塊用于接收CPU的數(shù)據(jù),控制小車進(jìn)行平衡運動。開始鍵位于CPU模塊上,用于啟動小車的程序運行。
1.3.2 姿態(tài)感知和平衡原理
系統(tǒng)控制框圖如圖3所示。當(dāng)車體略有傾斜時,重力作用在小車上后會有一個重力加速度,如果不做任何處理,加速度不變,速度會越來越大。此時光感器和地面的距離不同,反射回來的光強(qiáng)也不同。此時的光強(qiáng)會和初始光強(qiáng)有一個誤差,經(jīng)過CPU處理之后把相應(yīng)的指令送入驅(qū)動電機(jī),控制小車進(jìn)行運動,運動模式如圖4所示。
1.3.3 控制算法和流程
姿態(tài)調(diào)整過程是通過如圖5所示的PID控制器實現(xiàn)的。PID控制器根據(jù)系統(tǒng)的誤差,利用比例、積分、微分計算出控制量進(jìn)行控制的使用中只需設(shè)定3個參數(shù)(Kp,Ki和Kd)即可;它們共同決定小車在原地晃動的程度即振幅和小車晃動的頻率,即抖動強(qiáng)度。
在小車運行控制過程中,傳統(tǒng)的控制算法基本是在小車到達(dá)平衡后,速度不變就立即向相反位置運動,因此,無法達(dá)到快速平衡,而PID算法則是在到達(dá)平衡之前,不停地檢測小車與平衡狀態(tài)時距離的差,從而調(diào)整速度,也就是離平衡點越近,速度越小,使其能在到達(dá)平衡狀態(tài)后速度接近為零。這種算法使平衡可以快速達(dá)到,也就使得這種車能夠投入實用。其控制流程如圖6所示。
1.4 編程
初始時,把小車固定在平衡位置,在電腦中控制使其打開小車上的光感器,光感器發(fā)出紅光,并測出反射回來的光強(qiáng),以此光強(qiáng)作為平衡時的光強(qiáng)數(shù)值。取消固定后,小車會失去平衡,此時光感器和地面的距離不同,反射回來的光強(qiáng)也不同。此時的光強(qiáng)會和初始光強(qiáng)有一個誤差,把這個誤差帶入PID算法進(jìn)行計算,輸出矯正值控制驅(qū)動電機(jī)運行。(見圖7)
剛開始為開始符號,按下小車上的橙色按鈕開始執(zhí)行程序。這一部分是對三個參數(shù)的輸入部分,開始的時候我們先全部調(diào)為零,之后調(diào)節(jié)P,待系統(tǒng)最穩(wěn)定的時候調(diào)節(jié)I,以同樣的流程調(diào)節(jié)D。(見圖8)
聲音的第一個部分為預(yù)備音,會重復(fù)3遍,之后為開始音,提示下一步即將進(jìn)行自平衡,讓使用者把支撐物(該實驗中是直接用手)移開。影響效果儲存在CPU中,執(zhí)行時直接調(diào)出。第一個光線的輸入為初始光強(qiáng)即S0,在開啟程序之前我們需要讓小車先保持平衡狀態(tài),并輸入此時的光強(qiáng),讓S0和初始光強(qiáng)處于一致。在此之后的光強(qiáng)為下個時刻的光強(qiáng)記為Sr。(見圖9,圖10)
PID在程序中的寫法:設(shè)定初始光線傳感器和地面的距離為S0(平衡狀態(tài)),之后的距離為Sr,該實驗中把S0記為中間值ZJ,接下來為誤差算法PID的比例,積分和微分的算法。
(1)比例部分:(ZJ-Sr)×KP,一開始實驗的積分為零,所以帶入一個單元積分JF的初始值為零。(2)積分部分:((ZJ-Sr)+JF)×KI,微分的時候則需要把每次的誤差都記下來,然后進(jìn)行不停地相減,此時本實驗的上一個e必須有一個空出的單元進(jìn)行存放,記為上一個e為LE。(3)微分部分:((ZJ-Sr)-LE)×KD。其中KP,KI,KD為PID的三個參數(shù)。
圖11中的第一個模塊為除法模塊,得到輸出值后使之成比例縮小,避免計算結(jié)果過大,導(dǎo)致電機(jī)飛速運動;最后的值如果超出-1000或1000(NXT所能輸入的最大值),就表明車已傾倒,調(diào)解失敗,此時會令運行中的輪子停止運行,避免傾倒后輪子繼續(xù)運行所導(dǎo)致的儀器損壞。下一個模塊為比較模塊,判斷小車是前傾還是后傾,隨后進(jìn)行調(diào)節(jié)。之后的模塊為絕對值模塊,計算誤差值的大小,從而調(diào)節(jié)馬達(dá)速度,誤差越大,速度越大,當(dāng)然超過了一定數(shù)值(-1000~1000)就會停止。后面兩個模塊為運行模塊運動模塊,即輸入后操控馬達(dá)進(jìn)行運行。
數(shù)值設(shè)定:動機(jī)轉(zhuǎn)數(shù):50;范圍:-1000~1000。
2 調(diào)試及結(jié)果
自平衡車能在恒定的光強(qiáng)與介質(zhì)上進(jìn)行原地的前后動態(tài)平衡,持續(xù)時間可達(dá)半小時。然而實驗卻存在以下問題:第一,光感傳感器在不同光強(qiáng)下,三個參數(shù)不同;因此,必須要使平衡車自行感到光強(qiáng)的變化,從而自動改變參數(shù)。對于這個問題,可以再安一個光感傳感器,使其能和地面的距離保持不變,這時所測量到的光感值和另外一個一一對應(yīng),就可以實現(xiàn)在任何光強(qiáng)上的平衡。第二,該自平衡車只能在原地進(jìn)行平衡,而沒有設(shè)計前進(jìn)、后退的控制方式;因為沒有使用陀螺儀。對于這個問題,可以默認(rèn)為是體感操作,即身體向前,平衡車會往前傾,這時光傳感器就會和初始數(shù)據(jù)產(chǎn)生一個偏差,從而向前進(jìn)。
3 結(jié)語
通過實驗證明,利用光傳感器以及自行設(shè)計的PID控制算法進(jìn)行的平衡車的控制實驗,獲得了較為滿意的效果:結(jié)合nx9797等lego9797軟件硬件資源,大大縮短組裝和程序設(shè)計周期、減少成本、縮小平衡車體積、降低結(jié)構(gòu)復(fù)雜度。它具有程序簡單,操作簡便等優(yōu)點,但存在著性能上的不足,希望在今后的試驗中能改善。通過該實驗,有助于中學(xué)生理解智能小車原理,學(xué)會NXT語言,掌握和準(zhǔn)確運用PID算法;設(shè)計性和綜合性強(qiáng),包括硬件組裝,算法設(shè)計和程序編寫,物理知識的應(yīng)用;有助于激發(fā)中學(xué)生對機(jī)器人、以及科學(xué)實驗的興趣,提高動手能力,創(chuàng)新能力,培養(yǎng)創(chuàng)新意識。
參考文獻(xiàn)
[1] 童詩白,華程英.模擬電子技術(shù)基礎(chǔ)[M].4版.北京:高等教育出版社,2009.
[2] 閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].5版.北京:高等教育出版社,2009.
[3] 黃智偉,王彥,陳文光,等.全國大學(xué)生電子設(shè)計競賽訓(xùn)練教程[M].北京:電子工業(yè)出版社,2013.
[4] 段其昌,袁洪躍,金旭東.兩輪自平衡車無速度傳感器平衡控制仿真研究[J].控制工程,2013,20(4):618-622.