錢炳鋒 何奉泊 陳嘉裕 / 上海電機(jī)學(xué)院
兩輪自平衡小車設(shè)計與研究
錢炳鋒 何奉泊 陳嘉裕 / 上海電機(jī)學(xué)院
雙輪平衡車是一個高度不穩(wěn)定兩輪機(jī)器人,單獨(dú)使用陀螺儀或者加速度計都不能提供有效而可靠的信息來保證車體的平衡。介紹了以 STM32單片機(jī)作為核心控制器的雙輪平衡車控制系統(tǒng)設(shè)計方案,采用 MPU6050 六軸傳感器采集角度和角速度信號,應(yīng)用卡爾曼融合濾波方式和PID 控制算法,以實(shí)現(xiàn)雙輪平衡車的平衡和簡單的直立行走。
STM32;陀螺儀;加速度計;濾波;MPU6050
兩輪自平衡小車,其本質(zhì)上是一個底端可以自由移動的倒立擺系統(tǒng),屬于同軸平行布置的結(jié)構(gòu),該系統(tǒng)是非線性、強(qiáng)耦合、多變量和自然不穩(wěn)定的系統(tǒng),是檢驗(yàn)各種控制理論的理想模型。在控制過程中平衡小車能有效地反映諸如穩(wěn)定性、魯棒性、隨動性以及跟蹤性等許多控制中的關(guān)鍵問題。
本文通過對平衡車系統(tǒng)建立合理的數(shù)學(xué)模型,基于ARM內(nèi)核的32位微控制系統(tǒng),通過融合陀螺儀、加速度傳感器等信息,實(shí)現(xiàn)平衡車反饋系統(tǒng)的控制。
平衡車機(jī)械外型結(jié)構(gòu)一般由一個兩輪同軸,左右平行布置結(jié)構(gòu),兩輪分別由一個直流電機(jī)驅(qū)動,直流電機(jī)末端都帶有反饋用的編碼器,車身中心位于車輪軸上方,通過控制兩輪的轉(zhuǎn)速差實(shí)現(xiàn)直行和定半徑轉(zhuǎn)彎。
優(yōu)秀的機(jī)械結(jié)構(gòu)需要具備以下特點(diǎn):質(zhì)量集中、重心低、質(zhì)量輕。質(zhì)量集中為了減少轉(zhuǎn)動慣量,這里的控制電池是關(guān)鍵,即電池盡量離車軸近;重心低為了防止過彎側(cè)滑,抬輪等,能夠使過彎更平滑順暢;質(zhì)量輕是便于控制,減少整車慣性。不到萬不得已不要加配重。當(dāng)然,可以看到不少跑得好的車子都加了配重的,這樣是為了控制角度或速度,而不是想要車子變得更“穩(wěn)重”。抓住這九個字的,如何將傳感器、電池、主板組裝將會是一個決定小車速度的要點(diǎn)。
平衡車基本工作原理如圖1所示。兩個直流電動機(jī)安裝在車體平臺下面,通過直流電機(jī)分別驅(qū)動左右車輪運(yùn)動。采用MPU6050檢測車體平臺運(yùn)行姿態(tài)。
MPU6050 六軸傳感器芯片為全球首例整合性6軸運(yùn)動處理組件,相較于多組件方案,免除了組合陀螺儀與加速器時間軸之差的問題,減少了大量的封裝空間。其集成了3 軸MEMS陀螺儀和3軸MEMS加速度計,每個軸對應(yīng)有一個16位AD轉(zhuǎn)換器,測量范圍達(dá)±16 g,其高分辨率( 3.9 mg /LSB)能夠測量不到1.0°的傾斜角度變化。其中陀螺儀檢測平臺繞轉(zhuǎn)動輪軸轉(zhuǎn)動的角速率,加速度計得到的數(shù)據(jù)與陀螺儀檢測值,經(jīng)過卡爾曼濾波器,得到補(bǔ)償后的角度值,解決陀螺儀零票問題。采用可編程邏輯器件對電動機(jī)編碼器產(chǎn)生的脈沖量進(jìn)行計數(shù),從而檢測出車體平臺的位移和速度。跟據(jù)姿態(tài)監(jiān)測和位置傳感,通過一定的控制算法計算出控制電壓信號,再通過驅(qū)動電機(jī),調(diào)整車體平臺運(yùn)行姿態(tài),從而使車體平臺始終保持平衡狀態(tài)。
圖1 平衡車基本工作原理圖
在雙輪平衡車姿態(tài)檢測系統(tǒng)中,加速度計、陀螺儀主要用于檢測車體傾斜角和傾斜角的變化速度,其中加速度計屬于測量線性運(yùn)動的傳感器,其靜態(tài)響應(yīng)好,能夠準(zhǔn)確測量車體靜態(tài)時的角度,但對震動較敏感,受動態(tài)加速度的影響較大。在角度測量時,除了小車角度變化的信號外,還伴隨著因車體運(yùn)動而產(chǎn)生的噪聲,這個噪聲會隨著車體運(yùn)動速度的增加而增大。陀螺儀屬于測量旋轉(zhuǎn)運(yùn)動的傳感器,其輸出值圍繞某個軸向的旋轉(zhuǎn)角速率,通過角速率對時間積分即可得到角度值。 系統(tǒng)采用微控制器循環(huán)采樣獲取陀螺儀的角速率信息,即每隔一段很短的時間采樣一次,采用累加的方法實(shí)現(xiàn)積分的功能來計算角度值,所以存在累積漂移誤差,不適合長時間單獨(dú)工作。
為獲得準(zhǔn)確的車體傾角值,需對加速度計和陀螺儀的輸出值進(jìn)行融合,系統(tǒng)采用一種簡易的卡爾曼濾波方法進(jìn)行數(shù)據(jù)融合。卡爾曼濾波器是一種遞歸的估算,例如要估算K時刻車體的實(shí)際角度值,首先要根據(jù)K-1時刻的角度值預(yù)測得到K時刻的角度值,再根據(jù)K時刻的預(yù)測角度值和高斯噪聲的方差,進(jìn)行遞歸運(yùn)算,直到獲得最優(yōu)的車體角度值當(dāng)雙輪平衡車車體產(chǎn)生傾斜時,系統(tǒng)采用PID控制算法,通過整合車體角度、角速度、車體速度和位置等參數(shù)值,輸出PWM信號驅(qū)動電機(jī),產(chǎn)生相應(yīng)的力矩,從而保持車體的動態(tài)平衡,其結(jié)構(gòu)框圖如圖2 所示,圖中的 Kd,Kp,Ksp,Kis 是PID控制器的相關(guān)參數(shù)。
圖2 角度和角速度數(shù)據(jù)融合
軟件的主要功能包括有:
(1)車模運(yùn)行狀態(tài)檢測;
(2)電機(jī) PWM 輸出;
(3)車模運(yùn)行控制:直立控制、速度控制、方向控制;
(4)車模運(yùn)行流程控制:程序初始化、車模啟動與結(jié)束;
(5)系統(tǒng)界面:狀態(tài)顯示、上位機(jī)監(jiān)控、參數(shù)設(shè)定等。
主程序框架如圖3所示。
圖3 主程序框圖
雙輪平衡車控制系統(tǒng)以STM32單片機(jī)為控制芯片,采用卡爾曼融合濾波方式對MPU6050傳感器的角度和角速度信號進(jìn)行融合處理,從而得到實(shí)時、穩(wěn)定的角度和角速度信號,應(yīng)用實(shí)驗(yàn)測試法確定 PID算法中的各個參數(shù),從而實(shí)現(xiàn)對雙輪平衡車的控制。經(jīng)多次測試,能初步實(shí)現(xiàn)車體的平衡和簡單的直立行走。
[1]賴義漢,王 凱基于MPU6050的雙輪平衡車控制系統(tǒng)設(shè)計河南工程學(xué)院學(xué)報(自然科學(xué)版)第26卷第1期 2014年3月.
[2]王素青,熊維堂 基于STM32的兩輪自平衡小車系統(tǒng)設(shè)計實(shí)驗(yàn)室研究與探索第35卷第5期2016年5月.
本項目受上海電機(jī)學(xué)院車輛工程學(xué)科建設(shè)項目資助,項目編號:16TSXK01;上海市大學(xué)生創(chuàng)新計劃資助。