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