秦迎春,柳貴東,朱嘉駿,郭喜龍,劉漢斌
(廣東白云學(xué)院電氣與信息工程學(xué)院,廣州 510450)
二輪平衡車又稱為體感車、動(dòng)態(tài)車。它是一款靠傳感器和電機(jī)操控來(lái)維持平衡車自身平衡的新型交通工具。二輪平衡車的設(shè)計(jì)原型來(lái)源于自動(dòng)平衡輪椅IBOT。隨著我國(guó)的改革開(kāi)放,科技水平日新月異,汽車這種交通工具早已成為人們?nèi)粘I钪械谋貍淦?。二輪小車由于結(jié)構(gòu)比較簡(jiǎn)單、出行瀟灑自如,可以急轉(zhuǎn)彎、在凹凸不平的路面上行走,在狹窄空間靈活行走,受到很多青年消費(fèi)者的追捧。該設(shè)計(jì)利用傾角傳感器和陀螺儀構(gòu)成姿態(tài)傳感器來(lái)監(jiān)測(cè)車身所處的俯仰狀態(tài)和狀態(tài)變化率,通過(guò)中央處理器計(jì)算出適當(dāng)數(shù)據(jù)并發(fā)送指令后,驅(qū)動(dòng)電動(dòng)機(jī)產(chǎn)生前進(jìn)或后退的加速度來(lái)達(dá)到車體前后平衡的效果,本設(shè)計(jì)采用陀螺儀、加速度傳感器和STM32F103RCT6芯片、HC-06藍(lán)牙芯片等模塊組合來(lái)實(shí)現(xiàn)。
如果從系統(tǒng)結(jié)構(gòu)來(lái)進(jìn)行區(qū)分的話,擺動(dòng)可以分為順擺和倒立擺。圖1就是典型順擺模型。
圖1 順擺
順擺是重力作用下重復(fù)擺動(dòng)的一種運(yùn)動(dòng)。一般來(lái)說(shuō),將不能拉長(zhǎng)的小繩或者是小竹竿的一端懸掛在定點(diǎn)上,而另外一端連接一個(gè)小球,這樣就可以構(gòu)成一個(gè)經(jīng)典的順擺。
STM32平衡車所用到倒立擺,顧名思義就是把順擺翻轉(zhuǎn),也就是轉(zhuǎn)軸的上端才是它的中心所在。如果沒(méi)有外力的施加,要保持住非常穩(wěn)定的平衡是極其困難的。倒立擺系統(tǒng)在生活中可以說(shuō)是隨處可見(jiàn),如馬戲團(tuán)的頂桿雜技表演就是用到倒擺立,如圖2所示。
圖2 倒立擺雜技表演
通過(guò)生活中的一些倒立擺例子,我們可以得知平衡車的平衡需要通過(guò)負(fù)反饋系統(tǒng)來(lái)實(shí)現(xiàn)。平衡車有兩個(gè)輪子,靜止的時(shí)候是無(wú)法平衡的,所以要讓平衡車發(fā)生傾斜,車輪才能及時(shí)地轉(zhuǎn)動(dòng)且位移方向與傾斜方向一致,這樣抵消傾斜,車身就能夠保持平衡了(如圖3)。
圖3 平衡車平衡過(guò)程
對(duì)平衡車進(jìn)行運(yùn)動(dòng)分解,如果要想達(dá)到平衡的目的,平衡車所受的重力和平衡車懸線上所輸出的馬力足夠才能使平衡車保持平衡,由公式=-sin≈-可知,在平衡狀態(tài)下,平衡車不但會(huì)受到重力還會(huì)受到空氣阻力,但是平衡車的恢復(fù)力和所受力的位移方向完全相同,正因如此,平衡車最終可以回到垂直位置。
為了更加直觀地分析平衡車的受力情況,我們可以將平衡車的平衡點(diǎn)看作是重心并依據(jù)這個(gè)重心來(lái)畫(huà)出力的分解,這樣就建造出一個(gè)比較直觀的平衡車受力模型。該受力分析如圖4所示。
圖4 平衡車受力分析
接下來(lái)就是根據(jù)平衡車的受力分析來(lái)進(jìn)一步計(jì)算,假設(shè)小車的重心長(zhǎng)度為,平衡車偏移的角度為,自身質(zhì)量為,平衡車自身受到的外部干擾為(),STM32平衡車的加速度()。我們可以得出以下公式:
一般來(lái)說(shuō),小車保持平衡一段時(shí)間后,它受到的影響不會(huì)太大,即當(dāng)?shù)陀?0°的時(shí)候,會(huì)有以下等值sin≈,cos≈1,式(1)可變?yōu)椋?/p>
此時(shí)平衡車已經(jīng)達(dá)到了平衡,即()=0,由此可得:
圖5 平衡車系統(tǒng)PD反饋微分控制環(huán)節(jié)
當(dāng)我們把PD(比例微分)反饋調(diào)節(jié)加入到平衡車系統(tǒng)后,可得:
這時(shí)平衡車的兩個(gè)極點(diǎn)都為:
由上一節(jié),我們可以得知STM32平衡車要實(shí)現(xiàn)平衡和行走功能就必須要驅(qū)動(dòng)好兩個(gè)輪子。
本設(shè)計(jì)思路是通過(guò)角加速度儀和陀螺儀獲取車身的傾斜程度和角加速度,并且把信息立即傳送到STM32主控芯片,通過(guò)濾波和PID演算得出數(shù)據(jù)并傳送給電機(jī)驅(qū)動(dòng),從而操控輪子進(jìn)行自平衡操作,達(dá)到平衡后再加入其它功能模塊。
STM32平衡車的操控由3個(gè)方面組成,如圖6所示。
圖6 STM32平衡車操控組成圖
(1)操控STM32平衡車達(dá)到平衡:操控兩個(gè)42步進(jìn)電機(jī)的電壓可以使STM32平衡車達(dá)到平衡狀態(tài),因?yàn)楫?dāng)我們操控42步進(jìn)電機(jī)的電壓時(shí),可以通過(guò)這兩個(gè)電機(jī)來(lái)改變STM32平衡車的運(yùn)動(dòng)方向和加速度,此時(shí)STM32平衡車就會(huì)產(chǎn)生一個(gè)慣性力并且使車體達(dá)到平衡狀態(tài)。
由此可見(jiàn),STM32平衡車要達(dá)到平衡就必須操控電機(jī)產(chǎn)生足夠的驅(qū)動(dòng)力,但這只是在理想狀態(tài)下,實(shí)際情況下還要考慮外界環(huán)境的干擾,再加上還有機(jī)器誤差存在,如果在這種狀態(tài)下達(dá)到平衡,就必須要加上PD反饋微分控制,同時(shí)必須要實(shí)時(shí)監(jiān)控平衡車自身的傾斜角度和角加速度,得到這些數(shù)據(jù)立刻進(jìn)行算法演算,并輸出指令給電機(jī)進(jìn)行調(diào)節(jié)。
(2)操控STM32平衡車運(yùn)行速度:通過(guò)MPU6050三軸加速度陀螺儀來(lái)實(shí)時(shí)監(jiān)控車身的傾斜程度,并把數(shù)據(jù)傳輸給SMT32F103RCT6芯片進(jìn)行分析,再通過(guò)PID算法輸出數(shù)據(jù)給電機(jī)驅(qū)動(dòng)芯片來(lái)驅(qū)動(dòng)42步進(jìn)電機(jī)加速或者減速。
(3)操控STM32平衡車運(yùn)行方向:通過(guò)SMT32F103RCT6芯片進(jìn)行數(shù)據(jù)分析,輸出指令給A4988N電機(jī)驅(qū)動(dòng)芯片來(lái)操控兩個(gè)42步進(jìn)電機(jī)的差速轉(zhuǎn)動(dòng)。如果想左轉(zhuǎn),右邊的步進(jìn)電機(jī)前進(jìn),或者左邊的步進(jìn)電機(jī)后退;如果想右轉(zhuǎn),左邊的步進(jìn)電機(jī)前進(jìn),或者右邊的步進(jìn)電機(jī)后退。
根據(jù)上面STM32平衡車的操控分析,可以確定基于STM32平衡車的總結(jié)構(gòu),如圖7所示。
圖7 STM32平衡車總結(jié)構(gòu)
本研究設(shè)計(jì)的最核心部分是PID控制,它是一種經(jīng)典的負(fù)反饋控制,同時(shí)PID也是運(yùn)動(dòng)控制的核心。從倒立擺模型得出,如果要讓STM32平衡車達(dá)到平衡,就一定要把反饋控制加入到里面。PID控制算法可通過(guò)對(duì)偏差信號(hào)進(jìn)行比例、積分、微分,來(lái)逐步減少偏差信號(hào),最終達(dá)到我們需要的數(shù)值。本次設(shè)計(jì)的角度目標(biāo)值需要達(dá)到垂直位置,按理來(lái)說(shuō),速度也就是設(shè)定的值,可以通過(guò)PID調(diào)整42位步進(jìn)電機(jī)的正反轉(zhuǎn)和轉(zhuǎn)速動(dòng)態(tài),從而把平衡車的姿態(tài)調(diào)整到目標(biāo)位置。
本次設(shè)計(jì)中分別有模擬PID控制和數(shù)字PID圖,其中模擬PID控制如圖8所示。
圖8 模擬PID控制
圖8中()是已經(jīng)給出的常量,()是實(shí)際的輸出數(shù)值,()是兩者偏差,所以()=()-(),由此得PID控制方程如下:
式(5)中,k為比例系數(shù),k為積分系數(shù),k為微分系數(shù)。從式(5)我們能夠推理得出PID控制就是按偏差控制,也就是說(shuō)()越大控制的強(qiáng)度就越強(qiáng)。
PID的控制特點(diǎn):一般來(lái)說(shuō),在調(diào)節(jié)系統(tǒng)各比例動(dòng)態(tài)性能中,數(shù)值會(huì)直接影響響應(yīng)的速度,換句話說(shuō),數(shù)值和響應(yīng)速度成正比。但是如果數(shù)值過(guò)于龐大,就會(huì)引起系統(tǒng)的不穩(wěn)定,所以一般對(duì)穩(wěn)定條件下的k應(yīng)該盡量加大參數(shù)。當(dāng)偏差比例環(huán)節(jié)出現(xiàn)在系統(tǒng)中,系統(tǒng)就會(huì)自動(dòng)依據(jù)k的大小來(lái)調(diào)節(jié)系統(tǒng)減少偏差,即系統(tǒng)的粗調(diào)部分是比例。
在公式(5)中,偏差的累積求和輸出就相當(dāng)于該公式的積分部分,比例與()成正比關(guān)系,當(dāng)()較小時(shí),該輸出也會(huì)相應(yīng)地減少,這個(gè)時(shí)候就必須要靠積分的控制來(lái)調(diào)節(jié)了。
一般來(lái)說(shuō),小偏差的不斷變化會(huì)隨著積分輸出而變化,直到()=0才停止??偟膩?lái)說(shuō),降低系統(tǒng)靜態(tài)的誤差和系統(tǒng)的穩(wěn)態(tài)性調(diào)節(jié)主要是依靠積分,但是還有一個(gè)問(wèn)題,就是積分的過(guò)程是不斷累積,而且這個(gè)累積速度是非常慢從而使系統(tǒng)的快速性減緩和超調(diào)量增大。
該微分的應(yīng)用,主要對(duì)系統(tǒng)動(dòng)態(tài)特性有改善,依據(jù)偏差變化和微分之間的關(guān)系,前者越大后者越會(huì)變大,所以只要通過(guò)微分就可以讓系統(tǒng)動(dòng)態(tài)特性得到大幅度的提高。另一個(gè)好處,就是把超調(diào)和震蕩減弱,但是對(duì)噪聲十分敏感,所以一定要事先做好濾波。
根據(jù)本次設(shè)計(jì)的基本思路,把基于STM32平衡車拆分為三個(gè)方面的控制,它們分別為速度控制、方向控制、平衡控制,并且結(jié)合PID比例、積分、微分的特點(diǎn)來(lái)設(shè)計(jì),PID控制器框圖見(jiàn)圖9。
圖9 PID控制器
在基于STM32平衡車的控制平衡方面,根據(jù)平衡車受力分析,要使STM32平衡車達(dá)到平衡,必須要將積分、比例、反饋這三個(gè)環(huán)節(jié)加入到傳遞函數(shù)中,這樣平衡車才能保持平衡。
如果要采用平衡PID,由上面分析的k必須大于,k大于0是必要條件。這樣系統(tǒng)就會(huì)快速變換STM32平衡車的傾角,從而令小車本身不會(huì)倒下并且保持平衡。但是這個(gè)變換速度比較快,很可能會(huì)出現(xiàn)過(guò)小或者過(guò)大,而且電機(jī)在轉(zhuǎn)動(dòng)時(shí)有慣性,會(huì)導(dǎo)致基于STM32的平衡車發(fā)生振動(dòng),這個(gè)時(shí)候采用微分可以依據(jù)變換的速度自行調(diào)節(jié)輸出PID,從而調(diào)節(jié)幅度,達(dá)到細(xì)調(diào)的功效,細(xì)調(diào)和粗調(diào)相結(jié)合,這樣就能夠使平衡車保持平衡穩(wěn)定。
在STM32平衡車的速度方面,要求平衡車能夠依據(jù)設(shè)定的速度勻速前進(jìn)。保持這樣勻速地前進(jìn)有一個(gè)好處,那就是平衡車自身的偏差會(huì)小很多,控制系統(tǒng)中的靜態(tài)誤差也會(huì)小很多??偟膩?lái)說(shuō),偏差相對(duì)大的時(shí)候可以選用比例調(diào)節(jié),而偏差相對(duì)小的時(shí)候可以選用積分來(lái)調(diào)節(jié)。
在STM32平衡車的方向方面,小車方向的變更主要是依靠?jī)蓚€(gè)輪子的差速,本次設(shè)計(jì)選用了藍(lán)牙控制,用戶可以依據(jù)自己的需求來(lái)用藍(lán)牙遙控器控制STM32平衡車的前進(jìn)方向。當(dāng)平衡車接收到藍(lán)牙信號(hào)的時(shí)候,再調(diào)用PWM來(lái)輸出差壓從而達(dá)到方向控制的目的。
平衡車的軟件調(diào)控是先利用MPU6050三軸加速度陀螺儀來(lái)收集STM32平衡車當(dāng)時(shí)的傾斜角度和角加速度,然后把數(shù)據(jù)傳輸給STM32主控芯片,通過(guò)卡爾曼濾波和PID算法演算后,得到兩個(gè)PWM脈寬然后傳輸給兩個(gè)電機(jī),調(diào)控平衡車的速度,使平衡車的車身保持平衡。整個(gè)過(guò)程就是不斷地收集角加速度和傾斜角度并通過(guò)算法演算輸出命令給電機(jī),然后使平衡小車達(dá)到平衡。在這個(gè)基礎(chǔ)上,再輸送PWM的值給電機(jī),從而實(shí)現(xiàn)前行、后退、轉(zhuǎn)左、轉(zhuǎn)右等功能。
綜上所述,根據(jù)二輪平衡車在日常生活中的運(yùn)動(dòng)特點(diǎn)設(shè)置了平衡車的平衡力學(xué)模型。把平衡點(diǎn)的線性化處理應(yīng)用在二輪平衡車的非線性系統(tǒng)中,理論上分析傳遞函數(shù)的零極點(diǎn)分布和建立在小車上的控制傳遞函數(shù),從而推算得出達(dá)到平衡的算法,并對(duì)此提出控制方案,從而設(shè)計(jì)出一款高性能的多功能平衡車。