王恒++沈夢(mèng)嬌
摘 要:兩輪自平衡小車(chē)具有重要的應(yīng)用與理論研究意義。文中設(shè)計(jì)了兩輪自平衡小車(chē)的實(shí)驗(yàn)平臺(tái),系統(tǒng)分為5個(gè)模塊:電源管理模塊,微處理器模塊,電機(jī)驅(qū)動(dòng)模塊,姿態(tài)傳感器數(shù)據(jù)采集模塊,以及藍(lán)牙無(wú)線通訊模塊。本設(shè)計(jì)從硬件電路,軟件設(shè)計(jì)對(duì)系統(tǒng)的5個(gè)模塊分別進(jìn)行了詳細(xì)設(shè)計(jì)。最后,制作了兩輪自平衡小車(chē)的原型,并給予了初步運(yùn)動(dòng)控制驗(yàn)證。該實(shí)驗(yàn)平臺(tái)能夠初步實(shí)現(xiàn)自平衡功能,后續(xù)的研究將著重于對(duì)控制算法在該平臺(tái)的驗(yàn)證研究。
關(guān)鍵詞:兩輪自平衡小車(chē);數(shù)據(jù)融合;卡爾曼濾波;STM32
中圖分類(lèi)號(hào):TP242.3 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2015)11-00-04
0 引 言
兩輪自平衡小車(chē)(two-wheeled self-balanced vehicle)或兩輪自平衡機(jī)器人(two-wheeled self-balanced robot)是一種類(lèi)似人類(lèi)直立姿態(tài)的平衡控制系統(tǒng),其核心問(wèn)題是如何保證在各工況下運(yùn)動(dòng)姿態(tài)的平衡控制及導(dǎo)航[1]。兩輪自平衡小車(chē)或機(jī)器人系統(tǒng)是一個(gè)高階次、不穩(wěn)定、多變量、非線性、強(qiáng)耦合的系統(tǒng)[2]。其系統(tǒng)設(shè)計(jì)不僅要考慮機(jī)械結(jié)構(gòu)的運(yùn)動(dòng)學(xué)設(shè)計(jì)[3] ,也要考慮動(dòng)力學(xué)設(shè)計(jì)[2]、能量設(shè)計(jì)[4]、控制系統(tǒng)的參數(shù)辨識(shí)、控制系統(tǒng)的濾波處理[5]等,然后建立相應(yīng)的控制策略,設(shè)計(jì)確實(shí)可行的控制器[6],實(shí)現(xiàn)自平衡小車(chē)在各工況下的運(yùn)動(dòng)平衡控制。
兩輪自平衡小車(chē)在實(shí)踐應(yīng)用上,可用于軍事領(lǐng)域中的偵查、排雷、單兵載人等,或作為日常生活中的短途交通工具[7]。然而,目前兩輪自平衡小車(chē)更多的是其理論研究的意義,它是檢驗(yàn)各種控制理論控制性能的一個(gè)較好的實(shí)驗(yàn)平臺(tái)[8]。目前國(guó)內(nèi)不少院校都對(duì)兩輪自平衡小車(chē)進(jìn)行了研究,主要為哈爾濱工業(yè)大學(xué)趙杰團(tuán)隊(duì)[8],西安電子科技大學(xué)屈勝利團(tuán)隊(duì)[9],北京工業(yè)大學(xué)阮曉剛團(tuán)隊(duì)[1, 2]等。國(guó)外也對(duì)兩輪自平衡小車(chē)有研究,如Sayidmarie[10]等對(duì)兩輪自平衡機(jī)器人上坡的平衡控制進(jìn)行了研究,Slavov[11]等人基于線性二次型控制(linear-quadratic regulator, LQR)對(duì)兩輪機(jī)器人進(jìn)行了研究,Larimi[12]等構(gòu)建了反作用輪系輔助的兩輪小車(chē)的新型的穩(wěn)定算法,Kim[13]等建立了兩輪自平衡移動(dòng)機(jī)器人的動(dòng)態(tài)模型等。這說(shuō)明兩輪自平衡小車(chē)不僅僅在應(yīng)用需求上,尤其在學(xué)科理論需求上,對(duì)其研究都具有重要的意義。因此,作為進(jìn)行各種平衡控制理論研究的第一步,對(duì)兩輪自平衡小車(chē)的實(shí)驗(yàn)平臺(tái)的研制具有非常重要的意義。
本文主要設(shè)計(jì)了兩輪自平衡小車(chē)的實(shí)驗(yàn)平臺(tái)。設(shè)計(jì)采用STM32F103C8T6為核心處理器進(jìn)行控制,姿態(tài)檢測(cè)選用MPU6050運(yùn)動(dòng)處理傳感器,數(shù)據(jù)融合采用卡爾曼濾波算法,結(jié)合陀螺儀的快速響應(yīng)特性和加速度傳感器的長(zhǎng)時(shí)間穩(wěn)定特性,得到小車(chē)的傾角。然后通過(guò)PID算法使小車(chē)能夠處在一個(gè)相對(duì)平衡的位置,從而保持直立的姿態(tài)。系統(tǒng)控制參數(shù)的選擇采用系統(tǒng)辨識(shí)的方法,在Matlab仿真平臺(tái)得到系統(tǒng)的優(yōu)化參數(shù),并寫(xiě)入編寫(xiě)好的C語(yǔ)言軟件,通過(guò)HC-06藍(lán)牙模塊可以使用Android手機(jī)控制小車(chē)實(shí)現(xiàn)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等動(dòng)作模式。
1 系統(tǒng)設(shè)計(jì)
本設(shè)計(jì)采用模塊化設(shè)計(jì)思想,系統(tǒng)總體功能框圖如圖1所示,分為五個(gè)模塊,分別為:電源管理模塊,微處理器模塊,電機(jī)驅(qū)動(dòng)模塊,姿態(tài)傳感器數(shù)據(jù)采集模塊,以及藍(lán)牙無(wú)線通訊模塊。電源管理模塊負(fù)責(zé)整個(gè)系統(tǒng)的供電,微處理器模塊為系統(tǒng)的控制與數(shù)據(jù)處理核心,姿態(tài)數(shù)據(jù)采集模塊為采集小車(chē)的姿態(tài)(包括加速度和角速度),然后通過(guò)微處理器控制算法后,再驅(qū)動(dòng)電機(jī)控制模塊運(yùn)動(dòng)以保持平衡,而藍(lán)牙通訊模塊則通過(guò)手機(jī)設(shè)備控制系統(tǒng)的運(yùn)行,同時(shí),系統(tǒng)運(yùn)行的數(shù)據(jù)也可以上傳到手機(jī)或電腦上。
圖1 系統(tǒng)功能框圖
2 硬件電路設(shè)計(jì)
2.1 電源管理模塊
系統(tǒng)主要使用的電平為12 V,5 V,3.3 V共三種電平,其中STM32F103C8T6、MPU6050、HC-06主要采用3.3 V供電,電機(jī)驅(qū)動(dòng)模塊用12 V和5 V供電。所以,本設(shè)計(jì)總電源使用12 V的鋰電池供電,采用LM2576將鋰電池進(jìn)行降壓為5 V,再利用LM1117把得到的5V電平降為3.3 V。
2.2 STM32F103微處理器模塊
系統(tǒng)采用STM32F103C8T6意法半導(dǎo)體(ST)的32位ARM Cortex-M3 內(nèi)核的微處理器。該處理器正常工作主頻為72 MHz,具有12 bit 分辨率的ADC,以及16 bit 電機(jī)控制PWM定時(shí)器,2個(gè)I2C接口(SMBus/PMBus)。該處理器可應(yīng)用于電機(jī)驅(qū)動(dòng),應(yīng)用控制,醫(yī)療手持設(shè)備,游戲,GPS平臺(tái)等多種場(chǎng)合,所以,本設(shè)計(jì)采用STM32F103C8T6具有一定的合理性。其最小系統(tǒng)電路圖如圖2所示。
2.3 電機(jī)驅(qū)動(dòng)模塊
自平衡小車(chē)的驅(qū)動(dòng)電機(jī)為兩個(gè)無(wú)刷直流電機(jī)(電機(jī)A為左側(cè)電機(jī),電機(jī)B為右側(cè)電機(jī))。采用L298N芯片作為電機(jī)驅(qū)動(dòng)電路的主芯片,小車(chē)的不同狀態(tài)運(yùn)動(dòng)通過(guò)電機(jī)的三種轉(zhuǎn)動(dòng)方式(正轉(zhuǎn),反轉(zhuǎn),停止)實(shí)現(xiàn),具體如表1所列。電機(jī)驅(qū)動(dòng)電路原理圖如圖3所示。L298N的VSS接5 V電源,VS接12 V電源。IN1、IN2、IN3、IN4分別接STM32的PB1、PB0、PB6和PB5,ENA接PA0,ENB接PA1,此接法不是唯一的,可以根據(jù)程序中的端口設(shè)置進(jìn)行相應(yīng)的更改。具體的控制過(guò)程:角速度和加速度經(jīng)過(guò)閉環(huán)控制之后產(chǎn)生一個(gè)結(jié)果,其運(yùn)算結(jié)果用來(lái)改變PWM脈沖的占空比,進(jìn)而分別控制了左電機(jī)和右電機(jī)的轉(zhuǎn)速。在兩個(gè)電機(jī)之間加入二極管主要是為了保護(hù)電路的安全運(yùn)行。
表1 引腳狀態(tài)電機(jī)制動(dòng)電機(jī)A IN1 IN2 電機(jī)B IN3 IN4
正轉(zhuǎn) 1 0 正轉(zhuǎn) 1 0
反轉(zhuǎn) 0 1 反轉(zhuǎn) 0 1
停止 0 0 停止 0 0
—— 1 1 —— 1 1
2.4 姿態(tài)傳感器模塊
為了得到高精度的角度檢測(cè),系統(tǒng)采用Invensense 公司的MPU6050,該姿態(tài)傳感器同時(shí)集成了3軸加速度和3軸陀螺儀,自帶16位AD轉(zhuǎn)換,加速度測(cè)量范圍為±16 g(實(shí)際應(yīng)用僅為±2 g范圍),傾角角度測(cè)量范圍不到1度。所以不需要分別使用加速度計(jì)和陀螺儀,以及相應(yīng)的ADC電路,但此處數(shù)據(jù)不能簡(jiǎn)單采集使用,還需要經(jīng)過(guò)微處理器卡爾曼濾波融合算法才可得到傾角。姿態(tài)傳感器模塊電路如圖4所示。
2.5 藍(lán)牙無(wú)線通訊模塊
自平衡小車(chē)系統(tǒng)可以通過(guò)無(wú)線方式和上位機(jī)或者手機(jī)進(jìn)行通訊,實(shí)現(xiàn)手機(jī)控制小車(chē)運(yùn)行,并同時(shí)把數(shù)據(jù)上傳到手機(jī)上。本設(shè)計(jì)采用的是藍(lán)牙模塊HC-06,此模塊波特率可變,串口電壓為3.3 V或者5 V,可以進(jìn)行主從機(jī)切換,并且可以通過(guò)AT指令改變一些出廠的基本設(shè)置,如名字和密碼等。HC-06主要用來(lái)接收安卓手機(jī)發(fā)送的指令,接收到之后,把指令通過(guò)串口發(fā)送給主控芯片,再由單片機(jī)控制電機(jī),根據(jù)不同的指令來(lái)實(shí)現(xiàn)小車(chē)的左轉(zhuǎn)、右轉(zhuǎn)、前進(jìn)和后退。HC-06原理圖如圖5所示。
圖3 電機(jī)驅(qū)動(dòng)電路
圖4 MPU6050電路原理圖
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)的控制流程圖如圖6所示,主要包括:STM32的初始化,MPU6050初始化,姿態(tài)(傾角)信息的采集,卡爾曼濾波,傾角PID控制,PWM控制電機(jī)輸出。系統(tǒng)軟件開(kāi)發(fā)為基于CMSIS架構(gòu)的固件庫(kù)開(kāi)發(fā)平臺(tái),軟件版本為MDK V4.12,它支持常見(jiàn)的ARM7,ARM9和ARM最新內(nèi)核的CM3系列微處理器。
圖6 系統(tǒng)控制流程圖
STM32的初始化主要包括時(shí)鐘初始化、延時(shí)初始化以及中斷初始化。時(shí)鐘初始化采用SystemInit()。STM32是CM3內(nèi)核的,所以其內(nèi)部有一個(gè)SysTick定時(shí)器,而使用的延時(shí)函數(shù)就是以這個(gè)定時(shí)器為基準(zhǔn),delay_init()函數(shù)主要是配置SysTick的中斷時(shí)間,以及延時(shí)初始化fac_us和fac_ms兩個(gè)參數(shù)。NVIC_Configuration()函數(shù)主要用來(lái)設(shè)置搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)。
MPU6050要根據(jù)裝配位置,通過(guò)I2C讀取各個(gè)軸角速度和各個(gè)軸的加速度,再進(jìn)行卡爾曼濾波處理進(jìn)行數(shù)據(jù)融合,然后得到融合后的傾角。數(shù)據(jù)讀取函數(shù)、卡爾曼濾波函數(shù)分別為IIC_6050()、Kalman()。濾波器參數(shù)通過(guò)模型仿真與實(shí)驗(yàn)結(jié)合的方式得到。并寫(xiě)入到軟件代碼中。
電機(jī)控制可采用方波或正弦波控制。雖然正弦波相比有效率的多,但考慮到系統(tǒng)實(shí)現(xiàn)的復(fù)雜度和效率,本文采用方波來(lái)實(shí)現(xiàn)電機(jī)控制。設(shè)計(jì)采用TIM2的通道一和通道二產(chǎn)生PWM波輸出,使用TIM2并設(shè)置其為定時(shí)器模式,脈沖寬度調(diào)制模式2,通過(guò)代碼產(chǎn)生頻率為18 kHz占空比可變的PWM,其中占空比由獲取到的角速度和角度來(lái)控制,使用函數(shù)TIM_SetCompare()來(lái)驅(qū)動(dòng)電機(jī)。
本設(shè)計(jì)的手機(jī)顯示界面如圖7所示。設(shè)計(jì)沒(méi)有使用查詢(xún)而是使用中斷接收指令,因此中斷服務(wù)函數(shù)是整個(gè)串口模塊的核心。當(dāng)收到不同的指令時(shí),通過(guò)控制電機(jī)轉(zhuǎn)向進(jìn)行不同的操作。需要注意的是每次控制電機(jī)之后都要調(diào)用一個(gè)清除緩沖區(qū)的函數(shù),否則緩沖區(qū)的指令會(huì)保持不變,只能保持一個(gè)狀態(tài)。串口不斷接收從藍(lán)牙傳過(guò)來(lái)的指令,串口接收到的指令都是由Android程序控制的。程序分為兩個(gè)部分,一個(gè)是XML文件,XML是布局文件,對(duì)此文件進(jìn)行修改可以改變手機(jī)顯示的界面,設(shè)計(jì)使用Button控件。另外一個(gè)是Java文件,真正的行為控制是Java文件來(lái)做的,首先要實(shí)例化Button,然后定義藍(lán)牙地址變量,使之固定不變。本設(shè)計(jì)藍(lán)牙設(shè)備的地址為00:21:13:07:BC,找到地址之后就要發(fā)送指令,這些指令都是由一些藍(lán)牙架包實(shí)現(xiàn)的,最后把message發(fā)送出去。本設(shè)計(jì)中若message指令為G,則向前,若為B則后退,S為停止,L為左轉(zhuǎn),R為右轉(zhuǎn)。
圖7 手機(jī)界面
4 自平衡小車(chē)原型實(shí)物
本設(shè)計(jì)采用兩個(gè)無(wú)刷直流電機(jī)控制,選擇飛思卡爾競(jìng)賽使用的C型車(chē)模進(jìn)行改裝得到小車(chē)機(jī)械結(jié)構(gòu),底盤(pán)使用一塊面包板來(lái)代替,板子和支架部分固定在一起。小車(chē)的傾角傳感器MPU6050,電機(jī)控制模塊L298,鋰電池模塊,降壓模塊,STM32核心板,藍(lán)牙模塊等都安裝在面包板上面。完整車(chē)體如圖8所示。通過(guò)手機(jī)控制界面,可以遙控兩輪自平衡小車(chē)的運(yùn)動(dòng),同時(shí)可以把采集數(shù)據(jù)上傳到手機(jī)上。
圖8 自平衡小車(chē)原型
5 結(jié) 語(yǔ)
本文對(duì)兩輪自平衡小車(chē)實(shí)驗(yàn)平臺(tái)進(jìn)行了設(shè)計(jì),作為較為理想的驗(yàn)證各種控制理論的實(shí)驗(yàn)平臺(tái),進(jìn)行了系統(tǒng)的硬件平臺(tái)設(shè)計(jì)、軟件平臺(tái)設(shè)計(jì)以及機(jī)械平臺(tái)設(shè)計(jì)。系統(tǒng)主要以STM32F103 32 位 ARM控制器為核心,采用卡爾曼融合濾波算法對(duì)MPU6050姿態(tài)傳感器進(jìn)行數(shù)據(jù)處理,通過(guò)PWM控制左、右電機(jī)的運(yùn)動(dòng),該系統(tǒng)能夠初步實(shí)現(xiàn)小車(chē)的運(yùn)動(dòng)平衡控制。后期的研究將著重理論控制算法的仿真,與參數(shù)融合優(yōu)化方面。
參考文獻(xiàn)
[1] 阮曉鋼, 趙建偉. 基于Hopfield網(wǎng)絡(luò)的柔性?xún)奢喿云胶鈾C(jī)器人控制 [J]. 機(jī)器人, 2010, 32(3): 405-413.
[2] 阮曉鋼, 任紅格. 兩輪自平衡機(jī)器人動(dòng)力學(xué)建模及其平衡控制 [J]. 計(jì)算機(jī)應(yīng)用研究, 2009, 26(1): 99-101.
[3] 彭楠. 兩輪自平衡電動(dòng)車(chē)機(jī)械結(jié)構(gòu)設(shè)計(jì)與有限元分析 [D]. 鄭州:鄭州大學(xué), 2010.
[4] 王曉宇, 閆繼宏, 秦勇, 等. 基于改進(jìn)遺傳算法的兩輪自平衡機(jī)器人能量?jī)?yōu)化策略 [J]. 吉林大學(xué)學(xué)報(bào)(工學(xué)版), 2009(3): 830-835.
[5] 劉二林, 姜香菊. 基于卡爾曼濾波的兩輪自平衡車(chē)姿態(tài)檢測(cè) [J]. 自動(dòng)化與儀器儀表, 2015 (2): 52-54.
[6] 陳波. 基于神經(jīng)網(wǎng)絡(luò)PID控制的兩輪自平衡小車(chē)研究 [D].成都:西南交通大學(xué), 2014.
[7] 王曉宇. 兩輪自平衡機(jī)器人的研究 [D].哈爾濱:哈爾濱工業(yè)大學(xué), 2007.
[8] 秦勇, 閆繼宏, 王曉宇, 等. 兩輪自平衡機(jī)器人運(yùn)動(dòng)控制研究 [J]. 哈爾濱工業(yè)大學(xué)學(xué)報(bào), 2008 (5): 721-726.
[9] 程剛, 屈勝利, 劉學(xué)超. 兩輪自平衡小車(chē)可控角度的推導(dǎo)研究 [J]. 機(jī)床與液壓, 2009,37(5): 115-116.
[10] Sayidmarie O K, Agouri S A, Tokhi M O. Balancing and Control of a Two-Wheeled Robot on Inclined Surface [Z]. Mobile Service Robotics, 2014.
[11] Slavov T, Kralev J, Petkov P. Linear-Quadratic Control of a Two-Wheeled Robot [J]. Cr Acad Bulg Sci, 2014, 67(8): 1153-1158.
[12] Larimi S R, Zarafshan P, Moosavian SAA. A New Stabilization Algorithm for a Two-Wheeled Mobile Robot Aided by Reaction Wheel [J]. J Dyn Syst-T Asme, 2015, 137.
[13] Kim S, Kwon S. Dynamic Modeling of a Two-wheeled Inverted Pendulum Balancing Mobile Robot [J]. Int J Control Autom, 2015, 13(4): 926-933.