李帥男
(吉林化工學(xué)院, 吉林 吉林 132000)
隨著嵌入式技術(shù),微電子技術(shù)和控制算法的進(jìn)步,智能化越來(lái)越成為當(dāng)今社會(huì)發(fā)展的風(fēng)向標(biāo),而兩輪自平衡車正是其中的一個(gè)熱點(diǎn)。在世界各個(gè)國(guó)家中,不論是高校、實(shí)驗(yàn)室、商業(yè)公司,兩輪自平衡小車的研究越來(lái)越多,因?yàn)椴还苁窃诿裼茫蒲羞€是軍用方面其有著巨大的應(yīng)用前景,在民用方面,電動(dòng)兩輪代步平衡車已經(jīng)投放市場(chǎng),走入用戶家庭中,它綠色環(huán)保,轉(zhuǎn)彎控制方便,無(wú)剎車系統(tǒng),占用地方小,正是這些優(yōu)勢(shì)改變著人們的出行方式;在科研方面,有些在很特殊復(fù)雜的空間下,比如狹小、危險(xiǎn)、黑暗的環(huán)境,兩輪小車可以更加利用自己的優(yōu)勢(shì)來(lái)代替人們執(zhí)行特殊的任務(wù)[1]。
STM32f103是意法半導(dǎo)體公司新推出的新一代增強(qiáng)型32位芯片,它高度集成且容易開(kāi)發(fā),它采用的是高性能的RISC內(nèi)核,運(yùn)行頻率是72 MHz,內(nèi)部放置了高性能的存儲(chǔ)圣杯,有128 kB閃存,2萬(wàn)字節(jié)的靜態(tài)隨機(jī)存儲(chǔ)器,很多的輸入輸出引腳和2個(gè)外圍總線的外部設(shè)備。這個(gè)系列的所有型號(hào)都有2個(gè)12位的模數(shù)轉(zhuǎn)換器,還有三個(gè)16位的定時(shí)器,1個(gè)脈沖寬度調(diào)節(jié)定時(shí)器,還有很多快速和通用制度的接口用于傳輸信息,兩個(gè)串行工作總線和串行外設(shè)接口,3個(gè)全雙工通用同步/異步串行收發(fā)模塊,1個(gè)通用串行總線接口和1個(gè)控制器局域網(wǎng)絡(luò)接口。供電電壓在2.0~3.6 V之間,工作溫度在-40~85 ℃之間[2]。
MPU6050內(nèi)含有三軸的Micro-Electro-Mechanical System微機(jī)電系統(tǒng)陀螺儀,三軸的微機(jī)電系統(tǒng)加速度計(jì),還有可以不斷擴(kuò)充的數(shù)字運(yùn)動(dòng)處理器件Digital Motion Processor,使用同步串行總線可以通信其它的數(shù)字型模塊,陀螺儀和加速度計(jì)都有3個(gè)數(shù)模轉(zhuǎn)換器,因?yàn)闇y(cè)量的是模擬量,通過(guò)數(shù)模轉(zhuǎn)換器,可以變?yōu)閿?shù)字量,因?yàn)橐蹲剿俣炔欢ǖ囊苿?dòng)狀態(tài),操控者需要選擇不同的范圍,陀螺儀和加速度計(jì)的選擇范圍非常豐富,每個(gè)有四個(gè)梯度[3]。MPU6050如圖1所示。
圖1 MPU6050示意圖
在本次設(shè)計(jì)中用TB6612FNG模塊作為直流電機(jī)的驅(qū)動(dòng)模塊,它對(duì)電機(jī)有很好的控制和保護(hù)作用,可以隨意調(diào)節(jié)電流大小,避免了沖擊電流對(duì)電機(jī)繞組的影響,控制非常方便,調(diào)速很快捷,這款芯片的集成程度都非常的高,驅(qū)動(dòng)能力也是非常強(qiáng)悍,運(yùn)行速度快,能耗方面也非常優(yōu)秀[4]。在眾多型號(hào)中,它有著出色的性價(jià)比優(yōu)勢(shì),也很適合本次平衡小車的設(shè)計(jì),所以選用此款芯片。
如圖2所示,給主控板供電后,程序開(kāi)始運(yùn)行,運(yùn)行內(nèi)容分為兩個(gè)方面,一部分是應(yīng)用到模塊的初始化還有一部分是應(yīng)用程序的初始化。第一部分是系統(tǒng)所有部分的初始化運(yùn)行,所有的程序由MCU燒錄工具M(jìn)CU-ISP提供產(chǎn)生。另一部分是各個(gè)應(yīng)用模塊的初始化,是對(duì)所有程序中要使用到的變量值進(jìn)行初始賦值。
圖2 系統(tǒng)程序流程圖
初始化工作完成后,中斷程序運(yùn)行,可以把定時(shí)中斷定為5 ms,中斷開(kāi)始后,中斷子程序開(kāi)始運(yùn)行,這時(shí)可以調(diào)整優(yōu)先級(jí)調(diào)用各個(gè)其它程序塊的函數(shù),中斷的運(yùn)用是系統(tǒng)程序運(yùn)行的重點(diǎn)所在。在中斷子程序中,MCU通過(guò)IIC與MPU6050進(jìn)行通訊,可以快速得到雙輪車的加速度值和角速度值,對(duì)從姿態(tài)模塊傳送來(lái)的角度信息使用PID算法進(jìn)行分析與計(jì)算后,將程序運(yùn)算結(jié)果通過(guò)PWM與I/O口的高低電平輸出電機(jī)驅(qū)動(dòng)模塊再輸送到電機(jī),可以實(shí)現(xiàn)對(duì)小車的閉環(huán)直立控制。
系統(tǒng)的硬件系統(tǒng)以意法半導(dǎo)體公司的STM32f103c8T6為控制核心,使用MPU6050檢測(cè)小車的車身姿態(tài),通過(guò)TB6612FNG驅(qū)動(dòng)兩個(gè)直流減速電機(jī),使雙輪小車平衡直立。軟件系統(tǒng)設(shè)計(jì)中,根據(jù)單片機(jī)使用手冊(cè)設(shè)置各個(gè)寄存器;根據(jù)IIC總線協(xié)議編寫(xiě)通信程序,并且根據(jù)芯片說(shuō)明配置MPU6050芯片。使用互補(bǔ)濾波融合加速度計(jì)與陀螺儀數(shù)據(jù)并實(shí)現(xiàn)角度控制。使用PID算法計(jì)算角度控制與速度控制的最終輸出量。最終實(shí)現(xiàn)了對(duì)雙輪自平衡小車的平衡控制,使得小車在沒(méi)有外力干擾下能自主實(shí)現(xiàn)直立。