林鈺旋+陳森茂+史春笑
摘 要:APP遠(yuǎn)程監(jiān)控機(jī)器人是基于Android系統(tǒng)編寫(xiě)APP,通過(guò)手機(jī)APP發(fā)送指令,ARM接收指令,通過(guò)串口發(fā)送給藍(lán)牙小車(chē)進(jìn)行運(yùn)動(dòng)控制。本文主要介紹監(jiān)控機(jī)器人系統(tǒng)中藍(lán)牙小車(chē)運(yùn)動(dòng)控制部分,本設(shè)計(jì)以K60芯片為控制核心,采用IRF3205作為電機(jī)驅(qū)動(dòng)的MOS管,配以藍(lán)牙從機(jī)無(wú)線模塊,實(shí)現(xiàn)小車(chē)的運(yùn)動(dòng)控制,同時(shí)具有自動(dòng)避障等功能。
關(guān)鍵詞:K60 藍(lán)牙遙控 電機(jī)驅(qū)動(dòng)
中圖分類(lèi)號(hào):TP242 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1003-9082 (2017) 04-0216-03
一、引言
APP監(jiān)控機(jī)器人在家庭、工廠、醫(yī)護(hù)等需監(jiān)視的場(chǎng)合發(fā)揮著重要的作用,它可以有效避免一些意外事故的發(fā)生。互聯(lián)網(wǎng)、手機(jī)APP安卓系統(tǒng)的開(kāi)發(fā),使得人們通過(guò)手機(jī)就可以輕松控制機(jī)器人的移動(dòng)。無(wú)線遙控實(shí)現(xiàn)方法包括藍(lán)牙、紅外、射頻等幾種,其中藍(lán)牙技術(shù)具有一定優(yōu)勢(shì),目前被廣泛應(yīng)用在信息家電方面,各種家電共用遙控,并在可組網(wǎng)與公眾互聯(lián)網(wǎng)中連接,共享有用信息。藍(lán)牙技術(shù)實(shí)現(xiàn)無(wú)線遙控具有很高的市場(chǎng)價(jià)值及廣闊的應(yīng)用前景。本設(shè)計(jì)通過(guò)結(jié)合ARM開(kāi)發(fā)板,利用無(wú)線通信及K60藍(lán)牙處理、硬件測(cè)試,達(dá)到機(jī)器人實(shí)時(shí)監(jiān)控、運(yùn)動(dòng)的目的。
二、系統(tǒng)硬件設(shè)計(jì)
1.總體方案設(shè)計(jì)
本系統(tǒng)以K60單片機(jī)為核心控制器,通過(guò)接在K60主板上的藍(lán)牙從機(jī)接受來(lái)自ARM開(kāi)發(fā)板的指令,傳給K60讓其做出相應(yīng)處理,通過(guò)PWM調(diào)制頻率,使電機(jī)驅(qū)動(dòng)模塊工作。利用H橋電機(jī)驅(qū)動(dòng)電路,控制兩個(gè)電機(jī)差速,從而改變輪子的轉(zhuǎn)向,達(dá)到控制小車(chē)運(yùn)動(dòng)的目的。通過(guò)超聲波避障模塊使小車(chē)安全行駛。整個(gè)藍(lán)牙小車(chē)模塊通過(guò)一個(gè)模塊電源供電,根據(jù)不同模塊的工作需求,電源模塊提供了3.3V、5V的電源。系統(tǒng)硬件框圖設(shè)計(jì)見(jiàn)圖1。
2.系統(tǒng)主要硬件模塊介紹
機(jī)器人小車(chē)硬件模塊主要有K60單片機(jī)、機(jī)器人小車(chē)底盤(pán)、藍(lán)牙串口模塊、電機(jī)驅(qū)動(dòng)模塊、機(jī)器人小車(chē)電源模塊、7.2V鎳鎘電池。
2.1 K60單片機(jī)
K60芯片電源類(lèi)引腳,BGA封裝22個(gè),LQFP封裝27個(gè),其中BGA封裝的芯片有五個(gè)引腳未使用。芯片使用多組電源引腳分別為內(nèi)部電壓調(diào)節(jié)器、I/O引腳驅(qū)動(dòng)、A/D轉(zhuǎn)換等電路供電,內(nèi)部電壓調(diào)節(jié)器為內(nèi)核和振蕩器。為了電源穩(wěn)定,MCU內(nèi)部包含多組電源電路,同時(shí)給出多處電源引出腳,便于外接濾波電容。K60最小系統(tǒng)芯片上同時(shí)具有藍(lán)牙接收模塊,這樣在設(shè)計(jì)主板上就節(jié)省了引出藍(lán)牙從機(jī)的插槽。
設(shè)計(jì)K60單片機(jī)的整個(gè)主板硬件控制電路,其中包括K60最小核心板及電機(jī)驅(qū)動(dòng)PWM的接口,K60硬件主板引腳功能說(shuō)明見(jiàn)表1。K60最小系統(tǒng)的引腳及主板設(shè)計(jì)的原理圖見(jiàn)圖2。
2.2 機(jī)器人底盤(pán)及電機(jī)
為了方便機(jī)器人運(yùn)動(dòng)轉(zhuǎn)向,本設(shè)計(jì)選擇了兩個(gè)電機(jī)分別控制兩個(gè)車(chē)輪,一個(gè)萬(wàn)向輪在底盤(pán)前面,這樣利用電機(jī)的差速驅(qū)動(dòng)左右電機(jī)不同轉(zhuǎn)速,就可以實(shí)現(xiàn)小車(chē)的轉(zhuǎn)向,圖3所示是小車(chē)的3輪底盤(pán)。由于驅(qū)動(dòng)機(jī)器人需要很大的轉(zhuǎn)矩,所以選擇扭矩大,負(fù)載能力強(qiáng)的大功率直流電機(jī)。
2.3藍(lán)牙串口模塊
在K60最小系統(tǒng)板上有通用的藍(lán)牙接口模塊,通過(guò)外接藍(lán)牙從機(jī)模塊,就可以實(shí)現(xiàn)藍(lán)牙從機(jī)接收外部信號(hào),傳送給K60單片機(jī)做出相應(yīng)處理。本設(shè)計(jì)采用LQ-BTM藍(lán)牙從機(jī),在與K60連接時(shí)要注意正確的通訊,BTM的RXD要與K60的TXD連接,K60的RXD要與BTM的TXD連接。藍(lán)牙從機(jī)接上K60后,LED燈常亮,表示藍(lán)牙連接狀態(tài),閃爍表示沒(méi)有藍(lán)牙連接。通過(guò)手機(jī)APP界面的藍(lán)牙端發(fā)送指令,從機(jī)接收信號(hào)指令傳到K60,就可以進(jìn)行運(yùn)動(dòng)處理,藍(lán)牙接口正確通訊連接見(jiàn)圖4。
2.4電機(jī)驅(qū)動(dòng)模塊
機(jī)器人小車(chē)采用兩個(gè)直流電機(jī)進(jìn)行差速運(yùn)動(dòng),電機(jī)驅(qū)動(dòng)模塊是典型的H橋電路,工作原理見(jiàn)圖5。
它是由四個(gè)三級(jí)管和四個(gè)二極管組成的控制電路,由于它的形狀酷似字母H,所以電路得名“H橋驅(qū)動(dòng)電路”。要使電機(jī)運(yùn)轉(zhuǎn),必須使對(duì)角線上的一對(duì)三極管導(dǎo)通。假設(shè)當(dāng)Q1管和Q4管導(dǎo)通時(shí),電流就從電源正極經(jīng)Q1從左至右穿過(guò)電機(jī),然后再經(jīng)Q4回到電源負(fù)極,該流向的電流將驅(qū)動(dòng)電機(jī)往某一方向轉(zhuǎn)動(dòng);當(dāng)三極管Q2和Q3導(dǎo)通時(shí),電流將從右至左流過(guò)電機(jī),從而驅(qū)動(dòng)電機(jī)沿另一方向轉(zhuǎn)動(dòng),實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)。
根據(jù)H橋驅(qū)動(dòng)電路,合理設(shè)計(jì)機(jī)器人小車(chē)電機(jī)驅(qū)動(dòng)模塊,采用IRF3205共8個(gè)MOS管組成兩個(gè)電機(jī)的驅(qū)動(dòng)電路,更好的實(shí)現(xiàn)電流、電壓的可逆,使小車(chē)更加穩(wěn)定運(yùn)動(dòng)。雙電機(jī)驅(qū)動(dòng)模塊接口原理圖見(jiàn)圖6,電機(jī)驅(qū)動(dòng)電路見(jiàn)圖7。
2.5電源模塊
電機(jī)驅(qū)動(dòng)模塊需要5V電源,利用LM1117-5穩(wěn)壓芯片將來(lái)自外部7.2V的鎳鎘電池穩(wěn)壓成5V。同理利用L6932芯片,采用多電容濾波,使穩(wěn)壓后的3.3V電源更加穩(wěn)定。圖8所示是5V和3.3V穩(wěn)壓電路原理圖。
三、軟件設(shè)計(jì)實(shí)現(xiàn)
1.系統(tǒng)流程圖
本設(shè)計(jì)的系統(tǒng)流程圖見(jiàn)圖9,包含主程序流程圖及串口中斷服務(wù)函數(shù)。實(shí)現(xiàn)藍(lán)牙接收手機(jī)端發(fā)送過(guò)來(lái)的指令送給單片機(jī)進(jìn)行處理,控制機(jī)器人小車(chē)運(yùn)動(dòng),并實(shí)現(xiàn)自動(dòng)避障功能,使機(jī)器人小車(chē)穩(wěn)定運(yùn)動(dòng)。利用IAR軟件編程,燒寫(xiě)程序進(jìn)入K60單片機(jī)。整個(gè)設(shè)計(jì)涉及到藍(lán)牙模塊的設(shè)置,電機(jī)驅(qū)動(dòng)輸出頻率的控制,以及串口中斷服務(wù)函數(shù)設(shè)計(jì)。
2.電機(jī)驅(qū)動(dòng)PWM控制
在K60單片機(jī)中,利用FTM產(chǎn)生PWM來(lái)控制電機(jī)輸出占空比,從而使電機(jī)能夠進(jìn)行差速,進(jìn)而達(dá)到轉(zhuǎn)向的目的。程序中利用FTM_PWM_Duty()函數(shù),來(lái)控制FTM產(chǎn)生PWM調(diào)制波進(jìn)而產(chǎn)生不同占空比。電機(jī)驅(qū)動(dòng)程序如下:
void Moto_Forward//前進(jìn)
{FTM_PWM_Duty(FTM0, FTM_CH0,500);
FTM_PWM_Duty(FTM0, FTM_CH1,0);
FTM_PWM_Duty(FTM0, FTM_CH2,500);
FTM_PWM_Duty(FTM0, FTM_CH3,0);}
void Moto_Backward()//后退
{
FTM_PWM_Duty(FTM0, FTM_CH0,0);
FTM_PWM_Duty(FTM0, FTM_CH1,500);
FTM_PWM_Duty(FTM0, FTM_CH2,0);
FTM_PWM_Duty(FTM0, FTM_CH3,500);}
void Moto_TurnLeft()//左轉(zhuǎn)
{FTM_PWM_Duty(FTM0, FTM_CH0,0);
FTM_PWM_Duty(FTM0, FTM_CH1,0);
FTM_PWM_Duty(FTM0, FTM_CH2,0);
FTM_PWM_Duty(FTM0, FTM_CH3, 500);
}
void Moto_TurnRight()//右轉(zhuǎn)
{FTM_PWM_Duty(FTM0, FTM_CH0,500);
FTM_PWM_Duty(FTM0, FTM_CH1,0);
FTM_PWM_Duty(FTM0, FTM_CH2,0);
FTM_PWM_Duty(FTM0, FTM_CH3,0);}
3.USART串口中斷服務(wù)函數(shù)
通過(guò)打開(kāi)串口接收中斷,進(jìn)入中斷,執(zhí)行UART4中斷服務(wù)函數(shù),根據(jù)串口接收到的不同字符“E”、“A”、“B”、“C”、“D”在UART4中斷服務(wù)函數(shù)中執(zhí)行不同的電機(jī)驅(qū)動(dòng)函數(shù),從而控制藍(lán)牙小車(chē)的運(yùn)動(dòng)。
void UART4_IRQHandler(void)
{char Buffer;
if(UART_Query(UART4)!= 0) //查詢是否接收到數(shù)據(jù)
{Buffer = UART_Get_Char(UART4);
switch(Buffer)
{case ‘E:
Moto_Stop();//停止
break;
case ‘A:
Moto_Forward();//前進(jìn)
break;
case ‘B:
Moto_Backward();//后退
break;
case ‘C:
Moto_TurnLeft();//左轉(zhuǎn)
break;
case ‘D:
Moto_TurnRight();//右轉(zhuǎn)
break;}}}
四、機(jī)器人小車(chē)的調(diào)試
整個(gè)機(jī)器人系統(tǒng)安裝完成后,逐個(gè)模塊調(diào)試,最后組合各個(gè)模塊系統(tǒng)統(tǒng)一調(diào)試。在下載調(diào)試K60時(shí),需要用到J-Link驅(qū)動(dòng)程序,安裝完驅(qū)動(dòng),根據(jù)K60的型號(hào),在驅(qū)動(dòng)中進(jìn)行相應(yīng)的設(shè)置。之后再在IAR開(kāi)發(fā)環(huán)境中進(jìn)行程序的燒寫(xiě)。在工程中設(shè)置對(duì)應(yīng)的K60型號(hào),之后就可以編譯,下載,調(diào)試。通過(guò)K60的電機(jī)PWM接口傳送給電機(jī)模塊不同的頻率,這時(shí)用示波器測(cè)量頻率波形是否正常,其占空比是否達(dá)到預(yù)期,這樣可以避免接入電機(jī)模塊后,燒壞電機(jī)。利用手機(jī)APP藍(lán)牙開(kāi)發(fā)界面,在手機(jī)上發(fā)送“前進(jìn)”、“后退”、“左轉(zhuǎn)”、“右轉(zhuǎn)”的指令就能控制機(jī)器人小車(chē)運(yùn)動(dòng)。
根據(jù)以下步驟完成硬件的調(diào)試:第一,檢查對(duì)應(yīng)模塊的原理圖接線是否正確;第二,檢查原理圖與所用器件的引腳是否吻合,進(jìn)而排除邏輯上的錯(cuò)誤;第三,用萬(wàn)用表檢查是否出現(xiàn)虛焊,短路或者開(kāi)路的現(xiàn)象,進(jìn)而排除線路的問(wèn)題和電源的故障情況;第四,利用IAR在下載調(diào)試K60過(guò)程中,最容易出現(xiàn)下載不了的情況,這時(shí)要注意Jlink的接線是否反,查看驅(qū)動(dòng)Jlink固件有沒(méi)有解鎖。
五、小結(jié)
本項(xiàng)目設(shè)計(jì)并建立了一個(gè)可遠(yuǎn)程控制的智能機(jī)器人監(jiān)控系統(tǒng),對(duì)此系統(tǒng)進(jìn)行試驗(yàn)證明:能夠遠(yuǎn)程控制機(jī)器人行走,并可實(shí)時(shí)的獲得機(jī)器人所在區(qū)域的監(jiān)控錄像,無(wú)人操控時(shí)具有自動(dòng)避障功能,各個(gè)功能模塊正常工作,達(dá)到了預(yù)期效果。
參考文獻(xiàn)
[1]韓國(guó)棟.AltiumDesignerWinter09電路設(shè)計(jì)入門(mén)與提高[M].北京:化學(xué)工業(yè)出版社,2010:21-27.
[2]張興.電力電子技術(shù)[M].北京:科學(xué)出版社,2010:58-77.
[3]于少東.基于K60的智能車(chē)控制系統(tǒng)設(shè)計(jì)[J].四川理工學(xué)院學(xué)報(bào)(自然科學(xué)版).2014:27(5):1-4.
[4]周興超.可移動(dòng)檢控機(jī)器人的研究[D].遼寧:沈陽(yáng)理工大學(xué),2009.
[5]譚浩強(qiáng).C程序設(shè)計(jì)教程第2版[M].北京:清華大學(xué)出版社,2010:256-261.
[6]張偉.單片機(jī)原理及應(yīng)用[M].西安:機(jī)械工業(yè)出版社,2002:153-202.