当今,科技生产力的不断发展,人们生活水平的不断提升以及人们日益增加的各类需求,管道在现代工农业以及人们平常生活中发挥着巨大的做用,被普遍的应用在石油、化工、自然气、核工业、城市用水等多个领域。这些领域关系国家的经济命脉,管道一旦发生泄漏,将会给国家和人们带来巨大的损失,所以对各个领域的管道进行按期的检测与维护具备重大的意义。管道环境大多十分恶劣、空间十分狭窄,使得人们不能直接到达或介入到管道中去,使得对管道的检测与维护十分不易。所以,管道机器人应运而生。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); }