當今,科技生產力的不斷髮展,人們生活水平的不斷提升以及人們日益增加的各類需求,管道在現代工農業以及人們平常生活中發揮着巨大的做用,被普遍的應用在石油、化工、自然氣、核工業、城市用水等多個領域。這些領域關係國家的經濟命脈,管道一旦發生泄漏,將會給國家和人們帶來巨大的損失,所以對各個領域的管道進行按期的檢測與維護具備重大的意義。管道環境大多十分惡劣、空間十分狹窄,使得人們不能直接到達或介入到管道中去,使得對管道的檢測與維護十分不易。所以,管道機器人應運而生。html
管道機器人是一種能夠沿管道內壁或管外行走的機構,能夠攜帶各類檢測裝置和操做工具,在地面操做人員的遠程控制下自動完成探傷(腐蝕程度、裂紋,焊接缺陷等)及補口(對接焊縫、防腐處理、防腐層缺陷處理等)等做業,對管道內部狀況利用檢測裝置實時的反饋到地面上來,使操做人員可以對管道的現狀有深刻的瞭解。git
管道機器人須要知足:移動功能和適應管徑及彎管的自動調節機構。安全
1)自驅動(自帶動力源):微型電機、壓力驅動、形狀記憶合金、磁致伸縮驅動、電磁轉換驅動網絡
2)利用流體推進工具
3)經過彈性杆外加推力oop
驅動機構及驅動器做爲微小型管道機器人的移動載體,須要知足大的牽引力和移動速度。性能
微型電機(micro-motor),是體積、容量較小,輸出功率通常在數百瓦如下的電機和用途、性能及環境條件要求特殊的電機。全稱微型特種電機,簡稱微電機。經常使用於控制系統中,實現機電信號或能量的檢測、解算、放大、執行或轉換等功能,或用於傳動機械負載,也可做爲設備的交、直流電源。學習
磁致伸縮是指物體在磁場中磁化時,在磁化方向會發生伸長或縮短,當經過線圈的電流變化或者是改變與磁體的距離時其尺寸即發生顯著變化的鐵磁性材料,一般稱爲鐵磁致伸縮材料。其尺寸變化比目前的鐵氧體等磁致伸縮材料大得多,並且所產生的能量也大,則稱爲超磁致伸縮材料ui
該移動式管道機器人行走速度快,控制簡單,可是車輪移動式管道機器人的驅動力靠輪子與管壁之間的摩擦力,故牽引力較小,越障能力有限,在管道內容易打滑。人工智能
(2)履帶式
由帶減速裝置的電機驅動行走。較早出現的履帶移動式管道機器人雖然較輪式有不少優勢,如與管壁接觸面積大,承載能力大,在管道內不易打滑,牽引力大,可以適應複雜的管道環境等,可是不適合在圓形管道中行走,使其應用受到了很大的限制。所以,後來產生了通常履帶式的派生機構,可以在圓管道中行走,且能適應變管徑管道,可是其結構複雜,履帶磨損較大,機動性較差。
圖1 履帶式
(3)蠕動式
利用仿生學,基於爬行類昆蟲在壁面上前進與後退原理。該類型管道機器人與地面接觸面積比較大,不易陷入到其行走地面中去,但結構和控制比較複雜,行走緩慢。
(4)螺旋式
基於螺旋原理,靠驅動電機帶動驅動元件進行前進。螺旋移動式管道機器人通常牽引力較小,多應用於微小型管道機器人中,適合在小口徑管道中行走。
(5)多足式
該類管道機器人靠機器人足腿壓向管壁產生摩擦力來行走。足腿移動式管道機器人對壁面適用能力和越障能力強,機動性能好,但控制起來比較複雜。
以壓電晶體爲驅動器,壓電晶體是利用了壓電材料的逆壓電效應,具備體積小、能量效率高、響應速度快和分辨率高等優勢,壓電衝擊驅動的主要缺點爲牽引力小、這種行走機構主要包括:壓電驅動器、慣性體和支撐機構,利用慣性力和最大靜摩擦力之間的動力學關係來實現微小管道內行走。
(1)有纜
具備安全可靠、簡便易行、無射線污染等優勢, 可是在機器人進入管道內做業時,電纜與管道內壁將產生滑動摩擦做用,當機器人行走距離達到必定程度,特別是當轉彎較多時,線纜與管道內壁的摩擦力會變得很大,甚至達到機器人的牽引力所不能克服的程度。
(2)無纜
自身攜帶電源,可靠、耐久,但體積龐大,若是進入金屬管壁,因爲電磁屏蔽做用,信號沒法穿過管壁,切當管道周圍電磁環境十分惡劣時,將致使無線傳輸沒法進行。
機械結構方面的設計主要研究機器人的本體結構,主要包括自適應管徑的調節機構、移動機構兩大模塊
難點:帶重載在變徑管道中的經過性問題。輪腿機構做爲管道機器人自適應管徑的調節機構,經過對調節機構的工做原理、力學特性進行分析,找出絲槓螺母調節方式的力學特性。
首先,採用「絲槓螺母+剪叉機構」,做爲適應管徑的調節機構;其次,在每條臂的末端裝有電機和輪子,做爲行進動力裝置;最後,爲了適應彎管,將結構設置爲雙節機構,在彎管處藉助兩節不一樣動力進行推拉,以使得經過彎管。
結構概念圖如圖:
圖2 概念圖
(1)控制系統:Arduino UNO控制板
(2)步進電機、直流電機
(3)杜邦線
振動式和衝擊式適合於剛性管壁環境下的應用
柔彈性的蠕動機構適合在柔性管壁環境下使用
多足具備良好的管道適應能力
在限定空間內,須要尺寸小而扭矩大的電機
採用有纜時考慮線纜在轉彎處的阻力
採用無線方式傳遞信號時,因爲金屬管道具備必定的屏蔽做用,須要考慮發射信號的頻率。
開發機器人視覺系統,提升圖像處理速度
採用神經網絡及人工智能等先進的控制理論
圖3 二維圖遞交加工
圖4 電路連線
1.步進電機用L298N電機驅動板驅動程序學習教程:
http://blog.sina.com.cn/s/blog_54bf41d30102vopa.html
int Pin0 = 8; int Pin1 = 9; int Pin2 = 10; int Pin3 = 11; int _step =0 ; boolean dir; //= -1;正反轉 int stepperSpeed = 20;//電機轉速,1ms一步 void setup() { pinMode(Pin0, OUTPUT); pinMode(Pin1, OUTPUT); pinMode(Pin2, OUTPUT); pinMode(Pin3, OUTPUT); pinMode(4,INPUT); } void loop() { if(digitalRead(4)) { up(); }else{ down(); } } void down() { switch(_step){ case 0: //stepperSpeed++; digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, HIGH);//32A break; case 1: digitalWrite(Pin0, LOW); digitalWrite(Pin1, HIGH);//10B digitalWrite(Pin2, LOW); digitalWrite(Pin3, HIGH); break; case 2: digitalWrite(Pin0, LOW); digitalWrite(Pin1, HIGH); digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW); break; case 3: digitalWrite(Pin0, LOW); digitalWrite(Pin1, HIGH); digitalWrite(Pin2, HIGH); digitalWrite(Pin3, LOW); break; case 4: digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW); digitalWrite(Pin2, HIGH); digitalWrite(Pin3, LOW); break; case 5: digitalWrite(Pin0, HIGH); digitalWrite(Pin1, LOW); digitalWrite(Pin2, HIGH); digitalWrite(Pin3, LOW); break; case 6: digitalWrite(Pin0, HIGH); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW); break; case 7: digitalWrite(Pin0, HIGH); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, HIGH); break; default: digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW); break; } _step++; if(_step>7){ _step=0; } delay(stepperSpeed); } void up() { switch(_step){ case 0: //stepperSpeed++; digitalWrite(Pin0, HIGH); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW);//32A break; case 1: digitalWrite(Pin0, HIGH); digitalWrite(Pin1, LOW);//10B digitalWrite(Pin2, HIGH); digitalWrite(Pin3, LOW); break; case 2: digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW); digitalWrite(Pin2, HIGH); digitalWrite(Pin3, LOW); break; case 3: digitalWrite(Pin0, LOW); digitalWrite(Pin1, HIGH); digitalWrite(Pin2, HIGH); digitalWrite(Pin3, LOW); break; case 4: digitalWrite(Pin0, LOW); digitalWrite(Pin1, HIGH); digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW); break; case 5: digitalWrite(Pin0, LOW); digitalWrite(Pin1, HIGH); digitalWrite(Pin2, LOW); digitalWrite(Pin3, HIGH); break; case 6: digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, HIGH); break; case 7: digitalWrite(Pin0, HIGH); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, HIGH); break; default: digitalWrite(Pin0, LOW); digitalWrite(Pin1, LOW); digitalWrite(Pin2, LOW); digitalWrite(Pin3, LOW); break; } _step++; if(_step>7){ _step=0; } delay(stepperSpeed); }