孫亞星 王景貴 張志強
(南京理工大學(xué)工程訓(xùn)練中心 南京 210094)
電控?zé)o碳小車,又稱重力勢能驅(qū)動的自控行走越障小車,是以重力勢能作為唯一前進驅(qū)動力,通過電控裝置來實現(xiàn)賽道障礙識別、軌跡判斷及自動轉(zhuǎn)向和制動等功能[1],符合綠色、智能的現(xiàn)代機電產(chǎn)品設(shè)計理念。因此,它除了是國家級競賽(“全國大學(xué)生工程訓(xùn)練綜合能力競賽”)[2~3]的比賽項目,還可以作為高校機械、電子和自動化等相關(guān)專業(yè)高年級本科生綜合實習(xí)的課題內(nèi)容[4]。另外,作為智能避障小車的一種,還可以應(yīng)用于物流運輸、室內(nèi)清潔和安全風(fēng)險檢測的場合[4]。
電控?zé)o碳小車,實物如圖1所示。它采用三輪結(jié)構(gòu),其中右下部的小輪為轉(zhuǎn)向輪,由轉(zhuǎn)向舵機來控制轉(zhuǎn)向,另外兩輪為行進輪(驅(qū)動輪)。車輛行駛能量由車輛上方懸掛的1kg重物的重力勢能提供。電控?zé)o碳小車的機械系統(tǒng)應(yīng)當(dāng)包括傳動部分、驅(qū)動部分、轉(zhuǎn)向部分及剎車部分等[5~6]。
圖1 電控?zé)o碳小車示意圖
控制系統(tǒng)基本原理如圖2所示。距離傳感器(超聲波模塊HC-SR04和紅外測距模塊GP2Y0A21K0FK0F組合)感知賽道中障礙墻的位置信息,并將這些信息輸入到單片機STC12C5A60S2,單片機處理后,給轉(zhuǎn)向舵機MG996R發(fā)出控制命令,引導(dǎo)小車在賽道中障礙墻之間穩(wěn)定前進。同樣,姿態(tài)傳感器MPU-6050感知小車在賽道上的姿態(tài)信息,判斷是否處于下坡狀態(tài),并給剎車舵機MG996R發(fā)出控制命令。
圖2 控制系統(tǒng)結(jié)構(gòu)圖
因此,本文所設(shè)計控制系統(tǒng)應(yīng)該包括:電源模塊(LM7805)、STC12C5A60S2單片機最小系統(tǒng)模塊、傳感器組合(超聲波模塊HC-SR04、紅外測距模塊GP2Y0A21K0FK0F與姿態(tài)傳感器MPU-6050)和舵機組合(轉(zhuǎn)向舵機與剎車舵機)等。
本文控制系統(tǒng)選用STC12C5A60S2單片機[7-9]。STC12C5A60S2單片機,是高速/低功耗超強抗干擾的新一代8051單片機。它具有以下標(biāo)準(zhǔn)功能:8 Kbyte Flash——允許程序存儲器在系統(tǒng)可編程,256 byte RAM,32個I/O口線,2路PWM,4個16位定時器/計數(shù)器,8路10位ADC,一個6向量2級中斷結(jié)構(gòu),完全滿足于該系統(tǒng)的性能要求。而且,價格也比較合適。圖3給出了STC12C5A60S2單片機的最小系統(tǒng)原理圖
圖3 STC12C5A60S2單片機的最小系統(tǒng)原理圖
本文選用7.2V可充電電池作為供電電源,并通過LM7805穩(wěn)壓模塊得到穩(wěn)定的5V。LM7805穩(wěn)壓模塊的原理圖如圖4所示,它結(jié)構(gòu)簡單、穩(wěn)定可靠,但輸出電流小。經(jīng)過實測,本文選用兩套LM7805穩(wěn)壓模塊。
圖4 LM7805穩(wěn)壓模塊的原理圖
本文傳感器部分需要完成兩項工作:一是感知電控?zé)o碳小車周圍障礙墻和賽道邊界的位置情況;二是感知電控?zé)o碳小車的姿態(tài)情況(是否轉(zhuǎn)向和上下坡)。
距離傳感器可以感知電控?zé)o碳小車在賽道中的位置情況。常用的距離傳感器有超聲波模塊、激光測距模塊和紅外測距模塊等。超聲波模塊探測距離遠且不易受到干擾,但是反應(yīng)時間長。另外,在具體測試中發(fā)現(xiàn),超聲波發(fā)散角度偏大,在同一平面內(nèi)多個器件之間容易造成誤判斷。激光測距儀的定向性好,但對電源的穩(wěn)定性要求高,容易損壞。紅外測距模塊測量速度快,定向性好,但探測距離較超聲波小。
考慮障礙墻情況,參考文獻[10],本文距離傳感器選用超聲波模塊HC-SR04和紅外測距模塊GP2Y0A21K0FK0F[11]相組合的方案,以實現(xiàn)優(yōu)勢互補,提升電控?zé)o碳小車避障成功率。距離傳感器組合的布局圖,如圖5所示,在電控?zé)o碳小車車身的正前方安裝一個超聲波模塊和兩個紅外測距模塊,在車身正左方和正右方都安裝一個超聲波模塊。超聲波的原理簡單[4],單片機STC12C5A60S2通過定時器來測量高電平的持續(xù)時間,進而得到距離值。紅外測距模塊GP2Y0A21K0FK0F是模擬量輸出,由STC12C5A60S2單片機自帶的ADC進行采樣。
距離傳感器如此配置,主要是基于兩方面考慮:電控?zé)o碳小車行駛車速比較慢,超聲波模塊的響應(yīng)速度能夠滿足要求,同時,考慮到超聲波模塊的發(fā)散性,因此在正前方、正左方和正右方分別只選用一個超聲波傳感器;車頭是距離信息采集的主要部位,要考慮障礙墻的多種擺放形式,保證信息采集的全面性,故而在正前方增加了兩個紅外測距模塊。
圖5 距離傳感器的布局圖
感知小車的姿態(tài),需要使用到姿態(tài)傳感器。在本文設(shè)計中,選用MPU-6050模塊[4]。該模塊,又稱三軸陀螺儀+三軸加速器,用于測量三個軸的角度、角速度和加速度,進而判斷小車是否轉(zhuǎn)向和處于上下坡階段。本文使用SDA及SCL端口(I2C總線接口)和單片機STC12C5A60S2進行通信。
本文使用舵機來實現(xiàn)電控?zé)o碳小車的轉(zhuǎn)向和剎車功能。舵機是一種位置(角度)伺服的驅(qū)動器,主要由直流電機和齒輪組成。它精度高,控制方便,適用于需要角度不斷變化并要求保持的控制系統(tǒng)。舵機的控制原理簡單,由PWM波進行控制[4]。PWM波的周期一般是20ms,高電平部分一般在0.5ms~2.5ms范圍內(nèi)變化,對應(yīng)于不同的舵機轉(zhuǎn)角。舵機型號為MG996R,它價格低廉,卻能夠滿足系統(tǒng)的強度和響應(yīng)需求。單片機STC12C5A60S2可以通過軟件延時法、硬件定時器法和硬件PWM模塊法等來產(chǎn)生PWM波,本文采用單片機自帶的兩路PWM進行控制。
控制系統(tǒng)的軟件功能主要包括:定時任務(wù)模塊、直線道避障模塊、半圓道避障模塊和直線道下坡模塊等,如圖6所示。
定時任務(wù)模塊,主要是采用30ms的定時中斷來采集(定時更新)傳感器數(shù)據(jù),包括超聲波模塊、紅外測距模塊和姿態(tài)傳感器MPU-6050模塊。
本文考慮直線道和半圓道兩種情況下的避障,由直線道避障模塊和半圓道避障模塊實現(xiàn)。基本原理是,根據(jù)定時更新的傳感器數(shù)據(jù),對位置信息進行判斷處理,單片機STC12C5A60S2再將相應(yīng)的PWM控制信號發(fā)送給舵機模塊,從而達到賽道障礙檢測和自動轉(zhuǎn)向功能。
直線道上下坡模塊,主要是根據(jù)姿態(tài)傳感器MPU-6050模塊的數(shù)據(jù),判斷出小車是否處于下坡狀態(tài),進而決定是否啟動剎車功能。
圖6 控制系統(tǒng)軟件流程圖
考慮STC12C5A60S2單片機的性能,結(jié)合本文任務(wù)實際,選定30ms作為傳感器信息的采樣周期。經(jīng)過實測,30ms的采樣周期,既滿足了系統(tǒng)對數(shù)據(jù)的更新速度要求,也沒有打斷系統(tǒng)軟件的整體運行。
紅外測距模塊GP2Y0A21K0FK0F的信息,是通過STC12C5A60S2單片機內(nèi)置的ADC轉(zhuǎn)換端口對傳感器輸出的模擬量進行A/D采樣來獲取的。為了減小噪聲干擾和測量誤差的影響,本文采用滑動窗口均值算法[12]來處理。主要思路是將最近5次的每隔30 ms的采樣數(shù)據(jù)平均值作為本次數(shù)據(jù)獲取值。
姿態(tài)傳感器MPU-6050模塊的與MCU的通信方式很多,支持I2C協(xié)議。I2C通信,具有速度快,穩(wěn)定可靠等特點。雖說STC12C5A60S2單片機不具備I2C通信硬件模塊,但可以通過普通I/O口來模擬I2C通信的時序。因此,30ms定時器中斷服務(wù)程序,通過I2C協(xié)議來讀取小車的姿態(tài)信息。
本文針對直線道和半圓道兩種情況下的避障,提出了以沿邊直行(PID)為基礎(chǔ)模塊的避障算法。PID控制算法,是目前控制系統(tǒng)中應(yīng)用最廣泛的控制算法之一[13~15]。本文設(shè)計中,沿邊直行(PID)主要是由左/右PID直行操作來實現(xiàn),主要思路是,將小車距離賽道邊沿的距離作為目標(biāo),通過使用PID算法,來控制舵機運動的PWM波輸出,實現(xiàn)小車沿賽道邊沿直行。
需要說明的是,半圓形賽道避障,可以通過執(zhí)行左/右PID直行程序?qū)崿F(xiàn)。
如圖7,考慮小車當(dāng)前位于左邊的情形,根據(jù)小車左超聲波模塊的位置信息,執(zhí)行左PID直行。當(dāng)小車運動到距離障礙墻50cm的位置,執(zhí)行右轉(zhuǎn)90°操作,然后執(zhí)行左PID直行(以障礙墻為基準(zhǔn)),當(dāng)檢測到小車距離直線段賽道右側(cè)為50cm時,執(zhí)行左轉(zhuǎn)90°操作,再執(zhí)行右PID直行(以直線段賽道右側(cè)為基準(zhǔn))。當(dāng)然,小車起始位于右邊時,整個流程類似。
該避障算法,是依據(jù)賽道特征(邊沿為10cm的擋板)而提出的,它以沿邊直行(PID)為基礎(chǔ)模塊,并對整個避障過程進行了流程設(shè)計。
圖7 直線道避障算法示意圖
在圖8賽道上進行了測試。該賽道由兩個直線段賽道和兩個半圓形賽道組成。在賽道上間隔不等(隨機)的交錯設(shè)置多個障礙墻。直線段賽道段上設(shè)置有一段坡道,坡道由上坡道、坡頂平道和下坡道組成。
圖8 賽道示意圖
經(jīng)過實測,本文設(shè)計的控制系統(tǒng)能夠滿足所要求的障礙識別、軌跡判斷及自動轉(zhuǎn)向和制動等功能。
具體來說,在隨機擺放10個障礙墻的情況下,所設(shè)計的電控?zé)o碳小車可以跑到35m左右。這其中包括穩(wěn)定可靠的上下坡過程,未發(fā)現(xiàn)翻車現(xiàn)象;也包括直線道和半圓道的隨機避障、自動轉(zhuǎn)向和路徑規(guī)劃等。
另外,所選用的超聲波模塊和紅外測距模塊組合方案,能夠準(zhǔn)確有效地發(fā)現(xiàn)障礙墻,避免了單獨使用超聲波模塊時的漫反射效應(yīng)以及單獨使用紅外測距模塊視距小的問題。紅外測距模塊能夠獲取數(shù)據(jù),經(jīng)過濾波處理后的數(shù)據(jù)能夠滿足要求。該方案可以推廣到其他類型的智能避障小車設(shè)計上。
可喜的是,在江蘇省大學(xué)生工程訓(xùn)練綜合能力競賽中,獲得了一等獎的好成績。另外,該控制系統(tǒng)的結(jié)構(gòu)簡單,焊接與調(diào)試方便,目前已經(jīng)被我?!白抗ぁ庇媱澋摹稒C械工程綜合實習(xí)》所采用。
本文所設(shè)計的電控?zé)o碳小車控制系統(tǒng),以STC12C5A60S2單片機為核心,使用超聲波模塊和紅外測距模塊的組合作為距離傳感器,姿態(tài)傳感器MPU-6050模塊來感知小車姿態(tài),舵機MG996R為執(zhí)行機構(gòu)。并根據(jù)賽道的實際情況,設(shè)計了一套以沿邊直行(PID)為基本模塊的避障程序,能夠適用于直線道和半圓道兩種情況的避障。經(jīng)過實測,該控制系統(tǒng)能夠滿足所要求的障礙識別、軌跡判斷及自動轉(zhuǎn)向和制動功能。所采用的超聲波模塊和紅外測距模塊的組合能夠互為補充,提高了避障功能的可靠性。