□ 杜加元 □ 孟憲松 □ 閆 明 □ 郭忠峰
沈陽工業大學機械工程學院 沈陽 110870
管道作為城市建設的重要基礎設施之一,極大方便了人們的生活。由于管道環境的復雜性,當管道內部出現質量問題,尤其是維修人員無法進行人工作業的管道內部出現質量問題時,管道的維修和保養就成了一大難題[1]。管道機器人的出現在很大程度上解決了這一難題,管道機器人可以攜帶各種檢測和維修設備進入管道內工作,對管道內部進行檢測和維修,以保障管道的安全和暢通無阻[2-3]。
筆者設計的小型管道機器人屬于履帶式機器人,能夠攜帶可移動式攝像頭對管道內部的腐蝕、破損、老化等質量問題進行檢測,并將檢測到的視頻和圖片反饋至上位機控制系統,在由LabVIEW軟件搭建的人工界面上顯示檢測結果。根據檢測到的結果,工作人員可以采取相應的措施。應用小型管道機器人時,工作人員可以通過操作人機界面上的運動按鈕和擋位旋鈕來控制機器人的運動狀態和速度,速度表實時顯示速度值。總體而言,這是一種針對管道質量問題的高效檢測方案,具有一定的經濟意義與工程應用價值。
小型管道機器人控制系統采用模塊化設計思路,將控制系統分為多個獨立的功能模塊[4],主要包括單片機控制模塊、電機驅動模塊、舵機模塊、攝像頭模塊、無線保真(Wi-Fi)通信模塊。系統工作時,上位機通過數據線發送命令至單片機,單片機解析并判斷是否為有效指令,然后執行指令,實現對應的功能。系統的架構如圖1所示。
Arduino UNO單片機使用廣泛,其處理器的核心是ATmega328集成電路,包括14路數字輸入輸出接口、6路模擬輸入接口、一個16 MHz晶體振蕩器、一個通用串行總線(USB)接口、一個電源插座、一個在線串行編程(ICSP)接口和一個復位按鈕[5-6],其中 6 路數字接口可作為脈沖寬度調制(PWM)輸出使用。Arduino UNO單片機可以通過三種方式供電:外部直流電源通過電源插座供電、電池連接電源連接器的接地端和電源輸入引腳,以及USB接口直接供電,供電方式可自行選擇。

▲圖1 小型管道機器人控制系統架構框圖
速度是小型管道機器人的重要性能指標之一,機器人靠直流電機驅動運動,因此機器人性能優劣的關鍵在于對電機轉速的控制。若想要使機器人獲得良好的控制效果,就需要對電機轉速采取閉環控制,采集機器人的速度信息并反饋至控制器。筆者設計的小型管道機器人采用L298N驅動模塊,L298N驅動模塊的引腳定義見表1。

表1 L298N驅動模塊引腳定義
在實際操作中,IN1~1N4依次連接Arduino UNO單片機的3號、5號、6號、9號輸入輸出接口,用于控制電機的正反轉。ENA和ENB連接Arduino UNO單片機的2號、4號、7號、8號輸入輸出接口,成為兩臺電機的使能端[7]。若要驅動兩臺直流電機,則ENA、ENB都為高電平時有效,以其中一路為例,控制方式及直流電機狀態見表2。

表2 控制方式與直流電機狀態表
在小型管道機器人控制系統中,舵機是非常重要且基礎的一部分,只有熟練掌握了舵機的知識,才能設計制造出帶有旋轉功能的機器設備。舵機是一種位置或角度伺服驅動器,適用于需要角度不斷變換并可以保持的控制系統。
選用SG90 9 g舵機,能產生周期為20 ms、寬度為1.5 ms的基準信號。SG90 9 g舵機的位置等級有1 024個,舵機的有效角度范圍為0~180°,所以其控制的角度精度可以達到180/1 024。舵機轉動的角度通過調節PWM信號的占空比來實現,標準PWM信號的周期固定為20 ms,理論上脈寬范圍在1~2 ms之間,但實際上脈寬可以在0.5~2.5 ms之間,與和舵機的轉角0~180°相對應。從時間上看,要求的脈寬控制精度為(2.5-0.5) ms/1 024≈2 μs。 用 0.5~2.5 ms的脈寬對應0~180°的角度,且舵機轉動的角度與脈寬呈線性關系,則舵機每轉動1°,對應的脈寬為(2.5-0.5)ms/180=11 μs,因此,定義脈寬與轉動角度之間的關系為P=11A+500,其中P為脈寬,A為舵機轉動角度,500 μs為基準脈寬。
編寫舵機轉動角度函數程序:

上述例程實際上是在Void主函數中手動編寫了舵機一個周期20 ms的模擬脈沖信號,因為程序是不斷循環運行的,所以Arduino UNO單片機的引腳能持續不斷地向舵機發送PWM信號,控制舵機轉動到指定的角度。這個程序的優勢在于可以通過Arduino UNO單片機上不帶PWM功能的引腳來控制舵機轉動。定義舵機一個周期內的脈寬為P,通過digitalWrite函數定義PWM_pin引腳為高電平有效,并編寫delayMicroseconds延時函數,延遲時間為脈寬P,即一個周期內高電平持續的時間。用digitalWrite函數將PWM_pin引腳定義為低電平,低電平持續的時間就等于一個脈沖周期減去脈沖周期內高電平持續的時間。因為delay函數單位為毫秒,脈寬P單位為微秒,所以要進行單位換算。
所選用的互補金屬氧化物半導體攝像頭集成度高,成像質量好,使用方便,在管道機器人中應用廣泛。小型管道機器人控制系統采用HD720P型智能機器人專用高清攝像頭,支持Windows操作系統,最大圖像分辨率為1 280像素×960像素。舵機制成云臺,然后將攝像頭固定在云臺上面,使攝像頭可以實現180°水平方向旋轉調節。攝像頭采集的視頻信號通過Wi-Fi通信模塊發送至上位機控制系統,實時畫面在LabVIEW軟件搭建的人工界面中顯示,供工作人員分析參考。HD720P型高清攝像頭通過每秒60幀運動級快門,有效地保障了畫面的流暢度,動態效果好。這一攝像頭不需要安裝驅動程序,即插即用,可實現高品質的同步畫面。
采用型號為ZYWiFi-V1.2的無線通信模塊,這一模塊采用AR9331芯片,集成度高。系統頻率達400 MHz,板載64 MB DDR2隨機存儲器、8 MB閃存,對外引出各種功能接口。模塊體積小,功耗低,發熱量小,Wi-Fi傳輸性能穩定。
Wi-Fi通信模塊的外圍電路比較簡單,僅需加上直流3.3 V電源,即可啟動模塊,并可進行控制。采用兩個1×192.0 mm鍍金排針接口,可將Wi-Fi通信模塊固定住,能實現視頻傳輸和指令雙向傳輸[8-9]。ZYWIFI-V1.2模塊的引腳定義見表3。

表3 ZYWIFI-V1.2模塊引腳定義
在Arduino UNO單片機程序設計時,一般情況下,先進行初始條件設置,如設置波特率、中斷條件,以及定義各個引腳的屬性等。然后進入主循環結構,在主循環結構中接收和處理數據、執行命令、收集和發送數據。
當LabVIEW軟件向Arduino UNO單片機發送數據時,Arduino UNO單片機會將實時檢測到的數據存放在接收數據緩沖器中,再利用相關算法將數據轉化為可執行命令,從而改變機器人的運動狀態,如向左、向右運動,改變運行速度或進行比例積分微分調節等。當Arduino UNO單片機收集完相關的環境參數后,會將準備發送的數據存放于發送數據寄存器,等待程序去執行發送命令。同時,Arduino UNO單片機會根據小型管道機器人的運動狀態進行必要的調節,如當機器人向前或向后運動時,Arduino UNO單片機會通過比例積分微分調節去控制機器人左右輪的速度,使其保持一致。整個控制過程是不斷循環進行的,程序流程如圖3所示。

▲圖3 單片機控制程序流程圖
筆者采用LabVIEW軟件進行上位機人機界面的設計,上位機主程序結構為順序結構+While循環+時間結構。首先通過設置的串口號來初始化串口通信,LabVIEW軟件程序框圖中,View函數設置為波特率9 600 Baud、數據位8、奇偶校驗無、停止位1、流量控制無。然后程序進入While循環和事件循環,不斷檢測是否有事件得到相應并執行。最后關閉串口通信。在程序框圖中,需要對串口進行配置,并根據不同的按鍵通過串口發出不同的命令,Arduino UNO單片機收到串口數據,然后解析命令代碼執行相應的命令[10]。
為了更好地實現通信,制訂通信協議為幀頭+命令碼+操作碼。0X55為幀頭,0XAA為遙控命令,操作碼中0X00為前進,0X10為后退,0X20為左轉,0X30為右轉,0X40為停止,0X50為速度擋1,0X60為速度擋2,0X70為速度擋 3,0X80為速度擋 4,0X90為速度擋5。機器人前進、后退、左轉、右轉、停止運動的程序框圖界面相似。小型管道機器人人機界面設計如圖4所示。
筆者基于LabVIEW軟件和Arduino UNO單片機設計了小型管道機器人控制系統,采用模塊化設計思路,將控制系統分為多個獨立的功能模塊,不同模塊之間通過網絡互連實現信息的交換。這一小型管道機器人控制系統的主要功能如下。
(1)采用HD720P型高清攝像頭實時捕捉管道內視頻圖像,將圖像信息通過Wi-Fi通信模塊傳至上位機控制系統,并在線顯示視頻圖像供工作人員參考。
(2)利用圖形化編程軟件LabVIEW設計了小型管道機器人速度擋位旋鈕開關和控制機器人各個運動方向的按鈕,可非常方便靈活地控制機器人在管道內的運動速度和方向。
(3)機器人在管道內運行過程中,速度值通過Arduino UNO單片機發送至上位機,并在人機界面上進行顯示。

▲圖4 小型管道機器人人機界面
[1]張義.城市燃氣管道檢測機器人測控系統研究[D].北京:北京石油化工學院,2015.
[2]郭瑜,尚建忠,羅自榮,等.微小型螺旋驅動管道機器人建模與分析[J].機械制造,2006,44(12):11-14.
[3]侯憲倫,葛兆斌,李向東,等.履帶式機器人的設計[J].機械制造,2009,47(9):41-43..
[4]鄭旭.管道檢測機器人控制系統的設計與實現[D].南京:南京理工大學,2013.
[5]戈惠梅,徐曉慧,顧志華,等.基于 Arduino的智能小車避障系統的設計[J].現代電子技術,2014,37(11):118-120.
[6]趙建偉,班鈺,王義,等.基于 Arduino的智能小車的控制系統設計[J].兵工自動化,2015,34(5):74-76,96.
[7]王尊冉,龐俊騰,陳均健,等.基于 Arduino控制板的數據采集智能小車的控制系統設計與實現[J].計算技術與自動化,2017,36(1):67-73.
[8]ROH S G,CHOI H R.Differential-drive In-pipe Robot for Moving Inside Urban Gas Pipelines[J].IEEE Transactions on Robotics,2005,21(1):1-17.
[9]ROH S G, KIM D W,LEE J S,et al.Modularized In-pipe Robot Capable of Selective Navigation Inside of Pipelines[C].IntelligentRobotsand Systems,2008.IROS 2008.IEEE/RSJ International Conference on,Nice,2008.
[10]沈金鑫.Arduino與LabVIEW開發實戰[M].北京;機械工程出版社,2014.