曹維杰 劉海 閔文彥 丁樹凱 粟子恒 李會
摘 要:本文設計了一套以S9KEA128單片機為主控的模擬灰度循跡智能車系統(tǒng)。針對一般智能車采用按鍵控制式啟動,本文采用非接觸式啟動智能車設計,將E18-D80NK作為控制信號的采集裝置。本文介紹了差速控制、電機PWM調速、循跡模塊的設計、非接觸式啟動的設計、指定圈數自動停止的設計等。經試驗驗證,該智能車可以自主完成鋪設有直角彎、U型彎、梯形樓梯、雙駝峰、懸崖等元素的賽道,并且速度不低于2m/s,循跡效果可靠穩(wěn)定,而且提升空間較大。
關鍵詞:單片機;智能車;模擬灰度循跡算法;差速控制;電機PWM調速
中圖分類號:TP23;TP368.12 文獻標識碼: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 研究背景
智能循跡小車制作已成為目前電子競賽中的一個熱門項目[1-3]。傳統(tǒng)比賽規(guī)定,小車需沿著地面具備明顯對比度的白色引導線前行,且在不經意偏離引導線時還能自動回正,競賽的成績由到達終點的時間與循跡效果所決定,偏離引導線次數越少,完成賽道所耗時間越短,成績就越好。
本設計采用32位微控制器S9KEA128作為主控,以用作路面信息監(jiān)測、電機控制和輸入信號處理,4個直流減速電機作為主驅動,與相應的電源電路、下載電路、路徑檢測電路和循跡電路構成整體電路。本設計采用模擬灰度傳感器(以下稱循跡模塊)實現(xiàn)自動循跡功能,其由若干組光敏二極管和發(fā)光二極管組成。信號經過放大整流后輸入微控制器ADC模塊進行數字化處理,之后由程序對數據進行處理,解算出路徑偏差。微控制器利用此路徑偏差值控制電機差速轉向,進而實現(xiàn)智能車沿著引導線的偏轉方向轉向[4,5]。在程序設計方面,本設計采用C51語言編程[6],旨在設計出一套智能循跡系統(tǒng)。本文涉及的核心為模擬灰度傳感器循跡技術、非接觸式啟動、指定圈數自動停止的硬件及程序設計,其中所提出的解決方案來源于反復測試,試驗結果可靠。
2 智能車機械設計
小車采用亞克力板作為底盤,四輪雙驅,電機采用常見的微型可調速永磁直流減速電機。智能車通過一側電機正轉另一側電機反轉實現(xiàn)轉向,利用循跡模塊和兩側固定的光電傳感器采集道路信息,保證了智能車循跡的可靠性,同時實現(xiàn)了智能車運行指定圈數后自動停止。試驗場地如圖1所示,智能車實物如圖2所示。
3 智能車硬件設計
硬件基本框架如圖3示。
根據道路信息,集成于主控的FTM模塊產生兩路占空比不同的PWM波及輸出控制量,以對智能車兩側電機進行調速和方向控制。同時,智能車配備了OLED顯示模塊、貼片按鍵、撥碼開關、NRF無線模塊(藍牙模塊)、電池電壓檢測、蜂鳴器等,較好地實現(xiàn)了有線或無線的信號傳輸,同時方便程序調試[7]。
智能車其主要的硬件是循跡模塊與運算放大器,其它硬件均易于采購,然后通過程序上的調試和適配使用方便,并無過多的硬件設計以及設計要求。因此,硬件主要分析循跡模塊與運算放大器設計。
3.1 循跡模塊設計
循跡模塊由若干組光敏二極管和發(fā)光二極管組成,每組構成一個光敏對管。循跡模塊進行顏色深淺檢測的原理是:光敏電阻對不同顏色的檢測面對光的反射程序不同,其阻值變化也不同。當發(fā)光二極管在有效的檢測距離內發(fā)出白光并照射在檢測面時,光敏二極管能對檢測面反射的部分白光進行檢測并將其轉化成智能車能識別的信號。對于模擬量型的灰度傳感器,返回的信號是電壓信號,是一個不確定的值。此電壓信號經過放大整流后輸入微控制器ADC模塊進行數字化處理,之后由程序對數據進行處理,解算出路徑偏差。微控制器利用此路徑偏差值控制電機差速轉向。
智能車運行時需要不斷地檢測路面信息,即需要借助傳感器探測地面色調迥異的兩種色彩以修正其運動軌跡。模擬灰度傳感器包括信號檢測單元、參考電壓單元、控制單元、電源和防護單元,其循跡模塊中光敏對管的分布如圖4所示。
3.2 運放模塊的設計
循跡模塊位于智能車前端。為了確保智能車循跡過程中的運行精度,應將微弱的電壓信號進行放大。經驗證明,四路運放芯片OPA4377符合使用需求,運放電路如圖5所示。
4 程序設計
4.1 主程序設計
智能車循跡所需的8個光敏對管組分布如圖4所示,智能車的運行狀態(tài)可分成7種狀態(tài),分別為右轉、向右調整、向右微調、全速直行、向左微調、向左調整和左轉;當R1檢測到白線時,右轉;當R2檢測到白線時,向右調整;當R3檢測到白線時,向右微調,從而在較短時間內完成路線的調整,高低速度調整由控制PWM波的占空比實現(xiàn)。相類似,當L1檢測到白線時,左轉;當L2檢測到白線時,向左調整;當L3檢測到白線時,向左微調;不同的是,當L4、R4檢測到白線并且L3、R3未檢測到白線時,全速直行;當L1、L2、L3、L4同時檢測到白線時,加速左轉。光敏對管組與智能車偏轉方向關系如表1所示,其中數字0表示低電平,數字1表示高電平,主程序流程圖如圖6所示。
程序如下(25ms執(zhí)行一次):
if(ADC_Colour.ADC_L1==1) //左轉
{
Speed_L=0-400;
Speed_R=400;
}
else if(ADC_Colour.ADC_L2==1&&ADC_Colour.ADC_R1!=1) //向左邊調整
{
Speed_L=400;
Speed_R=800;
}
else if(ADC_Colour.ADC_L3==1) //向左邊微調
{
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;
}//另一側轉向類似略
4.2 電機PWM調速分析
光敏對管組接收信號,通過ADC模塊將信號送入單片機中。智能車進入循跡模式,單片機會不停地掃描電磁傳感器的I/O口,一旦檢測到某一個I/O出現(xiàn)高低電平跳動時,微控制器就會執(zhí)行相應程序,從而實現(xiàn)對智能車運行狀態(tài)的控制。其中,高電平的脈沖個數與上一個周期的總脈沖個數的百分比即為占空比的大小,不同兩路的占空比控制著兩側電機的轉速與轉動方向,電機的轉速隨著占空比的變化而變化,占空比越大,則該側電機輸入的電壓越大,電機轉速越快。電機的平均速度等于在一定的占空比下電機的最大速度乘以占空比[8]。
4.3 非接觸式啟動設計
將E18-D80NK-N光電傳感器安裝在智能車底盤尾部(距地面55mm),傳感器檢測部位向后,在安裝時傳感器與智能車底盤水平放置,同時避免離傳感器檢測部位20~30mm處有障礙。在智能車通電進入工作狀態(tài)時,操作者只要在傳感器檢測部分20~30mm處使之有障礙,智能車即啟動開車跑車。程序片段如下(25ms執(zhí)行一次):
if(redstart==0&&FLAG_START==0)
{
timer(0,1); ?//重置計時器
while(Time<4)//在此處停留3.99秒
BEEP_ON; ? //開啟蜂鳴器
BEEP_OFF; ? ?//關閉蜂鳴器
OLED_ClearScreen(0X00); //OLED清屏
Speed_L=0; ? //初始化輸出速度左為0 PWM
Speed_R=0; ? //初始化輸出速度右為0 PWM
FLAG_START=1;//標志位置1,開始跑車程序
timer(0,1); ?//重置計時器
}
4.4 指定圈數自動停止設計
將E18-D80NK-N光電傳感器安裝在智能小車底盤兩側(距地面距離20mm),以實現(xiàn)檢測賽道上與引導線垂直的黑色線條數。其中,針對飛越懸崖和通過雙駝峰、梯形樓梯導致計入的黑線條數與實際的黑線條數產生的誤差,本設計采用的是多次跑車檢測智能車跑一圈實際計入的黑線條數記為Z,在需要運行指定圈數時,以指定圈數乘以Z作為程序計數的參考量,從而實現(xiàn)智能車按指定圈數自動停止,程序片段如下(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 結語
目前,廣泛使用的傳感器有顏色傳感器、光敏電阻灰度傳感器。其中,顏色傳感器容易受外界光線影響,而且顏色傳感器的通信過程非常復雜,且價格昂貴。光敏電阻灰度傳感器同樣易受到外界光源的干擾,并且穩(wěn)定性差,采集的灰度對比值偏離較大,智能車循跡容易出錯。本設計采用的是模擬灰度傳感器,用以解決現(xiàn)有傳感器抗干擾能力差、成本高以及不能同時使用的問題。
本設計結合了差速控制、電機PWM調速、循跡模塊的設計、非接觸式啟動的設計、指定圈數自動停止的設計,提出了一套模擬灰度智能循跡的設計方案,其具有可靠性強、成本低等優(yōu)點,可滿足大部分室內及室外有引導線的運輸需求。
本設計方案還有諸多待改進的地方,改進思路如下。
①智能車速度過快通過直角彎時,存在未觸發(fā)操作指令易偏離引導線的問題。針對此問題,可在車體前部安裝一個激光傳感器,進行路口提前檢測,然后降速通過直角彎。
②智能車在上梯形樓梯時容易出現(xiàn)撞擊,嚴重影響了前行速度,而且還可能引起偏離引導線的風險。對此,可同樣采取標記黑線的方法,進而解決此類似情況的發(fā)生。
③智能車過彎平順性較低,可采用PID控制算法,從而既能在不偏離引導線的情況下以較高的速度前行,又能實現(xiàn)精準的過彎表現(xiàn)。
參考文獻:
[1]張巖,裴曉敏,付韶彬.基于單片機的智能循跡小車設計[J].國外電子測量技術,2014(3):51-54.
[2]藍厚榮.單片機的PWM控制技術[J].工業(yè)控制計算機,2010(3):97-98,108.
[3]王海波,馮蓉珍,司俊,等.基于PWM調速的智能小車控制系統(tǒng)實現(xiàn)[J].科技廣場,2011(11):144-147.
[4]王珊珊.輪式移動機器人控制系統(tǒng)設計[D].南京:南京理工大學,2013.
[5]甘天宇.自尋跡機器人小車的設計與關鍵技術研究[D].長春:吉林大學,2017.
[6]邱玉娟.單片機應用系統(tǒng)中C51與匯編語言的區(qū)別[J].淮陰工學院學報,2007(3):64-66.
[7]史彬,牛岳鵬,郭勇.智能車模雙電機差速控制的可行性研究[J].電子產品世界,2012(8):50-52.
[8]朱昌平,李永強,單鳴雷.“飛思卡爾”智能車常見技術問題與解決方案[J].試驗室研究與探索,2012(4):45-49,57.