羅 琴
(廣州工程技術(shù)職業(yè)學(xué)院,廣州 510900)
基于Arduino的避障小車設(shè)計(jì)與實(shí)現(xiàn)
羅 琴
(廣州工程技術(shù)職業(yè)學(xué)院,廣州 510900)
本設(shè)計(jì)基于Arduino開源設(shè)計(jì)平臺(tái),以Arduino UNO開發(fā)板為核心控制器,利用舵機(jī)、超聲波傳感器模塊、電機(jī)驅(qū)動(dòng)模塊等,研究超聲波測(cè)距的算法,分析避障小車避障執(zhí)行流程,使小車按照設(shè)定的模式避開障礙物,自動(dòng)循跡,實(shí)現(xiàn)無(wú)障礙運(yùn)行,達(dá)到實(shí)用要求。實(shí)踐表明,該設(shè)計(jì)有效。
Arduino;超聲波測(cè)距;避障;自動(dòng)循跡;避障小車
Arduino是目前使用最為廣泛的開源硬件之一,其大部分硬件已配置好,是一款自帶有用于連接電腦USB接口的小型單片機(jī)電路板??蛇B接電機(jī)、傳感器、繼電器等外部電子設(shè)備,可由電腦USB接口、9 V電源或獨(dú)立電源供電,通過(guò)電腦或程序?qū)崿F(xiàn)控制。Arduino開發(fā)環(huán)境的語(yǔ)言接近C++,甚至加入了一些JAVA的用法。Arduino編程軟件中有很多函數(shù)庫(kù),用起來(lái)非常方便,靈活、簡(jiǎn)單的開發(fā)方式使開發(fā)者的創(chuàng)意更為快捷地得以實(shí)現(xiàn),被廣泛應(yīng)用于機(jī)器人、物聯(lián)網(wǎng)等領(lǐng)域。Arduino開發(fā)板與單片機(jī)裸機(jī)、單片機(jī)開發(fā)板之間的區(qū)別為:A. Arduino開發(fā)板:成本較低,體積適中。除單片機(jī)運(yùn)行需要占用的端口外,其他端口交由用戶支配使用。通過(guò)USB數(shù)據(jù)線與PC連接即可運(yùn)行。B.單片機(jī)裸機(jī):成本低,體積小,端口自由度大,需自己搭建電路才能運(yùn)行。C.單片機(jī)開發(fā)板:成本高,體積大。開發(fā)板集成了鍵盤、數(shù)碼管等模塊,占用了很多端口。通過(guò)USB數(shù)據(jù)線或COM端口與PC連接即可運(yùn)行。
本研究的避障小車設(shè)計(jì)采用超聲波傳感器實(shí)現(xiàn)避障功能,實(shí)現(xiàn)方便,計(jì)算簡(jiǎn)單,易于做到實(shí)時(shí)控制,測(cè)量精度也能達(dá)到實(shí)用的要求。
避障小車的設(shè)計(jì)包含Arduino控制模塊、超聲波傳感器模塊、舵機(jī)與直流電機(jī)等執(zhí)行器模塊。Arduino控制模塊用于接收紅外遙控器發(fā)出的運(yùn)行信號(hào)以及超聲波傳感器檢測(cè)到的測(cè)距信號(hào),根據(jù)程序編制的避障策略,發(fā)送控制信號(hào)給控制小車運(yùn)行的外部執(zhí)行元件。舵機(jī)、直流電機(jī)等執(zhí)行元件按照控制信號(hào)調(diào)整當(dāng)前狀態(tài),使小車實(shí)現(xiàn)避障運(yùn)行。
小車運(yùn)行中遇到障礙物時(shí),當(dāng)距離障礙物大于25 cm時(shí),PWM信號(hào)自增,驅(qū)動(dòng)電機(jī)加速,小車加速前進(jìn);當(dāng)距離障礙物小于25 cm時(shí),舵機(jī)驅(qū)動(dòng)超聲波左右測(cè)距,并根據(jù)左右故障的距離是否小于25 cm采取相應(yīng)的避障措施。
2.1 Arduino UNO控制模塊
Arduino UNO控制板是Arduino系列目前最為流行的新版本,可以在其3.3 V供電接口處提供更大的電流,控制板配備ATmega328芯片,存儲(chǔ)容量更大,與電腦之間的數(shù)據(jù)交換更快。Arduino UNO有6個(gè)模擬輸入端口,14個(gè)數(shù)字輸入/輸出端口。本設(shè)計(jì)共使用8個(gè)數(shù)字量端口用于連接舵機(jī)、電機(jī)、紅外遙控接收頭,2個(gè)模擬量端口用于連接超聲波傳感器信號(hào)。
2.2 超聲波傳感器模塊
超聲波傳感器包含Trig觸發(fā)端與Echo回聲端。測(cè)距算法是通過(guò)超聲波在發(fā)射后遇到障礙物反射回來(lái)的時(shí)間差,計(jì)算發(fā)射點(diǎn)到障礙物的實(shí)際距離。測(cè)距的公式表示為:L=C×(T1-T2)。其中,C為超聲波在空氣中的傳播速度:340 m/s,T1為超聲波發(fā)出的起始時(shí)間,T2為超聲波返回時(shí)間。
超聲波Trig觸發(fā)端發(fā)一個(gè)10 us以上的高電平,如有超聲波信號(hào)返回,Echo回聲端會(huì)輸出高電平?;芈暥艘坏┯懈唠娖捷敵鼍烷_啟定時(shí)器計(jì)時(shí),當(dāng)此口變?yōu)榈碗娖綍r(shí)就可以讀定時(shí)器的值,此定時(shí)器的值即為測(cè)距時(shí)間,可算出小車與障礙物的實(shí)際距離。
2.3 外部執(zhí)行模塊
A.直流電機(jī):直流電機(jī)是大功率元件,需要較大電流才能工作。而Arduino數(shù)字I/O輸出口的電流僅為40 mA,因此需要外加L298N電機(jī)驅(qū)動(dòng)模塊才能驅(qū)動(dòng)電機(jī)運(yùn)行。L298N驅(qū)動(dòng)模塊是內(nèi)含兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)器,可驅(qū)動(dòng)直流電機(jī)、步進(jìn)電機(jī)、繼電器等感性負(fù)載,也可驅(qū)動(dòng)兩臺(tái)直流電機(jī)。由圖1可知,圖中二極管為續(xù)流二極管。當(dāng)V1、V4導(dǎo)通時(shí),電機(jī)順時(shí)針轉(zhuǎn);V2、V3導(dǎo)通時(shí),電機(jī)逆時(shí)針轉(zhuǎn)。電機(jī)調(diào)速通過(guò)PWM控制,占空比不同,輸出模擬電壓的平均值不同,由此來(lái)控制電機(jī)實(shí)現(xiàn)調(diào)速。B.舵機(jī):通過(guò)Arduino發(fā)出控制信號(hào),指定輸出軸旋轉(zhuǎn)的角度,在一定角度范圍內(nèi)來(lái)回旋轉(zhuǎn),用PWM信號(hào)控制。避障小車通過(guò)紅外遙控器發(fā)射紅外線,由紅外接收頭接收控制信號(hào)輸送給Arduino進(jìn)行運(yùn)算控制。遙控器一個(gè)按鍵對(duì)應(yīng)一個(gè)控制指令,使用前需要進(jìn)行按鍵指令的解碼。
圖1 H橋驅(qū)動(dòng)電路Fig.1 H-bridge drive circuit
以上各硬件模塊可分別編寫測(cè)試程序,若每個(gè)模塊都無(wú)問(wèn)題,則說(shuō)明連接正常。若某個(gè)模塊有問(wèn)題,則需檢查線路。
Arduino通過(guò)外部中斷,接收紅外遙控器按鍵指令。如:Arduino收到按鍵0,小車啟動(dòng),進(jìn)行自動(dòng)避障;收到按鍵1,停止不動(dòng);收到按鍵2,小車前進(jìn);收到按鍵3,小車后退。小車避障算法為:超聲波先進(jìn)行正前方測(cè)距并判斷與故障的距離,若≥25 cm小車前進(jìn),2 S后停車再測(cè)距。若正前方距離小于25 cm,則先左后右對(duì)兩側(cè)進(jìn)行測(cè)距,若兩側(cè)距離都小于25 cm,左側(cè)距離大則左轉(zhuǎn)前進(jìn),否則右轉(zhuǎn)前進(jìn),2 S后停車再測(cè)距,如此實(shí)現(xiàn)自動(dòng)循跡及避障功能。自動(dòng)避障循跡算法如圖2所示。
圖2 小車自動(dòng)避障循跡算法流程圖Fig.2 Automatic obstacle avoidance tracking algorithm flow chart of cars
控制程序編寫時(shí)先定義各引腳,再進(jìn)行各引腳的配置,聲明函數(shù),最后再編寫主程序。函數(shù)聲明有利于控制程序的優(yōu)化,是程序編寫重要的環(huán)節(jié)之一。
小車設(shè)計(jì)完成后的實(shí)踐表明,基于Arduino UNO平臺(tái)設(shè)計(jì)的避障小車可按照預(yù)先設(shè)定的模式避開障礙物自動(dòng)運(yùn)行,對(duì)自動(dòng)運(yùn)輸機(jī)器人、采礦勘探機(jī)器人、家用自動(dòng)清潔機(jī)器人等自動(dòng)、半自動(dòng)機(jī)器人的設(shè)計(jì)與普及有一定的參考意義。此外,由于本設(shè)計(jì)只用了一個(gè)超聲波傳感器實(shí)現(xiàn)測(cè)距,而小車車身橫向距離大,使得超聲波測(cè)距存在一定的盲區(qū),可以通過(guò)在車身左右側(cè)各自再增加一個(gè)超聲波或采用攝像頭實(shí)現(xiàn)測(cè)距,可有效解決測(cè)距盲區(qū)問(wèn)題。
[1] 蔡睿妍.基于Arduino的舵機(jī)控制系統(tǒng)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2012,8(15):3719-3721.
[2] 楊繼志,郭敬.Arduino的互動(dòng)產(chǎn)品平臺(tái)創(chuàng)新設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012,12(04):39-41.
[3] 卞云松.基于Arduino單片機(jī)的避障小車機(jī)器人[J].自動(dòng)化技術(shù)與應(yīng)用,2014,33(01):16-19.
[4] 陳呂洲.Arduino程序設(shè)計(jì)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2014.
[5] 付久強(qiáng).基于Arduino平臺(tái)的職能硬件設(shè)計(jì)研究[J].包裝工程,2015,(10):76-79.
Designandimplementationofavoidcarrierbasedonarduino
LUO Qin
(Guangzhou Institute of Engineering Technology, Guangzhou 510900, China)
Based on Arduino open source design platform, taking Arduino UNO development board as the core controller, to study ultrasonic ranging algorithm with the use of steering gear, ultrasonic sensor module and the motor drive module, and analyze the obstacle avoidance barrier implementation process, avoid obstacles and achieve barrier-free operation and meet the practical requirements. Practice shows that the design is effective.
Arduino; Ultrasonic ranging; Obstacle avoidance; Automatic tracking; Obstacle avoidance car
TP23
A
1674-8646(2017)20-0024-02
2017-08-22
羅琴(1979-),女,碩士,講師。