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