黃 旋 陳光明 趙 潮
(1南京農(nóng)業(yè)大學(xué)工學(xué)院,南京,210031;2 南京云岸信息科技有限公司,南京,211800)
隨著科技的發(fā)展,機(jī)器人在一定程度上能幫助人們處理一些重復(fù)繁瑣的工作,尤其近幾年機(jī)器人行業(yè)的熱門興起,機(jī)器人正變得無處不在。隨著技術(shù)越來越成熟,機(jī)器人擁有著較強(qiáng)的能力和極好的魯棒性,且國(guó)家科學(xué)技術(shù)部已出臺(tái)《服務(wù)機(jī)器人科技發(fā)展“十二五”專項(xiàng)規(guī)劃》,要求重點(diǎn)培育和發(fā)展服務(wù)機(jī)器人新興產(chǎn)業(yè)[1]。
在這一服務(wù)機(jī)器人發(fā)展浪潮下,本文設(shè)計(jì)了一款基于STM32的服務(wù)機(jī)器人的樣機(jī),通過選用Visual Studio 2015軟件編寫服務(wù)機(jī)器人調(diào)試軟件作為上位機(jī),再以STM32單片機(jī)為核心作為下位機(jī),在基于μC/OS-Ⅲ實(shí)時(shí)嵌入式操作系統(tǒng)的基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了服務(wù)機(jī)器人的硬件電路,編寫了驅(qū)動(dòng)程序,操作人員通過操作上位機(jī)服務(wù)機(jī)器人調(diào)試軟件即可發(fā)送命令傳至下位機(jī)中,下位機(jī)再控制運(yùn)動(dòng)執(zhí)行機(jī)構(gòu),使得服務(wù)機(jī)器人實(shí)現(xiàn)行走、旋轉(zhuǎn)、頭手部轉(zhuǎn)動(dòng)等功能。
服務(wù)機(jī)器人的外觀造型設(shè)計(jì)如圖1所示,為使機(jī)器人具有更強(qiáng)的互動(dòng)性,其頭部和手部均有一定的活動(dòng)空間,機(jī)器人主要參數(shù)如表1所示。
圖1 服務(wù)機(jī)器人外觀造型
表1 服務(wù)機(jī)器人主要參數(shù)
服務(wù)機(jī)器人頭部和手部選用帶有自鎖功能的直流蝸輪蝸桿減速電機(jī)進(jìn)行控制,電機(jī)布置如圖2所示,目的是防止突然斷電時(shí)手臂和頭部突然下落對(duì)元器件造成損傷,蝸輪蝸桿減速電機(jī)主要參數(shù)如表2所示。
圖2 蝸輪蝸桿減速電機(jī)布置
表2 蝸輪蝸桿電機(jī)主要技術(shù)參數(shù)
服務(wù)機(jī)器人內(nèi)部結(jié)構(gòu)如圖3所示,為使機(jī)器人能在工作環(huán)境中無約束地移動(dòng),其驅(qū)動(dòng)底盤采用雙驅(qū)動(dòng)輪差速驅(qū)動(dòng),直流電機(jī)主要參數(shù)如表3所示。
圖3 服務(wù)機(jī)器人內(nèi)部結(jié)構(gòu)
表3 底盤直流電機(jī)主要技術(shù)參數(shù)
服務(wù)機(jī)器人硬件電路中需要3種類型電壓,分別是編碼器5V、STM32單片機(jī)3.3V、電機(jī)驅(qū)動(dòng)模塊12V。
5V電壓轉(zhuǎn)換電路如圖4所示,本文選用可固定輸出5V電壓的LM2576芯片,該芯片只需4個(gè)外接元件,可以使用通用的標(biāo)準(zhǔn)電感,簡(jiǎn)化了開關(guān)電源電路的設(shè)計(jì)[2]。
圖4中,Vin表示芯片的輸入電壓;Vbat表示STM32單片機(jī)中監(jiān)控電池電壓的引腳;ON/OFF表示芯片控制引腳,高電平有效;FB為Feedback縮寫,表示芯片的反饋端引腳;Vout表示芯片的穩(wěn)壓輸出端。
圖4 5V電源轉(zhuǎn)換電路
STM32單片機(jī)工作電壓為3.3V,本文選用LM1117電壓轉(zhuǎn)換芯片實(shí)現(xiàn)3.3V電壓的轉(zhuǎn)換,若輸入電壓和輸出電壓的壓差太大會(huì)導(dǎo)致芯片嚴(yán)重發(fā)熱,因此輸入電壓選擇5V,同時(shí)在輸入輸出端兩側(cè)都添加電容抗干擾,如圖5所示。
圖5 3.3V電源轉(zhuǎn)換電路
12V電源的轉(zhuǎn)換同樣選用LM2576芯片進(jìn)行,轉(zhuǎn)換電路如圖6所示。
圖6 12V電源轉(zhuǎn)換電路
STM32的最小系統(tǒng)由電源電路、晶振電路、JTAG下載調(diào)試電路、復(fù)位電路、BOOT啟動(dòng)電路5部分組成。
1)電源電路。STM32單片機(jī)的工作電壓由3.3V轉(zhuǎn)換電路提供。但3.3V電源接入單片機(jī)中需要進(jìn)行濾波,其主要作用是濾除外界輻射的高頻干擾和濾除單片機(jī)工作時(shí)自身產(chǎn)生的脈沖干擾。
圖7 電源濾波電路
2)晶振電路。如圖8所示,晶振的作用是為單片機(jī)最小系統(tǒng)提供最基本的時(shí)鐘信號(hào),選用8MHz的晶振是方便倍頻,各外設(shè)模塊使用的不同的系統(tǒng)時(shí)鐘可以通過調(diào)整鎖相環(huán)PLL實(shí)現(xiàn)。
圖8 晶振電路
3)JTAG(Joint Test Action Group,聯(lián)合測(cè)試行為組織)下載調(diào)試電路和復(fù)位電路。 JTAG主要應(yīng)用于電路的邊界掃描測(cè)試和可編程芯片的在線系統(tǒng)編程。本文采用標(biāo)準(zhǔn)的4線的JTAG,外加一個(gè)復(fù)位線,用于燒錄程序時(shí)的復(fù)位,如圖9所示。圖9中,各引腳的功能分別為:JTMS為測(cè)試模式選擇;JTCK為測(cè)試時(shí)鐘輸入;JTDI為測(cè)試數(shù)據(jù)輸入;JTDO為測(cè)試數(shù)據(jù)輸出;JTRST為測(cè)試復(fù)位,低電平有效;NRST為STM32單片機(jī)上的復(fù)位引腳。服務(wù)機(jī)器人選擇的方式為上電復(fù)位,NRST連接至單片機(jī)復(fù)位引腳,在電源主開關(guān)開啟時(shí),單片機(jī)上電瞬間,電容充電,NRST出現(xiàn)短暫的低電平,單片機(jī)接收到低電平信號(hào)產(chǎn)生復(fù)位操作。
圖9 JTAG下載電路和復(fù)位電路
4)BOOT啟動(dòng)電路。STM32單片機(jī)有3種啟動(dòng)模式,如表4所示,其中,“0”表示引腳設(shè)置為低電平,“1”表示引腳設(shè)置為高電平,“x”代表引腳可設(shè)置為低電平或高電平。本文選擇從主閃存存儲(chǔ)器啟動(dòng),當(dāng)啟動(dòng)時(shí)直接運(yùn)行燒錄在主閃存存儲(chǔ)器中的程序,因此通過下拉電阻將BOOT0引腳和BOOT1引腳設(shè)置為低電平,如圖10所示。
表4 啟動(dòng)模式
圖10 BOOT電路
電機(jī)的驅(qū)動(dòng)采用4個(gè)IRFS3607 NMOSFET組成最常見的H橋驅(qū)動(dòng)電路,2個(gè)半橋電路組成1個(gè)H橋驅(qū)動(dòng)電路,其中半橋驅(qū)動(dòng)電路如圖11所示,選用型號(hào)為IR2104的半橋驅(qū)動(dòng)器芯片,其帶有Shutdown引腳(SD),用于接收低電平信號(hào)切斷輸出,可使用軟件實(shí)現(xiàn)關(guān)閉控制功能,即實(shí)現(xiàn)軟關(guān)斷,同時(shí)也用于硬件上的過流過壓保護(hù)。
圖11 半橋驅(qū)動(dòng)電路
服務(wù)機(jī)器人上位機(jī)與下位機(jī)之間采用RS232串口通信,選用SP3232EEA芯片進(jìn)行232電平與TTL電平信號(hào)的轉(zhuǎn)換。串口通信原理圖如圖12所示,主控制板上設(shè)有DB9接口,通過串口線與上位機(jī)相連。
圖12 串口通信原理圖
本文利用Altium Designer 16軟件完成各模塊電路的排布,將主控制板設(shè)計(jì)成雙層板。主控制板實(shí)物圖如圖13所示,左上角為控制電路,電機(jī)驅(qū)動(dòng)電路順序排布在兩側(cè),側(cè)邊留出電機(jī)接口。
圖13 主控制板
服務(wù)機(jī)器人下位機(jī)軟件設(shè)計(jì)是基于移植的開源嵌入式操作系統(tǒng)μC/OS-Ⅲ的基礎(chǔ)上實(shí)現(xiàn)的,各硬件模塊部分程序規(guī)劃如圖14所示,通過編寫各部分驅(qū)動(dòng)程序即能實(shí)現(xiàn)服務(wù)機(jī)器人的行走、轉(zhuǎn)彎、點(diǎn)頭、搖頭、揮手和組合動(dòng)作等功能。
圖14 下位機(jī)驅(qū)動(dòng)程序規(guī)劃
PID控制是將比例、積分和微分控制整合到一個(gè)控制器中,是一個(gè)非常普遍的控制策略,對(duì)過程控制系統(tǒng)尤為有用。增量式PID是對(duì)某一時(shí)刻控制量的增量進(jìn)行調(diào)節(jié),不需要做誤差的累加,計(jì)算偏差的影響較小,在實(shí)際中得到廣泛應(yīng)用[3-4],其表示公式如式(1)所示,本設(shè)計(jì)中采用增量式PID控制直流電機(jī)。
如圖15所示,服務(wù)機(jī)器人中的電機(jī)控制需定義PID參數(shù),通過整定3個(gè)參數(shù)控制機(jī)器人是否能平順運(yùn)行。此外,電機(jī)運(yùn)行需讀取電機(jī)的編碼器脈沖數(shù)進(jìn)行PWM閉環(huán)控制,本文采用STM32單片機(jī)定時(shí)器中的正交編碼器功能進(jìn)行編碼器數(shù)據(jù)采集,其計(jì)數(shù)模式如圖16所示。
圖15 直流電機(jī)控制流程圖
圖16 編碼器計(jì)數(shù)模式
設(shè)置定時(shí)器TIMx的CH1和CH2通道為正交編碼器模式,通過對(duì)兩個(gè)通道信號(hào)的的上升沿捕獲,可用于編碼器脈沖計(jì)數(shù),通過定時(shí)讀取計(jì)數(shù)器數(shù)值即可獲得電機(jī)當(dāng)前轉(zhuǎn)速[5]。
上位機(jī)調(diào)試軟件主要包含左右驅(qū)動(dòng)輪調(diào)速模塊、頭部手部控制模塊、串口模塊、綜合控制模塊、指令顯示模塊等,操作人員通過人機(jī)交互界面各模塊按鍵即可進(jìn)行各項(xiàng)操作,調(diào)試軟件的結(jié)構(gòu)框圖如圖17所示。
通過對(duì)調(diào)試軟件的規(guī)劃可將上位機(jī)調(diào)試軟件的開發(fā)分為3部分:人機(jī)交互界面的制作、編寫按鍵代碼、串口通信的讀寫,3個(gè)部分的程序編寫均在Visual Studio 2015軟件中進(jìn)行,上位機(jī)調(diào)試軟件最終界面如圖18所示。
圖18 上位機(jī)調(diào)試軟件界面
直線行駛實(shí)驗(yàn)中給定行駛距離為4m,考慮到服務(wù)機(jī)器人一般應(yīng)用在人員較多、環(huán)境復(fù)雜的區(qū)域中,其速度不宜太快,因此指定電機(jī)轉(zhuǎn)速為45r/min,即服務(wù)機(jī)器人行駛速度為0.3m/s,實(shí)驗(yàn)現(xiàn)場(chǎng)和實(shí)驗(yàn)過程如圖19所示,地面上設(shè)有地標(biāo),總長(zhǎng)為4m。
圖19 直線行駛實(shí)驗(yàn)
直線行駛的加速度—時(shí)間曲線如圖20所示,服務(wù)機(jī)器人準(zhǔn)確到達(dá)目標(biāo)位置的整個(gè)運(yùn)行過程時(shí)間大約為15s,但在運(yùn)行過程中加速度變化較大,PID參數(shù)可繼續(xù)優(yōu)化。
圖20 直線行走加速度曲線
服務(wù)機(jī)器人的組合動(dòng)作實(shí)驗(yàn)是驗(yàn)證其頭部和手臂同時(shí)運(yùn)動(dòng)的效果,如點(diǎn)頭加左臂揮舞、搖頭加右臂揮舞、點(diǎn)頭加雙臂揮舞,點(diǎn)頭加搖頭加雙臂揮舞等,本實(shí)驗(yàn)以搖頭加點(diǎn)頭加雙臂揮舞為例進(jìn)行分析,其余組合動(dòng)作可參考。
實(shí)驗(yàn)過程如圖21所示。
a為服務(wù)機(jī)器人初始狀態(tài);
b為服務(wù)機(jī)器人開始搖頭動(dòng)作;
c為服務(wù)機(jī)器人開始點(diǎn)頭動(dòng)作,同時(shí)雙臂開始向上揮舞,且搖頭動(dòng)作繼續(xù)進(jìn)行;
d為雙臂向上揮動(dòng)動(dòng)作完成,雙臂開始向下?lián)]動(dòng)復(fù)位,同時(shí)搖頭與點(diǎn)頭動(dòng)作繼續(xù)進(jìn)行;
e為雙臂復(fù)位完成,頭部搖頭和點(diǎn)頭運(yùn)動(dòng)完成,服務(wù)機(jī)器人回到初始位置。
圖21 搖頭加點(diǎn)頭加雙臂揮舞實(shí)驗(yàn)
本文為服務(wù)機(jī)器人提供了一種設(shè)計(jì)方案,選用STM32單片機(jī)作為下位機(jī)控制核心,圍繞該單片機(jī)實(shí)現(xiàn)了硬件電路的設(shè)計(jì),基于開源嵌入式操作系統(tǒng)μC/OS-Ⅲ的基礎(chǔ)上實(shí)現(xiàn)了電機(jī)的增量式PID閉環(huán)控制,最終實(shí)驗(yàn)結(jié)果表明服務(wù)機(jī)器人具有較好的控制效果,為服務(wù)機(jī)器人在室內(nèi)大廳的應(yīng)用奠定了基礎(chǔ)。