王 靜,張江亞,董彥華
(河北科技學(xué)院 河北 保定 071100)
隨著科學(xué)技術(shù)的發(fā)展,信息化、智能化已經(jīng)離不開人們的生活。智能小車的發(fā)展是當(dāng)前研究的重點(diǎn)領(lǐng)域之一,反映了人們對(duì)安全和方便的需求,也是評(píng)估各國智能化發(fā)展進(jìn)程的一個(gè)非常有效的指標(biāo)。目前,智能車的應(yīng)用正逐步深入到工業(yè)和生活的各個(gè)層面,提升了人們的生活品質(zhì)[1]。董靖川等[2]基于STM32對(duì)智能避障小車進(jìn)行了設(shè)計(jì),通過在多個(gè)方向安裝超聲波傳感器,以實(shí)現(xiàn)不同方位障礙物的距離檢測(cè),實(shí)驗(yàn)表明該方法運(yùn)行效果正常,魯棒性好。但在該設(shè)計(jì)方案中,由于使用的傳感器數(shù)目較多,會(huì)導(dǎo)致各傳感器之間易產(chǎn)生干擾。該系統(tǒng)與紅外線避障系統(tǒng)模塊而言,對(duì)光不敏感,抗干擾性良好,而且反應(yīng)速度較快,其不足之處在于只能實(shí)現(xiàn)報(bào)警功能,無法實(shí)現(xiàn)自動(dòng)避障。為此文本基于單片機(jī)設(shè)計(jì)一款具有循跡、自動(dòng)避障和手機(jī)藍(lán)牙控制功能的智能小車模型,通過總體方案設(shè)計(jì)、硬件電路設(shè)計(jì)、軟件編程設(shè)計(jì),以確保實(shí)現(xiàn)智能小車的正常運(yùn)轉(zhuǎn)。
本文設(shè)計(jì)所用的系統(tǒng),主要由主控制器模塊、紅外循跡模塊、紅外避障模塊、電源模塊、電機(jī)驅(qū)動(dòng)模塊,以及藍(lán)牙遙控模塊組成。采用STC89C52單片機(jī)[3]作為核心器件,以實(shí)現(xiàn)對(duì)小車的控制、循跡、自動(dòng)避障和手機(jī)藍(lán)牙控制等功能;采用型號(hào)為TCRT5000的紅外反射傳感器進(jìn)行路線的探測(cè)和循跡;采用E18-D80NK紅外傳感器避障;采用MX1508RX2電機(jī)驅(qū)動(dòng)芯片為車輪驅(qū)動(dòng);采用JDY-31藍(lán)牙串口模塊實(shí)現(xiàn)手機(jī)藍(lán)牙控制。
采用STC89C52RC型號(hào)單片機(jī)作為主控制器,其具有靈活方便、安全可靠、方便排查故障和維修等優(yōu)良的特性。同時(shí),具備較高的可擴(kuò)展性,可通過擴(kuò)展I/O接口讓其實(shí)現(xiàn)更多功能。在充分研究和分析過本文智能小車的功能后,設(shè)計(jì)出主控制器模塊電路圖。
循跡功能是讓智能小車能夠沿著中間的黑粗線條行駛。當(dāng)紅外循跡傳感器接收到不同信息后,所對(duì)應(yīng)的操作也會(huì)不同,如:智能小車兩邊的傳感器均能接收到白色信號(hào),智能小車就會(huì)直行;智能小車左邊傳感器接收到黑色信號(hào),右邊傳感器接收到白色信號(hào),那么代表左邊傳感器接收不到信號(hào),智能小車就會(huì)左轉(zhuǎn),實(shí)現(xiàn)循跡的效果。
采用型號(hào)為TCRT5000[4]的紅外反射傳感器進(jìn)行路線的探測(cè)和循跡,此款傳感器常被用于制作紅外循跡模塊,并且可以針對(duì)其靈敏度進(jìn)行調(diào)節(jié),同時(shí)也極大地提升了設(shè)計(jì)后期在小車循跡測(cè)試時(shí)調(diào)試的效率。當(dāng)TCRT5000發(fā)出的紅外線被黑線吸收無法返回時(shí),模塊中相應(yīng)位置的LED燈不會(huì)發(fā)光。在沒有探測(cè)到黑線的正常情況下,或者小車未進(jìn)入循跡狀態(tài)時(shí),該模塊上的2個(gè)LED燈均保持發(fā)光狀態(tài)。循跡模塊電路圖如圖1所示。
圖1 循跡模塊電路圖
選用E18-D80NK紅外傳感器[5]進(jìn)行避障,設(shè)置工作電壓為5 V,工作電流為10~15 mA,有效檢測(cè)距離為3~80 cm;傳感器直徑為18 mm,長度為45 mm。紅外傳感器根據(jù)接收到反射光的強(qiáng)弱來判斷距離障礙物的遠(yuǎn)近。該裝置的消耗較高,因此本設(shè)計(jì)選用3.7 V的鋰電池作為供電電源以保證紅外光電傳感器的正常運(yùn)轉(zhuǎn)。該紅外傳感器的紅外發(fā)射和接收電路如圖2所示。
圖2 紅外發(fā)射和接收電路圖
由于本文設(shè)計(jì)中用到了功率較大的紅外光電傳感器,因此需要用2節(jié)3.7 V可充電式的鋰電池作為電源。將2節(jié)電池串聯(lián)后得到1個(gè)7.4 V電壓的電源,但該電壓相對(duì)于包括單片機(jī)在內(nèi)的其他元器件的正常工作電壓又較大,因此需要將該電源接到電源調(diào)壓模塊中,調(diào)壓為5 V后,才可以作為供電電源對(duì)單片機(jī)及其他各模塊進(jìn)行供電。
采用MX1508RX2電機(jī)驅(qū)動(dòng)芯片為電機(jī),該芯片是專門為遙控玩具類小車而設(shè)計(jì)的,其將具有解碼功能的芯片和驅(qū)動(dòng)馬達(dá)運(yùn)轉(zhuǎn)的驅(qū)動(dòng)芯片合并成了一整塊芯片。該芯片有著工作電壓范圍為2~8 V的優(yōu)點(diǎn),由于本文設(shè)計(jì)中需要較高的供電電壓,其工作電壓范圍恰好符合本文智能小車設(shè)計(jì)中的2節(jié)鋰電池串聯(lián)的供電電壓,因此優(yōu)先考慮了該芯片。除此以外該芯片還具有待機(jī)電流低、功率開關(guān)管導(dǎo)通內(nèi)阻低、集成度高等優(yōu)點(diǎn)。同時(shí),其相較于L298N、MX1508RX2的體積更小,調(diào)試安裝過程也會(huì)相對(duì)方便。
為了方便用戶使用手機(jī)和智能小車通信,加裝了以JDY-31為藍(lán)牙的串口模塊。該串口模塊是基于藍(lán)牙3.0 SPP設(shè)計(jì)出來的,能夠支持多種平臺(tái)的數(shù)據(jù)透?jìng)?。其?yīng)用的范圍較廣,性能良好,發(fā)射功率最高可達(dá)到約8 dB,且經(jīng)過測(cè)試,信號(hào)的發(fā)射距離也能達(dá)到20 m以上。因此該模塊可完全滿足本文設(shè)計(jì)的使用需求,并且還具備一些相當(dāng)人性化的設(shè)計(jì),使用起來十分靈活、便利,如:可以讓用戶自愿通過AT命令對(duì)連接的藍(lán)牙設(shè)備名稱進(jìn)行修改;可以對(duì)設(shè)備的波特率進(jìn)行設(shè)置。
主程序主要起到一個(gè)想到和決策的功能,決定什么時(shí)候小車該做什么。小車各種功能的實(shí)現(xiàn)通過調(diào)用具體的子程序予以實(shí)現(xiàn)[6]。
采用差動(dòng)轉(zhuǎn)向作為智能小車的轉(zhuǎn)向方式,后輪是一個(gè)萬向輪,作為小車的支撐及基本運(yùn)動(dòng)的輔助。前輪為2個(gè)驅(qū)動(dòng)輪,并且每個(gè)驅(qū)動(dòng)輪均由其連接的驅(qū)動(dòng)電機(jī)單獨(dú)控制,彼此之間不會(huì)互相影響。循跡模式程序函數(shù)流程圖如圖3所示??梢钥闯?,智能小車的避障模塊選擇的是2個(gè)紅外傳感器,假如左右兩側(cè)的傳感器中,有一側(cè)檢測(cè)到了障礙物體的存在,那么智能小車的車頭將自動(dòng)朝向遠(yuǎn)離障礙物的一側(cè)進(jìn)行角度調(diào)整。如果3個(gè)傳感器同時(shí)檢測(cè)到有障礙物存在于安全距離內(nèi),小車會(huì)立即停止運(yùn)動(dòng)。避障設(shè)計(jì)的部分程序如下。
圖3 循跡模式程序函數(shù)流程圖
if(flag_time == 1) //計(jì)時(shí)開始
{
timer0_count ++;
if(timer0_count >= 1000) //定時(shí)1.0秒
{
timer0_count = 0;
flag_ok = 1;
flag_time = 0;
}
}
switch(flag_direction)
{
case 1: //小車停止
MOTOR_IN1 = 0; MOTOR_IN2 = 0; MOTOR_IN0 = 0; MOTOR_IN3 = 0;
break;
case 2: //小車左轉(zhuǎn)
if(motor_count < motor_speed)
{
MOTOR_IN0 = 1; MOTOR_IN1 = 0;MOTOR_IN2 = 1;MOTOR_IN3 = 0;
}
else
{
MOTOR_IN0 = 0;MOTOR_IN1 = 0;MOTOR_IN2 = 0; MOTOR_IN3 = 0;
}
break;
case 3: //小車右轉(zhuǎn)
if(motor_count < motor_speed)
{
MOTOR_IN0 = 0; MOTOR_IN2 = 0;MOTOR_IN3 = 1; MOTOR_IN1 = 1;
}
else
{
MOTOR_IN1 = 0;MOTOR_IN2 = 0;MOTOR_IN3 = 0; MOTOR_IN0 = 0;
}
break;
case 4: //小車直行
if(motor_count < motor_speed)
{
MOTOR_IN1 = 0;MOTOR_IN2 = 0;MOTOR_IN3 = 1; MOTOR_IN0 = 1;
}
else
{
MOTOR_IN0 = 0;MOTOR_IN1 = 0;MOTOR_IN2 = 0;MOTOR_IN3 = 0;
}
break;
case 5: //小車后退
if(motor_count < motor_speed)
{
MOTOR_IN0 = 0;MOTOR_IN1 = 1;MOTOR_IN2 = 1;MOTOR_IN3 = 0;
}
else
{
MOTOR_IN0 = 0;MOTOR_IN1 = 0;MOTOR_IN2 = 0;MOTOR_IN3 = 0;
}
break;
}
}
在智能小車進(jìn)入藍(lán)牙模式的正常狀態(tài)下,若車身左側(cè)的紅外光電傳感器檢測(cè)到了前方存在障礙物體時(shí),程序會(huì)控制小車向右轉(zhuǎn),以此來避免碰撞。反之,若右側(cè)檢測(cè)到障礙物,則車頭向左偏轉(zhuǎn)以躲避障礙;兩邊側(cè)均有障礙物,即前方無路可走時(shí),智能小車停止前進(jìn),原地待命;如果收到前進(jìn)指令,且前方有障礙物,智能小車會(huì)在程序自行判斷后選擇原地待命,直到前方障礙物消失后,才會(huì)受到遙控的指令控制,從而開始向前運(yùn)動(dòng)。同理,在藍(lán)牙模式下,向左轉(zhuǎn)和向右轉(zhuǎn)的指令也會(huì)受到障礙物的影響,但由于智能小車后方未裝有傳感器,因此后退指令不會(huì)受影響,在收到后退的藍(lán)牙遙控指令后,則直接后退。
智能小車控制系統(tǒng)的仿真過程,基本可以概括以下幾步:首先,將智能小車控制系統(tǒng)的原理圖繪制好;然后,在keil c51兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)中,按照程序流程圖進(jìn)行完整的編譯;最后,再將原理圖與單片機(jī)程序置入仿真軟件中進(jìn)行仿真。系統(tǒng)仿真圖如圖4所示。
圖4 系統(tǒng)仿真圖
仿真實(shí)驗(yàn)過程中,在原理圖中的各模塊連接為整體后,使用開關(guān)來進(jìn)行等效替代軟件中無法仿真的部分器件,如,紅外光電傳感器等。將.hex文件載入其中,并點(diǎn)擊運(yùn)行按鈕,觀察仿真結(jié)果。仿真結(jié)果顯示,本文設(shè)計(jì)的控制系統(tǒng),能夠?qū)崿F(xiàn)小車預(yù)期的自動(dòng)循跡及自動(dòng)避障功能。
在通過軟件對(duì)系統(tǒng)進(jìn)行仿真之后,為進(jìn)一步確認(rèn)本文設(shè)計(jì)的實(shí)際可行性,對(duì)智能小車控制系統(tǒng)的實(shí)物進(jìn)行制作、組裝與測(cè)試,實(shí)物和測(cè)試結(jié)果如圖5所示。
圖5 實(shí)物和測(cè)試結(jié)果
1)對(duì)智能小車的藍(lán)牙遙控功能和基本運(yùn)動(dòng)功能進(jìn)行測(cè)試。按下智能小車主板的電源開關(guān)后,進(jìn)入藍(lán)牙連接模式,打開手機(jī)中的藍(lán)牙調(diào)試程序進(jìn)行藍(lán)牙連接,在正常連接后,依次測(cè)試智能小車前、后、左、右的遙控指令和停止指令。經(jīng)測(cè)試,智能小車藍(lán)牙遙控功能和基本運(yùn)動(dòng)功能運(yùn)行正常。
2)對(duì)智能小車的循跡功能進(jìn)行測(cè)試。使用多張A4紙打印并拼接出循跡所需的黑色引導(dǎo)線條,經(jīng)過多次測(cè)試,智能小車均可以準(zhǔn)確識(shí)別出黑色引導(dǎo)線,并按此路徑行駛,即智能小車的自動(dòng)循跡功能可以實(shí)現(xiàn)。
3)對(duì)智能小車的進(jìn)行自動(dòng)避障功能測(cè)試。在智能小車前進(jìn)狀態(tài)下,用手依次遮擋前方的3個(gè)紅外光電傳感器,觀察其運(yùn)動(dòng)狀態(tài)如何變化。經(jīng)測(cè)試,智能小車前3個(gè)紅外傳感器均可檢測(cè)到有效距離內(nèi)的障礙物,并且可以依據(jù)傳感器探測(cè)的結(jié)果進(jìn)行轉(zhuǎn)向或停止運(yùn)動(dòng),從而有效避免了碰撞障礙物。
實(shí)際測(cè)試表明,智能小車傳感器工作狀態(tài)下均可正常運(yùn)轉(zhuǎn),可以實(shí)現(xiàn)所預(yù)期的自動(dòng)循跡和自動(dòng)避障功能,同時(shí)藍(lán)牙遙控模塊也運(yùn)行正常,可通過手機(jī)端的藍(lán)牙調(diào)試軟件對(duì)其運(yùn)動(dòng)進(jìn)行控制。
本文設(shè)計(jì)的智能小車模型以STC89C52單片機(jī)作為主控核心,對(duì)外設(shè)的驅(qū)動(dòng)電機(jī)、藍(lán)牙及傳感器等模塊進(jìn)行控制,經(jīng)過多次調(diào)試和測(cè)試驗(yàn)證后,成功實(shí)現(xiàn)了自主循跡避障、手機(jī)軟件控制等功能。后期加以完善,即可投入市場(chǎng),應(yīng)用于勘探、消防、無人駕駛及環(huán)境探測(cè)等領(lǐng)域。