羅 琴
(廣州工程技術職業學院,廣州 510900)
基于Arduino的避障小車設計與實現
羅 琴
(廣州工程技術職業學院,廣州 510900)
本設計基于Arduino開源設計平臺,以Arduino UNO開發板為核心控制器,利用舵機、超聲波傳感器模塊、電機驅動模塊等,研究超聲波測距的算法,分析避障小車避障執行流程,使小車按照設定的模式避開障礙物,自動循跡,實現無障礙運行,達到實用要求。實踐表明,該設計有效。
Arduino;超聲波測距;避障;自動循跡;避障小車
Arduino是目前使用最為廣泛的開源硬件之一,其大部分硬件已配置好,是一款自帶有用于連接電腦USB接口的小型單片機電路板。可連接電機、傳感器、繼電器等外部電子設備,可由電腦USB接口、9 V電源或獨立電源供電,通過電腦或程序實現控制。Arduino開發環境的語言接近C++,甚至加入了一些JAVA的用法。Arduino編程軟件中有很多函數庫,用起來非常方便,靈活、簡單的開發方式使開發者的創意更為快捷地得以實現,被廣泛應用于機器人、物聯網等領域。Arduino開發板與單片機裸機、單片機開發板之間的區別為:A. Arduino開發板:成本較低,體積適中。除單片機運行需要占用的端口外,其他端口交由用戶支配使用。通過USB數據線與PC連接即可運行。B.單片機裸機:成本低,體積小,端口自由度大,需自己搭建電路才能運行。C.單片機開發板:成本高,體積大。開發板集成了鍵盤、數碼管等模塊,占用了很多端口。通過USB數據線或COM端口與PC連接即可運行。
本研究的避障小車設計采用超聲波傳感器實現避障功能,實現方便,計算簡單,易于做到實時控制,測量精度也能達到實用的要求。
避障小車的設計包含Arduino控制模塊、超聲波傳感器模塊、舵機與直流電機等執行器模塊。Arduino控制模塊用于接收紅外遙控器發出的運行信號以及超聲波傳感器檢測到的測距信號,根據程序編制的避障策略,發送控制信號給控制小車運行的外部執行元件。舵機、直流電機等執行元件按照控制信號調整當前狀態,使小車實現避障運行。
小車運行中遇到障礙物時,當距離障礙物大于25 cm時,PWM信號自增,驅動電機加速,小車加速前進;當距離障礙物小于25 cm時,舵機驅動超聲波左右測距,并根據左右故障的距離是否小于25 cm采取相應的避障措施。
2.1 Arduino UNO控制模塊
Arduino UNO控制板是Arduino系列目前最為流行的新版本,可以在其3.3 V供電接口處提供更大的電流,控制板配備ATmega328芯片,存儲容量更大,與電腦之間的數據交換更快。Arduino UNO有6個模擬輸入端口,14個數字輸入/輸出端口。本設計共使用8個數字量端口用于連接舵機、電機、紅外遙控接收頭,2個模擬量端口用于連接超聲波傳感器信號。
2.2 超聲波傳感器模塊
超聲波傳感器包含Trig觸發端與Echo回聲端。測距算法是通過超聲波在發射后遇到障礙物反射回來的時間差,計算發射點到障礙物的實際距離。測距的公式表示為:L=C×(T1-T2)。其中,C為超聲波在空氣中的傳播速度:340 m/s,T1為超聲波發出的起始時間,T2為超聲波返回時間。
超聲波Trig觸發端發一個10 us以上的高電平,如有超聲波信號返回,Echo回聲端會輸出高電平。回聲端一旦有高電平輸出就開啟定時器計時,當此口變為低電平時就可以讀定時器的值,此定時器的值即為測距時間,可算出小車與障礙物的實際距離。
2.3 外部執行模塊
A.直流電機:直流電機是大功率元件,需要較大電流才能工作。而Arduino數字I/O輸出口的電流僅為40 mA,因此需要外加L298N電機驅動模塊才能驅動電機運行。L298N驅動模塊是內含兩個H橋的高電壓大電流全橋式驅動器,可驅動直流電機、步進電機、繼電器等感性負載,也可驅動兩臺直流電機。由圖1可知,圖中二極管為續流二極管。當V1、V4導通時,電機順時針轉;V2、V3導通時,電機逆時針轉。電機調速通過PWM控制,占空比不同,輸出模擬電壓的平均值不同,由此來控制電機實現調速。B.舵機:通過Arduino發出控制信號,指定輸出軸旋轉的角度,在一定角度范圍內來回旋轉,用PWM信號控制。避障小車通過紅外遙控器發射紅外線,由紅外接收頭接收控制信號輸送給Arduino進行運算控制。遙控器一個按鍵對應一個控制指令,使用前需要進行按鍵指令的解碼。

圖1 H橋驅動電路Fig.1 H-bridge drive circuit
以上各硬件模塊可分別編寫測試程序,若每個模塊都無問題,則說明連接正常。若某個模塊有問題,則需檢查線路。
Arduino通過外部中斷,接收紅外遙控器按鍵指令。如:Arduino收到按鍵0,小車啟動,進行自動避障;收到按鍵1,停止不動;收到按鍵2,小車前進;收到按鍵3,小車后退。小車避障算法為:超聲波先進行正前方測距并判斷與故障的距離,若≥25 cm小車前進,2 S后停車再測距。若正前方距離小于25 cm,則先左后右對兩側進行測距,若兩側距離都小于25 cm,左側距離大則左轉前進,否則右轉前進,2 S后停車再測距,如此實現自動循跡及避障功能。自動避障循跡算法如圖2所示。

圖2 小車自動避障循跡算法流程圖Fig.2 Automatic obstacle avoidance tracking algorithm flow chart of cars
控制程序編寫時先定義各引腳,再進行各引腳的配置,聲明函數,最后再編寫主程序。函數聲明有利于控制程序的優化,是程序編寫重要的環節之一。
小車設計完成后的實踐表明,基于Arduino UNO平臺設計的避障小車可按照預先設定的模式避開障礙物自動運行,對自動運輸機器人、采礦勘探機器人、家用自動清潔機器人等自動、半自動機器人的設計與普及有一定的參考意義。此外,由于本設計只用了一個超聲波傳感器實現測距,而小車車身橫向距離大,使得超聲波測距存在一定的盲區,可以通過在車身左右側各自再增加一個超聲波或采用攝像頭實現測距,可有效解決測距盲區問題。
[1] 蔡睿妍.基于Arduino的舵機控制系統設計[J].電腦知識與技術,2012,8(15):3719-3721.
[2] 楊繼志,郭敬.Arduino的互動產品平臺創新設計[J].單片機與嵌入式系統應用,2012,12(04):39-41.
[3] 卞云松.基于Arduino單片機的避障小車機器人[J].自動化技術與應用,2014,33(01):16-19.
[4] 陳呂洲.Arduino程序設計基礎[M].北京:北京航空航天大學出版社,2014.
[5] 付久強.基于Arduino平臺的職能硬件設計研究[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-),女,碩士,講師。