• 管道机器人结构设计及控制系统搭建


    一、概述

    1.研究意义

      当今,科技生产力的不断发展,人们生活水平的不断提高以及人们日益增长的各种需求,管道在现代工农业以及人们日常生活中发挥着巨大的作用,被广泛的应用在石油、化工、天然气、核工业、城市用水等多个领域。这些领域关系国家的经济命脉,管道一旦发生泄漏,将会给国家和人们带来巨大的损失,因此对各个领域的管道进行定期的检测与维护具有重大的意义。管道环境大多十分恶劣、空间十分狭窄,使得人们不能直接到达或介入到管道中去,使得对管道的检测与维护十分不易。因此,管道机器人应运而生。

    2.简述

      管道机器人是一种可以沿管道内壁或管外行走的机构,可以携带各种检测装置和操作工具,在地面操作人员的远程控制下自动完成探伤(腐蚀程度、裂纹,焊接缺陷等)及补口(对接焊缝、防腐处理、防腐层缺陷处理等)等作业,对管道内部情况利用检测装置实时的反馈到地面上来,使操作人员能够对管道的现状有深入的了解。

      管道机器人需要满足:移动功能和适应管径及弯管的自动调节机构。

    3.管道机器人行走条件

    (1)为了保证机器人在管道中运行时保持一定的姿态,不出现倾覆、扭转等现象,要求管道对机器人施加一个封闭的形状。

    (2)要求管壁对机器人的力为封闭力。

    (3)有主动驱使机构

      1)自驱动(自带动力源):微型电机、压力驱动、形状记忆合金、磁致伸缩驱动、电磁转换驱动

      2)利用流体推动

      3)通过弹性杆外加推力

    (4)应用于变径管道、弯管道

    4、驱动方式详述

      驱动机构及驱动器作为微小型管道机器人的移动载体,需要满足大的牵引力和移动速度。

    (1)微型电机

      微型电机(micro-motor),是体积、容量较小,输出功率一般在数百瓦以下的电机和用途、性能及环境条件要求特殊的电机。全称微型特种电机,简称微电机。常用于控制系统中,实现机电信号或能量的检测、解算、放大、执行或转换等功能,或用于传动机械负载,也可作为设备的交、直流电源。

    (2)磁致伸缩

      磁致伸缩是指物体在磁场中磁化时,在磁化方向会发生伸长或缩短,当通过线圈的电流变化或者是改变与磁体的距离时其尺寸即发生显著变化的铁磁性材料,通常称为铁磁致伸缩材料。其尺寸变化比目前的铁氧体等磁致伸缩材料大得多,而且所产生的能量也大,则称为超磁致伸缩材料

    5.行进方式

    (1)轮式

      该移动式管道机器人行走速度快,控制简单,但是车轮移动式管道机器人的驱动力靠轮子与管壁之间的摩擦力,故牵引力较小,越障能力有限,在管道内容易打滑。

    (2)履带式

      由带减速装置的电机驱动行走。较早出现的履带移动式管道机器人虽然较轮式有很多优点,如与管壁接触面积大,承载能力大,在管道内不易打滑,牵引力大,能够适应复杂的管道环境等,但是不适合在圆形管道中行走,使其应用受到了很大的限制。因此,后来产生了一般履带式的派生机构,能够在圆管道中行走,且能适应变管径管道,但是其结构复杂,履带磨损较大,机动性较差。

    图1  履带式

    (3)蠕动式

       利用仿生学,基于爬行类昆虫在壁面上前进与后退原理。该类型管道机器人与地面接触面积比较大,不易陷入到其行走地面中去,但结构和控制比较复杂,行走缓慢。

    (4)螺旋式

       基于螺旋原理,靠驱动电机带动驱动元件进行前进。螺旋移动式管道机器人一般牵引力较小,多应用于微小型管道机器人中,适合在小口径管道中行走。

    (5)多足式

       该类管道机器人靠机器人足腿压向管壁产生摩擦力来行走。足腿移动式管道机器人对壁面适用能力和越障能力强,机动性能好,但控制起来比较复杂。

    (6)压电冲击

      以压电晶体为驱动器,压电晶体是利用了压电材料的逆压电效应,具有体积小、能量效率高、响应速度快和分辨率高等优点,压电冲击驱动的主要缺点为牵引力小、这种行走机构主要包括:压电驱动器、惯性体和支撑机构,利用惯性力和最大静摩擦力之间的动力学关系来实现微小管道内行走。

     

    6.操作方式

    (1)有缆
      具有安全可靠
    简便易行、无射线污染等优点, 但是在机器人进入管道内作业时,电缆与管道内壁将产生滑动摩擦作用,当机器人行走距离达到一定程度,特别是当转弯较多时,线缆与管道内壁的摩擦力会变得很大,甚至达到机器人的牵引力所不能克服的程度。

    (2)无缆

      自身携带电源,可靠、耐久,但体积庞大,如果进入金属管壁,由于电磁屏蔽作用,信号无法穿过管壁,切当管道周围电磁环境十分恶劣时,将导致无线传输无法进行。


    二、机器人系统设计

    1.机械结构设计

      机械结构方面的设计主要研究机器人的本体结构,主要包括自适应管径的调节机构、移动机构两大模块

      难点:带重载在变径管道中的通过性问题。轮腿机构作为管道机器人自适应管径的调节机构,通过对调节机构的工作原理、力学特性进行分析,找出丝杠螺母调节方式的力学特性。

      首先,采用“丝杠螺母+剪叉机构”,作为适应管径的调节机构;其次,在每条臂的末端装有电机和轮子,作为行进动力装置;最后,为了适应弯管,将结构设置为双节机构,在弯管处借助两节不同动力进行推拉,以使得通过弯管。

      结构概念图如图:



    图2 概念图

    2.控制结构设计

    (1)控制系统:Arduino UNO控制板

    (2)步进电机、直流电机

    (3)杜邦线

    三、考虑内容

    1.灵活可靠的行走机构

      振动式和冲击式适合于刚性管壁环境下的应用

      柔弹性的蠕动机构适合在柔性管壁环境下使用

      多足具有良好的管道适应能力

    2.驱动方式

      在限定空间内,需要尺寸小而扭矩大的电机

    3. 信号、电力的传输和供给方式

      采用有缆时考虑线缆在转弯处的阻力

      采用无线方式传递信号时,由于金属管道具有一定的屏蔽作用,需要考虑发射信号的频率。

    4.高度自治的控制系统

      开发机器人视觉系统,提高图像处理速度

      采用神经网络及人工智能等先进的控制理论

    四、实物搭建及调试

    1.实体搭建

     

    图3 二维图递交加工

    2.电路搭建

    (1)步进电机与控制板

      步进电机接线端子:黑色A+.绿色A-;红色B+,蓝色B-。
      L298输入1-4 对应 arduino数字端口 8,9,10,11  
      L298输出out1--A+白,OUT2--A-蓝,out3--B+黄,out4--B-绿

     

     图4 电路连线

    (2)直流电机与控制板

     

    (3)蓝牙

     

    五、程序代码

    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);
    
    }

     2.直流电机与L298N控制程序

     

    3.蓝牙连接

     

    4.最终程序

     

     

  • 相关阅读:
    各项硬件使用剖析(一)---让你一眼就能区分瓶颈是Memory、processor ORdisk!
    基本算术运算符
    网页计算器 && 简易网页时钟 && 倒计时时钟
    页面加载后累加,自加1&&判断数字是否为两位数
    累加按钮,自加1&&输入两个数字,比较大小
    用typeof查看数据类型&&用parseInt解析数字,并求和
    鼠标移过,改变图片路径
    单一按钮显示/隐藏&&提示框效果
    简易选项卡&&简易JS年历
    函数传参,改变Div任意属性的值&&图片列表:鼠标移入/移出改变图片透明度
  • 原文地址:https://www.cnblogs.com/Sonny-xby/p/11142953.html
Copyright © 2020-2023  润新知