智能小車,是一個(gè)集環(huán)境感知、規(guī)劃決策、自動(dòng)行駛等功能于一體的綜合系統(tǒng)。它可以適應(yīng)不同環(huán)境,不受溫度、濕度等條件的影響,完成危險(xiǎn)地段、人類無(wú)法介入等特殊情況下的任務(wù),因此在軍事、航空、探險(xiǎn)等領(lǐng)域有著極其重要的應(yīng)用。但隨著應(yīng)用的深入,在很多場(chǎng)合下需要多個(gè)小車之間可以實(shí)時(shí)通信,協(xié)作開展工作?;谏鲜隹紤],本文基于STC89C52和nRF24L01開發(fā)設(shè)計(jì)了一款具備無(wú)線通信功能的智能小車。該小車不僅具備循線、避障等功能,而且在一定距離范圍內(nèi)可以實(shí)時(shí)無(wú)線通信,協(xié)作開展相關(guān)工作。
1系統(tǒng)設(shè)計(jì)
1.1系統(tǒng)整體方案設(shè)計(jì)
基于STC89C52和nRF24L01的智能小車設(shè)計(jì)涉及到傳感器的應(yīng)用、無(wú)線數(shù)據(jù)傳輸?shù)?,系統(tǒng)總體方案如圖1所示。
整個(gè)系統(tǒng)由單片機(jī)最小控制系統(tǒng)、電源模塊、電機(jī)及驅(qū)動(dòng)、無(wú)線通信模塊、模式選擇模塊、循跡模塊以及避障模塊等。智能小車上電后,可由模式選擇模塊來(lái)確定小車的工作模式(作為主機(jī)或從機(jī)、循跡或避障等);循跡、避障模塊是根據(jù)相應(yīng)傳感器所檢測(cè)數(shù)據(jù)來(lái)執(zhí)行相應(yīng)動(dòng)作。為了使多個(gè)小車能夠同時(shí)協(xié)調(diào)工作,需要獲取對(duì)方的精確定位,這里可建立坐標(biāo)系并根據(jù)運(yùn)行情況實(shí)時(shí)更新坐標(biāo),并通過(guò)設(shè)計(jì)通信模塊及相應(yīng)通信方式來(lái)實(shí)現(xiàn)小車之間的通信。
1.2特征信號(hào)選擇
要實(shí)現(xiàn)自動(dòng)行駛,智能小車的傳感系統(tǒng)必須通過(guò)各類傳感器,獲取小車的狀態(tài)特征、道路環(huán)境特征兩類特征信號(hào)。
1.2.1小車特征參數(shù)
小車在共同工作時(shí)需要明確對(duì)方位置及行駛模式,從而可以獲得信息采集點(diǎn)坐標(biāo)。特征狀態(tài)包括如下參數(shù):
行駛模式,由撥碼開關(guān)確定的行駛模式。
小車坐標(biāo),小車當(dāng)前位置相對(duì)于上電地點(diǎn)的坐標(biāo)。
程序標(biāo)志位,標(biāo)志數(shù)據(jù)是否接收完數(shù)據(jù)。
方向,小車當(dāng)前狀態(tài)與x軸方向的夾角。設(shè)上電時(shí)車身前方為x軸方向,逆時(shí)針旋轉(zhuǎn)90°為y軸方向。單位脈沖轉(zhuǎn)角,微控制器輸出單位脈沖小車所轉(zhuǎn)角度,數(shù)據(jù)需測(cè)量得到。
單位脈沖位移,微控制器輸出單位脈沖小車改變位移,數(shù)據(jù)需測(cè)量得到。脈沖數(shù),小車運(yùn)動(dòng)時(shí)微控制器所輸出脈沖數(shù)。
1.2.2環(huán)境特征參數(shù)
實(shí)際工作時(shí),兩車需獲知對(duì)方所處狀態(tài),故無(wú)線傳輸數(shù)據(jù)中應(yīng)包括環(huán)境特征參數(shù)。環(huán)境狀態(tài)包括以下參數(shù):
狀態(tài)位,小車在運(yùn)行過(guò)程中檢測(cè)到標(biāo)志線后狀態(tài)標(biāo)志。
道路狀態(tài),由激光傳感器讀取的道路狀態(tài)。
障礙物狀態(tài),由光電傳感器讀取的障礙物狀態(tài)。絕對(duì)位移,兩車之間的相對(duì)位置。
1.2.3參數(shù)定義及計(jì)算
對(duì)程序中各個(gè)參數(shù)的定義見表1。
小車方向的計(jì)算公式如式(1)所示:
angle=angle±n*Δangle(1)
坐標(biāo)的計(jì)算公式如式(2),式(3)所示:
x=x+cosα*n*Δs(2)
y=y+sinα*n*Δs(3)
絕對(duì)位移的計(jì)算公式如式(4)所示:L0=(x 1-x2)2+(y1-y2)2(4)
2系統(tǒng)硬件實(shí)現(xiàn)
2.1單片機(jī)最小控制系統(tǒng)
單片機(jī)最小控制系統(tǒng)原理圖如圖2所示,本系統(tǒng)采用STC89C52單片機(jī)作為控制核心,微控制器通過(guò)I/O口與各個(gè)模塊相連。
STC89C5是一種低功耗、高性能CMOS 8位微控制器,具有8K在系統(tǒng)可編程FLASH存儲(chǔ)器。具有以下標(biāo)準(zhǔn)功能:8KB FLASH,512BRAM,32bI/O口線,看門狗定時(shí)器,內(nèi)置4KB E2PROM,MAX810復(fù)位電路,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口。此次設(shè)計(jì)傳感器共需要控制器I/O口20個(gè)(傳感器6個(gè),電機(jī)4個(gè),無(wú)線模塊6個(gè),撥碼開關(guān)4個(gè)),對(duì)輸出處理速度要求并不高,STC89C52芯片的I/O口,中斷及定時(shí)器完全可以滿足其功能要求。
2.2電機(jī)驅(qū)動(dòng)
由于單片機(jī)輸出電流無(wú)法直接驅(qū)動(dòng)電機(jī),本系統(tǒng)采用基于TB6560芯片的步進(jìn)電機(jī)驅(qū)動(dòng)用以驅(qū)動(dòng)步進(jìn)電機(jī)。
TB6560是東芝公司推出的低功耗、高集成兩相混合式步進(jìn)電機(jī)驅(qū)動(dòng)芯片。其主要特點(diǎn)有:內(nèi)部集成雙全橋MOSFET驅(qū)動(dòng);最高耐壓40V,單相輸出最大電流3.5A(峰值);具有整步、1/2,1/8,1/16細(xì)分方式;內(nèi)置溫度保護(hù)芯片;具有過(guò)流保護(hù);采用HZIP25封裝。
基于TB6560的驅(qū)動(dòng)電路中步進(jìn)電機(jī)控制信號(hào)有3個(gè)(CLK,CW,ENABLE),分別由微控制器的P0.0,P0.1端控制電機(jī)的方向(轉(zhuǎn)向時(shí)輸出電平類型相反,前進(jìn)時(shí)輸出電平類型相同),P0.2,P0.3控制電機(jī)的轉(zhuǎn)速,本電路中使能端始終接+5V。
2.3通信模塊
本系統(tǒng)的無(wú)線通信模塊采用nRF24L01無(wú)線模塊。nRF24L01是一款內(nèi)置頻率合成器、功率放大器、晶體振蕩器、調(diào)制器等功能模塊,并融合了增強(qiáng)型ShockBurst技術(shù)的新型單片射頻收發(fā)器件。工作于2.4~2.5GHz ISM頻段,其中輸出功率和通信頻道可通過(guò)程序進(jìn)行配置。nRF24L01功耗低,在以-6dBm的功率發(fā)射時(shí),工作電流也只有9mA;接收時(shí),工作電流只有12.3mA,多種低功率工作模式(掉電模式和空閑模式)使節(jié)能設(shè)計(jì)更方便。
由模式選擇模塊確定小車的主、從機(jī)模式后,主機(jī)檢測(cè)到相應(yīng)標(biāo)志線后發(fā)送數(shù)據(jù),從機(jī)接收到數(shù)據(jù)后應(yīng)答并反饋回自身信息,并執(zhí)行相應(yīng)程序。
nRF24L01無(wú)線模塊原理圖如圖3所示,CE引腳功能為使能發(fā)射或接收,由P1.0控制;CSN,SCK,MOSI,MISO為SPI引腳端,微處理器可通過(guò)P1.1,P1.2,P1.3,P1.4來(lái)配置nRF24L01;IRQ為中斷標(biāo)志位,由P1.5控制。
2.4循跡模塊
循跡模塊采用3個(gè)激光傳感器,型號(hào)為HLSD-2010B,分別置于小車左、右、前方,通過(guò)P2.5,P2.6,P2.7控制。
HLSD-2010B激光傳感器的工作電壓為5V,工作電流最大為30mA,信號(hào)輸出方式為直接電平輸出。
激光傳感器真值表見表2,控制器對(duì)于不同的測(cè)量值會(huì)執(zhí)行不同的動(dòng)作。
2.5避障模塊
避障模塊采用4個(gè)光電傳感器,型號(hào)為E18-D80NK分別置于車體前方位置。
光電傳感器E18的技術(shù)參數(shù)工作電壓5V,消耗電流DC小于25mA,響應(yīng)時(shí)間小于2ms,指向角小于等于15°,有效距離為3~80cm可調(diào),工作環(huán)境溫度為-25~55℃。
根據(jù)不同環(huán)境可將智能小車避障運(yùn)動(dòng)分為四種情況,如圖4所示。
(1)只有1,2號(hào)紅外傳感器檢測(cè)到障礙物,此時(shí)小車向右運(yùn)動(dòng),若3,4號(hào)傳感器檢測(cè)到則向左運(yùn)動(dòng)方向運(yùn)動(dòng)。
?。?)當(dāng)前方發(fā)現(xiàn)障礙物,1,4號(hào)均未檢測(cè)的障礙物時(shí),令小車向右運(yùn)動(dòng)。
?。?)當(dāng)4個(gè)紅外傳感器都測(cè)到障礙物時(shí),小車先倒退,然后向右運(yùn)動(dòng)。
(4)若1,4檢測(cè)到障礙物而1,3沒有檢測(cè)到障礙物,小車并不改變方向仍按直線行走。
2.6電源模塊
本系統(tǒng)采用2節(jié)容量為2 250mA·h,額定電壓為3.6V的鋰電池供電。由于系統(tǒng)中單片機(jī)、循跡模塊及避障模塊的工作電壓為5V,無(wú)線模塊工作電壓為3.3V,設(shè)計(jì)過(guò)程中采用兩個(gè)由LM2596芯片構(gòu)成的DC-DC穩(wěn)壓模塊。
原理圖如圖5所示,對(duì)于微控制器穩(wěn)壓模塊,輸入為7.2V,輸出為5.0V;對(duì)于nRF24L01穩(wěn)壓模塊,輸入為5.0V,輸出為3.3V。
3系統(tǒng)軟件開發(fā)
本系統(tǒng)程序設(shè)計(jì)采取模塊化的編程思想對(duì)各個(gè)模塊進(jìn)行程序編寫。在Keil4軟件所提供的平臺(tái)進(jìn)行開發(fā)。
主程序流程圖及中斷子程序流程圖如圖6,圖7所示。
設(shè)A車為主機(jī),B車為從機(jī)。A車正常運(yùn)行一段時(shí)間后發(fā)送自身特征參數(shù)與環(huán)境特征參數(shù)數(shù)據(jù)給B車,隨后進(jìn)入接收模式等待應(yīng)答信號(hào),從機(jī)接收到信息后返回應(yīng)答信號(hào)。單次通信成功后A車轉(zhuǎn)入接收模式,等待B車發(fā)送自身特征參數(shù)與環(huán)境特征參數(shù),互相接收完成對(duì)方數(shù)據(jù)為一次完整通信成功。A、B在通信成功后又返回原行駛模式,并處理所接收對(duì)方數(shù)據(jù)后執(zhí)行相應(yīng)程序。
無(wú)線傳輸數(shù)據(jù)包格式為:x軸坐標(biāo)-y軸坐標(biāo)-狀態(tài)位-道路狀態(tài)-障礙物狀態(tài)。
4結(jié)語(yǔ)
本文基于51單片機(jī)和nRF24L01無(wú)線模塊設(shè)計(jì)的智能小車,其硬件部分采用模塊化的設(shè)計(jì)思路不僅為軟件的調(diào)試提供便利,同時(shí)有利于其他功能模塊的添加。該智能小車不僅包含避障、循跡等功能單元模塊,而且包含了無(wú)線通信模塊,實(shí)現(xiàn)了多車之間的實(shí)時(shí)通信,為多車協(xié)作開展高復(fù)雜度和高難度工作提供了可能性。
評(píng)論