張燕+呂吉明+許劉澤+沈祥偉
摘要:該文設(shè)計(jì)了一款可以自主運(yùn)行且保持平衡的移動(dòng)機(jī)器人控制系統(tǒng),使用LD3320識(shí)別簡(jiǎn)單的語(yǔ)音啟動(dòng)停止信號(hào)實(shí)現(xiàn)移動(dòng)機(jī)器人啟停控制,使用六軸傳感器MPU6050實(shí)現(xiàn)未知環(huán)境下移動(dòng)機(jī)器人的角度信息,通過(guò)MPU6050以及電機(jī)速度編碼器實(shí)現(xiàn)保持小車(chē)的平衡。移動(dòng)機(jī)器人最后能夠?qū)崿F(xiàn)自主運(yùn)行以及語(yǔ)音識(shí)別的功能。通過(guò)實(shí)際移動(dòng)機(jī)器人的運(yùn)行結(jié)果說(shuō)明控制系統(tǒng)的正確性。
關(guān)鍵詞;Atmega2560;LD3320;雙CPU;MPU6050;L298N
雙輪自平衡機(jī)器人始創(chuàng)于1980年左右的東京,其設(shè)計(jì)概念是由東京電信大學(xué)的一名教授首先提出的。同一時(shí)期,美國(guó)發(fā)明出一款名為Segway的機(jī)器人,該機(jī)器人擁有先進(jìn)的機(jī)器配置。發(fā)展到現(xiàn)在,該機(jī)器人已經(jīng)發(fā)展到多個(gè)系列,并在市場(chǎng)中廣泛運(yùn)用。國(guó)內(nèi)對(duì)于雙輪自平衡機(jī)器人的研究起步比較晚。2002年,臺(tái)灣國(guó)立中央大學(xué)電機(jī)工程研究所模仿美國(guó)的Segway研制出兩輪自平衡機(jī)器人。2005年,哈工大的學(xué)生伊亮運(yùn)用線(xiàn)性控制技術(shù),真正意義上實(shí)現(xiàn)了雙輪移動(dòng)機(jī)器人的平衡。2012年,Ninebot平衡車(chē)CEO高祿峰成立鼎力聯(lián)合科技有限公司,成功研發(fā)出風(fēng)行者思維車(chē)、Ninebot九號(hào)機(jī)器人,不但在國(guó)內(nèi)取得了成功,還讓平衡車(chē)進(jìn)人了美國(guó)市場(chǎng)。雙輪自平衡機(jī)器人以其結(jié)構(gòu)簡(jiǎn)單、行動(dòng)靈敏、運(yùn)行方便、速度可控等優(yōu)勢(shì)被廣泛運(yùn)用,并因其可以在狹小或地形復(fù)雜的工作環(huán)境下完成工作,在民間和軍事領(lǐng)域都具有巨大的應(yīng)用前景,具有非常重大的研究意義。
該文首先研究了自平衡的移動(dòng)機(jī)器人控制系統(tǒng)。
1系統(tǒng)組成和結(jié)構(gòu)
自平衡移動(dòng)機(jī)器人控制系統(tǒng)整個(gè)控制系統(tǒng)框架如圖1所示,控制系統(tǒng)主要由兩個(gè)CPU構(gòu)成,其中主CPU1采用的是89C51主要完成當(dāng)前角度讀取以及電機(jī)控制,其中六軸傳感器主要完成的是陀螺儀三個(gè)方向的角度以及加速度計(jì)三個(gè)方向的加速度的讀取。電機(jī)采用的是L298N,此電機(jī)模塊的優(yōu)點(diǎn)是可以直接通過(guò)單片機(jī)的IO口控制其運(yùn)動(dòng)。而移動(dòng)機(jī)器人的啟動(dòng)和停止使用的是語(yǔ)音信號(hào)來(lái)處理,考慮到語(yǔ)音處理內(nèi)容較多,所以采用的STM32進(jìn)行語(yǔ)音處理,而后將獲取的數(shù)據(jù)通過(guò)端口發(fā)送給CPU1。
整個(gè)自平衡車(chē)系統(tǒng)整體邏輯如圖2所示。
移動(dòng)機(jī)器人開(kāi)始運(yùn)動(dòng)之后,陀螺儀獲取角速度信息,加速度計(jì)獲取z軸的加速度信息。將加速度計(jì)信息與陀螺儀積分后的角度信息疊加之后比例調(diào)整之后的值和角速度信息疊加,而后進(jìn)行積分成角度信息,此角度信息一部分和陀螺儀角速度信息合成作為閉環(huán)反饋系統(tǒng)的輸入。將角度信息,角速度信息以及速度信息作為最終控制量疊加在一起作為電機(jī)輸出電壓控制量驅(qū)動(dòng)電機(jī)運(yùn)行達(dá)到自平衡的目的。由于整個(gè)硬件系統(tǒng)使用兩個(gè)CPU進(jìn)行控制,因此對(duì)此分別進(jìn)行介紹。
硬件部分設(shè)計(jì)語(yǔ)音模塊LD3320的控制引腳有四個(gè),分別是TXD,RXD、GND以及VCC引腳,其中TXD與RXD主要實(shí)現(xiàn)數(shù)據(jù)傳輸通信。P1.1-P1.4四個(gè)端口是通用10口輸出,用來(lái)檢測(cè)語(yǔ)音信號(hào)的輸出。如果語(yǔ)音模塊正確識(shí)別語(yǔ)音信號(hào),那么對(duì)應(yīng)的這四個(gè)管腳P1.1-P1.4會(huì)輸出相應(yīng)的低電平,從而單片機(jī)上與之對(duì)應(yīng)的端口,分別是P3.3-P3.6可以接收到低電平信號(hào)。而后將CPU1的p0.2到p0.5連接到CPU2的PC0-PC3上,控制機(jī)器人運(yùn)行。
軟件部分語(yǔ)音模塊采用VAD技術(shù)檢測(cè)語(yǔ)音信息,通過(guò)循環(huán)來(lái)識(shí)別語(yǔ)音信號(hào)。主控的CPU反復(fù)啟動(dòng)識(shí)別,如果在一次識(shí)別中無(wú)結(jié)果,那么會(huì)再次啟動(dòng)一次識(shí)別;如果識(shí)別有結(jié)果,將結(jié)果與語(yǔ)言庫(kù)里設(shè)置了四個(gè)詞語(yǔ)“停止”,“運(yùn)動(dòng)”,“左轉(zhuǎn)”,“右轉(zhuǎn)”比較,相同則發(fā)信號(hào)給主CPU讓其運(yùn)動(dòng)。然后再啟動(dòng)下一次識(shí)別結(jié)果。算法流程如圖5所示。
3ATMEGA2560控制系統(tǒng)
ATMEGA2560是控制自平衡移動(dòng)機(jī)器人的核心部分。包括和89C51進(jìn)行通訊,利用MPU6050獲取陀螺儀以及加速度信息,利用獲取的角度位置信息,控制電機(jī)L298N運(yùn)行。其硬件連接如圖6所示。MPU6050的12C通信接口SDA以及SCL分別與CPU的對(duì)應(yīng)接口相連,而后控制器端口PC3以及PC4控制電機(jī)速度,可以輸A.PWM脈寬調(diào)制信號(hào)來(lái)調(diào)節(jié)電機(jī)的速度。IN1和IN2控制電機(jī)的轉(zhuǎn)向。
3.1MPU6050傳感器數(shù)據(jù)獲取
Atmegal2560通過(guò)TWI(兩線(xiàn)串行總線(xiàn))獲取MPU6050各個(gè)傳感器的數(shù)據(jù)信息。其中Atmegal2560作為主機(jī)(Master),而MPU6050作為從機(jī)(Slave)。MPU6050作為從機(jī)地址為OxDO,也就是說(shuō)CPU讀取數(shù)據(jù)需要首先發(fā)送這個(gè)地址給從機(jī)。
而IIC讀寫(xiě)的步驟如下所示。12C讀傳感器數(shù)據(jù)的步驟:1)主機(jī)發(fā)送START信號(hào),告訴從機(jī)兩者需要通信。2)主機(jī)發(fā)送從機(jī)地址以及寫(xiě)入數(shù)據(jù)的命令到從機(jī),等待從機(jī)響應(yīng)。3)從機(jī)響應(yīng)之后,主機(jī)發(fā)送需要讀取的寄存器地址給從機(jī),等待從機(jī)響應(yīng)。4)從機(jī)響應(yīng)之后,重新發(fā)送Start信號(hào)。5)主機(jī)發(fā)送從機(jī)地址以及讀取數(shù)據(jù)的命令到從機(jī),告訴從機(jī)讀取數(shù)據(jù)。等待從機(jī)響應(yīng)。6)讀取從機(jī)的數(shù)據(jù),對(duì)于多個(gè)數(shù)據(jù)則連續(xù)讀取數(shù)據(jù),多個(gè)數(shù)據(jù)之間需要有一定的等待時(shí)間。7)讀取完成之后,發(fā)送一個(gè)stop信號(hào)給從機(jī),告訴從機(jī)讀取數(shù)據(jù)結(jié)束,一次通信完成。
12C寫(xiě)傳感器數(shù)據(jù)的步驟:1)主機(jī)發(fā)送START信號(hào),告訴從機(jī)兩者需要通信。2)主機(jī)發(fā)送從機(jī)地址以及寫(xiě)入數(shù)據(jù)的命令到從機(jī),等待從機(jī)響應(yīng)。3)從機(jī)響應(yīng)之后,主機(jī)發(fā)送需要寫(xiě)入的寄存器地址給從機(jī),等待從機(jī)響應(yīng)。4)從機(jī)響應(yīng)之后,寫(xiě)人相關(guān)的從機(jī)數(shù)據(jù),對(duì)于多個(gè)數(shù)據(jù)則連續(xù)寫(xiě)人數(shù)據(jù),多個(gè)數(shù)據(jù)之間需要有一定的等待時(shí)間。5)寫(xiě)人完成之后,發(fā)送一個(gè)stop信號(hào)給從機(jī),告訴從機(jī)寫(xiě)人數(shù)據(jù)結(jié)束,一次通信完成。
為了驗(yàn)證傳感器數(shù)據(jù)獲取情況,利用CVI編寫(xiě)上位機(jī)通信界面,將MPU6050獲取數(shù)據(jù)傳輸?shù)缴衔粰C(jī)上。如圖7所示。
3.2電機(jī)控制
本設(shè)計(jì)中用到的電機(jī)是L298N,其硬件接口硬件連接與對(duì)應(yīng)的控制如圖所示。
電機(jī)的調(diào)速通過(guò)EN1,EN2輸入的PWM信號(hào)進(jìn)行調(diào)速,而這兩個(gè)端口的信號(hào)通過(guò)圖2的閉環(huán)系統(tǒng)軟件進(jìn)行設(shè)置。具體的原理是:電機(jī)的脈寬調(diào)制信號(hào)輸入L298N,IN1和IN2控制左電機(jī),IN3和IN4控制右電機(jī)。兩個(gè)IN口10狀態(tài)為正轉(zhuǎn),叭狀態(tài)為反轉(zhuǎn),11狀態(tài)為停止。利用這個(gè)原理實(shí)現(xiàn)移動(dòng)機(jī)器人運(yùn)動(dòng)狀態(tài)的控制。為例如,當(dāng)IN1為1
IN2為0時(shí),左電機(jī)正轉(zhuǎn);當(dāng)IN3為1且IN4為0時(shí),右電機(jī)正轉(zhuǎn);那么此時(shí)移動(dòng)機(jī)器人的運(yùn)動(dòng)狀態(tài)即為前進(jìn)。同理,可以實(shí)現(xiàn)移動(dòng)機(jī)器人的左轉(zhuǎn)、右轉(zhuǎn)、后退和停止。
4整體軟件設(shè)計(jì)
4.1整體軟件設(shè)計(jì)
由于篇幅限制對(duì)于各個(gè)部分不再介紹,下面對(duì)于系統(tǒng)整體軟件設(shè)計(jì)以及速度控制PWM部分做介紹。
系統(tǒng)整體軟件設(shè)計(jì)如圖所示,首先初始化各個(gè)端口,而后進(jìn)人循環(huán),判斷P3.6端口是否為低電平,如果是則啟動(dòng)自平衡車(chē),而后獲取MPU6050傳感器的信息,對(duì)角速度信息進(jìn)行積分得到角度信息,將角度,角速度,加速度信息通過(guò)PID控制獲取一個(gè)速度控制電機(jī)運(yùn)動(dòng)保持平衡。而后繼續(xù)循環(huán),如果獲取的信息是停止則結(jié)束運(yùn)動(dòng)。如果是左轉(zhuǎn)右轉(zhuǎn)則控制機(jī)器人兩邊電機(jī)轉(zhuǎn)動(dòng)速度不一致即可。
4.2PWM的PID控制
移動(dòng)機(jī)器人的自平衡是通過(guò)傳感器獲取角度信息以及傾斜量而后通過(guò)PID閉環(huán)控制調(diào)整移動(dòng)機(jī)器人電機(jī)運(yùn)行的速度達(dá)到自平衡的目的。因此PID控制是核心,本設(shè)計(jì)中首先每次獲取當(dāng)前的速度,而后為了防止抖動(dòng)造成機(jī)器人的不平衡,所以采用速度互補(bǔ)濾波防止抖動(dòng)。由圖2,可知PID控制的輸人時(shí)速度,角度以及角速度三者,通過(guò)移動(dòng)機(jī)器人實(shí)際運(yùn)動(dòng)調(diào)整PID控制的參數(shù),達(dá)到獲取一個(gè)較穩(wěn)定的脈寬輸出偏移量,而后結(jié)合小車(chē)是否轉(zhuǎn)彎參數(shù)來(lái)一起設(shè)置左右輪電機(jī)的速度達(dá)到穩(wěn)定的目的。
5結(jié)束語(yǔ)
如圖11所示,在實(shí)驗(yàn)室環(huán)境中,搭建了一個(gè)移動(dòng)機(jī)器人運(yùn)動(dòng)環(huán)境,兩足平衡機(jī)器人在已經(jīng)搭建成的一個(gè)通道環(huán)境中,可以正常的按照語(yǔ)音指令行走,從而通過(guò)通道。
本文設(shè)計(jì)了一款可以實(shí)現(xiàn)自平衡的移動(dòng)機(jī)器人控制系統(tǒng),該系統(tǒng)由
CPU構(gòu)成,每個(gè)CPU負(fù)責(zé)不同的工作,整個(gè)系統(tǒng)設(shè)計(jì)完成之后進(jìn)行了測(cè)試,測(cè)試結(jié)果說(shuō)明了整個(gè)系統(tǒng)的正確性。