曹維杰 劉海 閔文彥 丁樹凱 粟子恒 李會



摘 要:本文設(shè)計(jì)了一套以S9KEA128單片機(jī)為主控的模擬灰度循跡智能車系統(tǒng)。針對一般智能車采用按鍵控制式啟動,本文采用非接觸式啟動智能車設(shè)計(jì),將E18-D80NK作為控制信號的采集裝置。本文介紹了差速控制、電機(jī)PWM調(diào)速、循跡模塊的設(shè)計(jì)、非接觸式啟動的設(shè)計(jì)、指定圈數(shù)自動停止的設(shè)計(jì)等。經(jīng)試驗(yàn)驗(yàn)證,該智能車可以自主完成鋪設(shè)有直角彎、U型彎、梯形樓梯、雙駝峰、懸崖等元素的賽道,并且速度不低于2m/s,循跡效果可靠穩(wěn)定,而且提升空間較大。
關(guān)鍵詞:單片機(jī);智能車;模擬灰度循跡算法;差速控制;電機(jī)PWM調(diào)速
中圖分類號:TP23;TP368.12 文獻(xiàn)標(biāo)識碼:A 文章編號:1003-5168(2019)14-0041-04
Intelligent Tracking Car of Gray Sensor Based
on Single Chip Microcomputer
CAO Weijie LIU Hai MIN Wenyan DING Shukai SU Ziheng LI Hui
(Nanjing Tech University Pujiang Institute,Nanjing Jiangsu 211100)
Abstract: A set of simulated gray-scale tracking intelligent vehicle system was designed, which was controlled by S9KEA128 single-chip computer. Aiming at the general intelligent vehicle using button-controlled startup, this paper adopted the non-contact startup intelligent vehicle design, using E18-D80NK as the acquisition device of control signal. This paper introduced the differential control, motor PWM speed regulation, the design of tracking module, the design of non-contact start, the design of automatic stop of specified number of cycles, etc. Experiments show that the intelligent vehicle can pave the track with right-angle bend, U-shaped bend, trapezoidal staircase, double hump, cliff and other elements independently, and the speed is not less than 2m/s. The tracing effect is reliable and stable, and the lifting space is large.
Keywords: MCU;intelligent vehicle;simulated gray track algorithm;differential control;motor PWM speed regulation
1 研究背景
智能循跡小車制作已成為目前電子競賽中的一個熱門項(xiàng)目[1-3]。傳統(tǒng)比賽規(guī)定,小車需沿著地面具備明顯對比度的白色引導(dǎo)線前行,且在不經(jīng)意偏離引導(dǎo)線時(shí)還能自動回正,競賽的成績由到達(dá)終點(diǎn)的時(shí)間與循跡效果所決定,偏離引導(dǎo)線次數(shù)越少,完成賽道所耗時(shí)間越短,成績就越好。
本設(shè)計(jì)采用32位微控制器S9KEA128作為主控,以用作路面信息監(jiān)測、電機(jī)控制和輸入信號處理,4個直流減速電機(jī)作為主驅(qū)動,與相應(yīng)的電源電路、下載電路、路徑檢測電路和循跡電路構(gòu)成整體電路。本設(shè)計(jì)采用模擬灰度傳感器(以下稱循跡模塊)實(shí)現(xiàn)自動循跡功能,其由若干組光敏二極管和發(fā)光二極管組成。信號經(jīng)過放大整流后輸入微控制器ADC模塊進(jìn)行數(shù)字化處理,之后由程序?qū)?shù)據(jù)進(jìn)行處理,解算出路徑偏差。微控制器利用此路徑偏差值控制電機(jī)差速轉(zhuǎn)向,進(jìn)而實(shí)現(xiàn)智能車沿著引導(dǎo)線的偏轉(zhuǎn)方向轉(zhuǎn)向[4,5]。在程序設(shè)計(jì)方面,本設(shè)計(jì)采用C51語言編程[6],旨在設(shè)計(jì)出一套智能循跡系統(tǒng)。本文涉及的核心為模擬灰度傳感器循跡技術(shù)、非接觸式啟動、指定圈數(shù)自動停止的硬件及程序設(shè)計(jì),其中所提出的解決方案來源于反復(fù)測試,試驗(yàn)結(jié)果可靠。
2 智能車機(jī)械設(shè)計(jì)
小車采用亞克力板作為底盤,四輪雙驅(qū),電機(jī)采用常見的微型可調(diào)速永磁直流減速電機(jī)。智能車通過一側(cè)電機(jī)正轉(zhuǎn)另一側(cè)電機(jī)反轉(zhuǎn)實(shí)現(xiàn)轉(zhuǎn)向,利用循跡模塊和兩側(cè)固定的光電傳感器采集道路信息,保證了智能車循跡的可靠性,同時(shí)實(shí)現(xiàn)了智能車運(yùn)行指定圈數(shù)后自動停止。試驗(yàn)場地如圖1所示,智能車實(shí)物如圖2所示。
3 智能車硬件設(shè)計(jì)
硬件基本框架如圖3示。
根據(jù)道路信息,集成于主控的FTM模塊產(chǎn)生兩路占空比不同的PWM波及輸出控制量,以對智能車兩側(cè)電機(jī)進(jìn)行調(diào)速和方向控制。同時(shí),智能車配備了OLED顯示模塊、貼片按鍵、撥碼開關(guān)、NRF無線模塊(藍(lán)牙模塊)、電池電壓檢測、蜂鳴器等,較好地實(shí)現(xiàn)了有線或無線的信號傳輸,同時(shí)方便程序調(diào)試[7]。
智能車其主要的硬件是循跡模塊與運(yùn)算放大器,其它硬件均易于采購,然后通過程序上的調(diào)試和適配使用方便,并無過多的硬件設(shè)計(jì)以及設(shè)計(jì)要求。因此,硬件主要分析循跡模塊與運(yùn)算放大器設(shè)計(jì)。
3.1 循跡模塊設(shè)計(jì)
循跡模塊由若干組光敏二極管和發(fā)光二極管組成,每組構(gòu)成一個光敏對管。循跡模塊進(jìn)行顏色深淺檢測的原理是:光敏電阻對不同顏色的檢測面對光的反射程序不同,其阻值變化也不同。當(dāng)發(fā)光二極管在有效的檢測距離內(nèi)發(fā)出白光并照射在檢測面時(shí),光敏二極管能對檢測面反射的部分白光進(jìn)行檢測并將其轉(zhuǎn)化成智能車能識別的信號。對于模擬量型的灰度傳感器,返回的信號是電壓信號,是一個不確定的值。此電壓信號經(jīng)過放大整流后輸入微控制器ADC模塊進(jìn)行數(shù)字化處理,之后由程序?qū)?shù)據(jù)進(jìn)行處理,解算出路徑偏差。微控制器利用此路徑偏差值控制電機(jī)差速轉(zhuǎn)向。
智能車運(yùn)行時(shí)需要不斷地檢測路面信息,即需要借助傳感器探測地面色調(diào)迥異的兩種色彩以修正其運(yùn)動軌跡。模擬灰度傳感器包括信號檢測單元、參考電壓單元、控制單元、電源和防護(hù)單元,其循跡模塊中光敏對管的分布如圖4所示。
3.2 運(yùn)放模塊的設(shè)計(jì)
循跡模塊位于智能車前端。為了確保智能車循跡過程中的運(yùn)行精度,應(yīng)將微弱的電壓信號進(jìn)行放大。經(jīng)驗(yàn)證明,四路運(yùn)放芯片OPA4377符合使用需求,運(yùn)放電路如圖5所示。
4 程序設(shè)計(jì)
4.1 主程序設(shè)計(jì)
智能車循跡所需的8個光敏對管組分布如圖4所示,智能車的運(yùn)行狀態(tài)可分成7種狀態(tài),分別為右轉(zhuǎn)、向右調(diào)整、向右微調(diào)、全速直行、向左微調(diào)、向左調(diào)整和左轉(zhuǎn);當(dāng)R1檢測到白線時(shí),右轉(zhuǎn);當(dāng)R2檢測到白線時(shí),向右調(diào)整;當(dāng)R3檢測到白線時(shí),向右微調(diào),從而在較短時(shí)間內(nèi)完成路線的調(diào)整,高低速度調(diào)整由控制PWM波的占空比實(shí)現(xiàn)。相類似,當(dāng)L1檢測到白線時(shí),左轉(zhuǎn);當(dāng)L2檢測到白線時(shí),向左調(diào)整;當(dāng)L3檢測到白線時(shí),向左微調(diào);不同的是,當(dāng)L4、R4檢測到白線并且L3、R3未檢測到白線時(shí),全速直行;當(dāng)L1、L2、L3、L4同時(shí)檢測到白線時(shí),加速左轉(zhuǎn)。光敏對管組與智能車偏轉(zhuǎn)方向關(guān)系如表1所示,其中數(shù)字0表示低電平,數(shù)字1表示高電平,主程序流程圖如圖6所示。
程序如下(25ms執(zhí)行一次):
if(ADC_Colour.ADC_L1==1) //左轉(zhuǎn)
{
Speed_L=0-400;
Speed_R=400;
}
else if(ADC_Colour.ADC_L2==1&&ADC_Colour.ADC_R1!=1) //向左邊調(diào)整
{
Speed_L=400;
Speed_R=800;
}
else if(ADC_Colour.ADC_L3==1) //向左邊微調(diào)
{
Speed_L=700;
Speed_R=800;
}
else if(ADC_Colour.ADC_L4==1&&ADC_Colour.ADC_R4==1&&ADC_Colour.ADC_L3!=1&&ADC_Colour.ADC_R3!=1)//全速直行
{
Speed_L=800;
Speed_R=800;
}//另一側(cè)轉(zhuǎn)向類似略
4.2 電機(jī)PWM調(diào)速分析
光敏對管組接收信號,通過ADC模塊將信號送入單片機(jī)中。智能車進(jìn)入循跡模式,單片機(jī)會不停地掃描電磁傳感器的I/O口,一旦檢測到某一個I/O出現(xiàn)高低電平跳動時(shí),微控制器就會執(zhí)行相應(yīng)程序,從而實(shí)現(xiàn)對智能車運(yùn)行狀態(tài)的控制。其中,高電平的脈沖個數(shù)與上一個周期的總脈沖個數(shù)的百分比即為占空比的大小,不同兩路的占空比控制著兩側(cè)電機(jī)的轉(zhuǎn)速與轉(zhuǎn)動方向,電機(jī)的轉(zhuǎn)速隨著占空比的變化而變化,占空比越大,則該側(cè)電機(jī)輸入的電壓越大,電機(jī)轉(zhuǎn)速越快。電機(jī)的平均速度等于在一定的占空比下電機(jī)的最大速度乘以占空比[8]。
4.3 非接觸式啟動設(shè)計(jì)
將E18-D80NK-N光電傳感器安裝在智能車底盤尾部(距地面55mm),傳感器檢測部位向后,在安裝時(shí)傳感器與智能車底盤水平放置,同時(shí)避免離傳感器檢測部位20~30mm處有障礙。在智能車通電進(jìn)入工作狀態(tài)時(shí),操作者只要在傳感器檢測部分20~30mm處使之有障礙,智能車即啟動開車跑車。程序片段如下(25ms執(zhí)行一次):
if(redstart==0&&FLAG_START==0)
{
timer(0,1); ?//重置計(jì)時(shí)器
while(Time<4)//在此處停留3.99秒
BEEP_ON; ? //開啟蜂鳴器
BEEP_OFF; ? ?//關(guān)閉蜂鳴器
OLED_ClearScreen(0X00); //OLED清屏
Speed_L=0; ? //初始化輸出速度左為0 PWM
Speed_R=0; ? //初始化輸出速度右為0 PWM
FLAG_START=1;//標(biāo)志位置1,開始跑車程序
timer(0,1); ?//重置計(jì)時(shí)器
}
4.4 指定圈數(shù)自動停止設(shè)計(jì)
將E18-D80NK-N光電傳感器安裝在智能小車底盤兩側(cè)(距地面距離20mm),以實(shí)現(xiàn)檢測賽道上與引導(dǎo)線垂直的黑色線條數(shù)。其中,針對飛越懸崖和通過雙駝峰、梯形樓梯導(dǎo)致計(jì)入的黑線條數(shù)與實(shí)際的黑線條數(shù)產(chǎn)生的誤差,本設(shè)計(jì)采用的是多次跑車檢測智能車跑一圈實(shí)際計(jì)入的黑線條數(shù)記為Z,在需要運(yùn)行指定圈數(shù)時(shí),以指定圈數(shù)乘以Z作為程序計(jì)數(shù)的參考量,從而實(shí)現(xiàn)智能車按指定圈數(shù)自動停止,程序片段如下(25ms執(zhí)行一次):
delay++;//記黑線
if(delay>1000)
{
delay = 1000;
}
if(redblack&&delay>100)
{
flag++;
delay = 0;
}
if(flag >= 9) //outward8 midle9 inward8
{
Speed_L=0;
Speed_R=0;
}
5 結(jié)語
目前,廣泛使用的傳感器有顏色傳感器、光敏電阻灰度傳感器。其中,顏色傳感器容易受外界光線影響,而且顏色傳感器的通信過程非常復(fù)雜,且價(jià)格昂貴。光敏電阻灰度傳感器同樣易受到外界光源的干擾,并且穩(wěn)定性差,采集的灰度對比值偏離較大,智能車循跡容易出錯。本設(shè)計(jì)采用的是模擬灰度傳感器,用以解決現(xiàn)有傳感器抗干擾能力差、成本高以及不能同時(shí)使用的問題。
本設(shè)計(jì)結(jié)合了差速控制、電機(jī)PWM調(diào)速、循跡模塊的設(shè)計(jì)、非接觸式啟動的設(shè)計(jì)、指定圈數(shù)自動停止的設(shè)計(jì),提出了一套模擬灰度智能循跡的設(shè)計(jì)方案,其具有可靠性強(qiáng)、成本低等優(yōu)點(diǎn),可滿足大部分室內(nèi)及室外有引導(dǎo)線的運(yùn)輸需求。
本設(shè)計(jì)方案還有諸多待改進(jìn)的地方,改進(jìn)思路如下。
①智能車速度過快通過直角彎時(shí),存在未觸發(fā)操作指令易偏離引導(dǎo)線的問題。針對此問題,可在車體前部安裝一個激光傳感器,進(jìn)行路口提前檢測,然后降速通過直角彎。
②智能車在上梯形樓梯時(shí)容易出現(xiàn)撞擊,嚴(yán)重影響了前行速度,而且還可能引起偏離引導(dǎo)線的風(fēng)險(xiǎn)。對此,可同樣采取標(biāo)記黑線的方法,進(jìn)而解決此類似情況的發(fā)生。
③智能車過彎平順性較低,可采用PID控制算法,從而既能在不偏離引導(dǎo)線的情況下以較高的速度前行,又能實(shí)現(xiàn)精準(zhǔn)的過彎表現(xiàn)。
參考文獻(xiàn):
[1]張巖,裴曉敏,付韶彬.基于單片機(jī)的智能循跡小車設(shè)計(jì)[J].國外電子測量技術(shù),2014(3):51-54.
[2]藍(lán)厚榮.單片機(jī)的PWM控制技術(shù)[J].工業(yè)控制計(jì)算機(jī),2010(3):97-98,108.
[3]王海波,馮蓉珍,司俊,等.基于PWM調(diào)速的智能小車控制系統(tǒng)實(shí)現(xiàn)[J].科技廣場,2011(11):144-147.
[4]王珊珊.輪式移動機(jī)器人控制系統(tǒng)設(shè)計(jì)[D].南京:南京理工大學(xué),2013.
[5]甘天宇.自尋跡機(jī)器人小車的設(shè)計(jì)與關(guān)鍵技術(shù)研究[D].長春:吉林大學(xué),2017.
[6]邱玉娟.單片機(jī)應(yīng)用系統(tǒng)中C51與匯編語言的區(qū)別[J].淮陰工學(xué)院學(xué)報(bào),2007(3):64-66.
[7]史彬,牛岳鵬,郭勇.智能車模雙電機(jī)差速控制的可行性研究[J].電子產(chǎn)品世界,2012(8):50-52.
[8]朱昌平,李永強(qiáng),單鳴雷.“飛思卡爾”智能車常見技術(shù)問題與解決方案[J].試驗(yàn)室研究與探索,2012(4):45-49,57.