模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

楼主: Ykh

自已做了一个爬楼梯车

[复制链接]
发表于 2017-10-27 20:30:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
近日心血来潮用Makeblock的零件搭了个自动爬楼梯的小车
废话少说先上视频



下面给大家介绍一下如何搭建这个案例。由于是自动爬行,那么自然有各种传感器。什么巡线(当接触开关用),超声波,限位开关,陀螺仪~~


首先先简单介绍一下实现原理
额。。理想状态下一共有8个阶段,其中1号轮子和4号轮子都是带电机的主动轮,其他都是从动轮,而且升降装置装在2号和4号轮子上
阶段1 
前进


阶段2 
超声波检测到前方有障碍(这里指的是楼梯)
车体上升,1号和2号升降装置把1号和3号轮子升起来直到超声波传感器检测不到楼梯


阶段3 
1号和4号轮子推动小车前进


阶段4
2号轮子的巡线传感器检测碰到楼梯了,1号升降装置把2号轮子收回去


阶段5
1号和4号轮子推动小车前进


阶段6
4号轮子上的限位开关检测到4号轮子已经碰到楼梯,主动轮停止转动,2号升降装置把4号轮子收回去


阶段7
1号轮子推动小车前进 也就是阶段1


阶段8
也就是阶段2,小车继续前进直到超声波检测到楼梯然后开始循环


额。。攀爬原理差不多就是这样了,接下来给大家介绍一下搭建方法以及调试过程中碰到的一些问题

这个案例在机械结构方面的一个特色就是这个升降的装置,既要可靠,又要比较迅速地升降。所以我选择了齿条齿轮的配合方式,并且使用单孔梁作为滑轨,用3*3的同步带固定片配合双孔梁做了个简易滑块。
下面是搭建使用的材料和方法。

升降装置1


双孔梁032*4
双孔梁160*2
M4*22螺丝*8
M4螺母*8


然后使用下面的材料把上面搭好的结构连接起来


3*3同步带固定片*4
M4*8螺丝*16



额。。这样滑块就搭好了


拿两根0808*312的单孔梁刚好能穿过滑块

接下来我们来搭齿条
由于我们这个自动爬楼梯小车比较智能,能够适应不同高度的楼梯,所以我们的滑轨和齿条都要准备的长一点,既然滑轨都有312mm那么长了,齿条肯定不能短


所以我使用了4段齿条拼接起来,至于为什么上面的材料图片中有一根312的单孔梁呢,这是有原因的。光靠齿条拼接的话在升降过程中齿条与齿条之间的连接处会弯,这一弯齿轮和齿条的啮合就出问题了,哒哒哒滑齿了。至于为什么我会发现这个问题呢,这个就不解释了,说多了都是泪。所以我们要把齿条固定在这根单孔梁上。如下


接下来把导轨和齿条固定在一起
材料如下
144双孔梁*1
M4*22螺丝*3
M4螺母*2


176双孔梁*2
M4*22螺丝*6
M4螺母*6

装上2号轮子(从动轮)
使用以下材料


轮胎*2
90T同步带轮*2
螺丝轴*2
法兰轴承*4
M4螺母*2
M3*5无头螺丝*2
4*2塑料垫片*4

把轮子固定在双控梁的端面


2号轮子和1号升降装置搭建完毕
接下来搭建4号轮子和2号升降装置
2号升降装置结构和1号一样
所需材料也一样
只不过把032双孔梁固定在下图的位置



导轨和齿条的搭建与1号升降装置一样
上端的连接使用080双孔梁替代144双孔梁



128双孔梁*1
M4*22螺丝*6
M4螺母*6



装上L形支架,用
M4*14螺丝*2
M4螺母*2
固定在梁上





完成2号升降装置的搭建后就可以开始搭建4号轮子(主动轮)
所需材料如下


25mm电机*1
90T同步带轮
25mm电机支架
传动固定盘
M3*5螺丝
M4*14螺丝


套上轮胎,用
M4*14螺丝*2
螺母*2
固定在L形支架上



完成1、2号升降装置和2、4号轮子搭建,整车结构就完成一半了


接下来开始搭建主车架、1号和3号轮子

首先,把1号轮子(主动轮)搭建好
轮胎*2
90T同步带轮*2
传动固定盘*2
M4*14螺丝*8
M4螺母*4
M3*5螺丝*4
M3*5无头螺丝*2
25mm电机*2
25mm电机支架*2
064双孔梁*2



搭建前防撞杠



160双孔梁*1
L形支架*2
M4*14螺丝*4
M4螺母*4




搭建主车架

192双孔梁*2
防撞杠*1
前轮*2
M4*30螺丝*6
M4螺母*6


搭建3号轮子(从动轮)



轮胎*2
90T同步带轮*2
088单孔梁*2
法兰轴承*4
螺纹轴*2
4*2塑料垫片*4
螺母*2
M3*5无头螺丝*2


使用
M4*22螺丝*4
M4螺母*4


把3号轮子固定在车架上



装上2号升降装置

使用M4*14螺丝*8

装上1号升降装置

使用M4*14螺丝*6


由于楼梯宽度有限,轮子又比较大所以只能把轮子错开安装,为了节约搭建时间和材料,4号轮组之用了一个电机和一个轮子



再安装升级装置的电机



37电机(装好电机支架)*2
18T齿轮*2
M3*5无头螺丝*2
M4*8螺丝*4
调整好齿轮和齿条的距离分别固定在1号、2号升降装置双孔梁的螺纹槽上



完成机械搭建


接下来开始安装传感器
限位开关*1


装在2号升降装置侧面

限位开关*2


分别装在1号2号升降装置的梁上。(作用:限制抬升高度)

安装电机驱动 




安装巡线传感器


M4*22螺丝
4*10塑料圆柱
4*2塑料垫片*4
巡线传感器*1


安装陀螺仪


安装超声波传感器

由于超声波模块没办法检测0-30mm的距离,所以放里面去了 让防撞杆去撞楼梯,小车撞上障碍后刚好是30mm多点,顺利检测到(这都是调试后才发现的~_~!!)

安装主控板


安装适配器(限位开关用)

额。。基本上传感器安装好了,现在介绍一下各个整车结构和传感器


整车从左到右可以按轮子分成4个部分,其中1号轮子和4号轮子是主动轮(驱动轮),2号和3号轮子是从动轮

其中1号和2号升降装置控制2号和4号轮子的位置
这里加装陀螺仪是因为我们升降装置用的是直流电机,没办法保证车体平衡,所以加入陀螺仪调整电机抬升速度

整车图





接线图



代码如下:#include "MeOrion.h"
#include <Wire.h>

MeGyro gyro;
MeDCMotor lifer1(PORT_1);  //升降1
MeDCMotor lifer2(PORT_2);  //升降2
MeDCMotor rw(M2);  //1号驱动轮
MeDCMotor fw(M1);  //4号驱动轮
MeLineFollower lineFinder1(PORT_7);  // 巡线
MeLimitSwitch upWard1(PORT_3, SLOT2);  // 1号升降限位开关 
MeLimitSwitch forWard2(PORT_4, SLOT1);   // 4号轮子限位开关
MeLimitSwitch upWard2(PORT_4, SLOT2);  // 2号升降限位开关
MeUltrasonicSensor ultraSensor(PORT_8);  // 1号轮子超声波

void setup()  // 初始化,前后升降装置回收
{
  Serial.begin(9600);  
  gyro.begin();
  lifer1.run(-250);
  while (!upWard1.touched());
  lifer1.stop();
  lifer2.run(-250);
  while (!upWard2.touched());
  lifer2.stop();
}



void Step2()
{
    float p = 15;
    float i = 0.01;
    float angle = 0;
    float targetAngle = 0;
    float integration = 0;
    float err = 0;

    while (NotStop())
    {
        gyro.update();
        float angle = gyro.getAngleX();
        err = angle - targetAngle;
        integration += err;

        int speed1 = 200;
        int speed2 = 200;

        speed2 = speed1 + err * p;// + integration * i;

        lifer1.run(speed1);
        lifer2.run(speed2);
        //delay(10);
    }
    lifer1.stop();
    lifer2.stop();
}

int startTiming = 0;
unsigned long startTime = 0;

int NotStop()
{
    int16_t distance;
    distance = ultraSensor.distanceCm();
    delay(10);
    if (0 == startTiming)
    {
        if ((distance < 10) && (distance > 1))
        {
            return 1;
        }
        else
        {
            startTiming = 1;
            startTime = millis();
            return 1;
        }
    }
    else
    {
        unsigned long currentTime = millis();
        if (currentTime - startTime < 2500)  //超声波检测不到楼梯后延时2.5秒
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
}


void loop() 
{
  startTiming = 0;
  startTime = 0;
//阶段1 小车前进
  fw.run(60);  
  rw.run(60);  //1号 4号轮子推动小车前进

  int16_t distance;
  do
  {
      distance = ultraSensor.distanceCm();
      delay(10);
  }
//阶段2 碰到楼梯 主动轮停止 整体车架上升
  while (!((distance < 4) && (distance > 1)));  //如果碰到楼梯

  fw.stop();
  rw.stop();
  Step2();
//阶段3 1号 4号轮子推动小车前进
  fw.run(60);
  rw.run(60); 
//阶段4 2号轮子巡线传感器检测到楼梯 主动轮停止 升降装置1把2号轮子收回去
  while (!(lineFinder1.readSensors() != S1_IN_S2_IN));
  lifer1.run(-250);
  fw.stop();
  rw.stop();

  while (!upWard1.touched());  //1号升降限位开关检测升降结束
  lifer1.stop();

  Adjust();
//阶段5 1号 4号轮子推动小车前进  
  fw.run(60);
  rw.run(60);
//阶段6 4号轮子限位开关检测到4号轮子碰到楼梯 主动轮停止 2号升降装置回收4号轮子
  while (!forWard2.touched());
  lifer2.run(-250);
  fw.stop();
  rw.stop();

  while (!upWard2.touched()); //1号升降限位开关检测升降结束
  lifer2.stop();
//阶段7 循环阶段1  
//阶段8 循环阶段2  
}

void Adjust() //陀螺仪控制1、2号升降电机控制平衡
{
    int p = 40;
    //float i = 0.05;
    float angle = 0;
    float targetAngle = 4;
    //float integration = 0;
    //float err = 0;

    do
    {
        gyro.update();
        angle = gyro.getAngleX();
        //err = (angle - targetAngle);
        //integration += err;
        lifer2.run((angle - targetAngle) * p);// + i * integration);
        //delay(10);
    }
    while(fabs(angle - targetAngle) > 1);

    lifer2.stop();
}



















评分

参与人数 1牛币 +1 收起 理由
野野马 + 1 一篇好科普文章!

查看全部评分

 楼主| 发表于 2017-10-27 20:32:11 | 显示全部楼层
还没完
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 3094
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 7280
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 6205
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 9200
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 8656
 楼主| 发表于 2017-10-27 20:32:41 | 显示全部楼层
最后的照片是开头
 楼主| 发表于 2017-10-27 20:33:08 | 显示全部楼层
还有
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 3783
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 7182
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 5859
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 3509
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 152
 楼主| 发表于 2017-10-27 20:33:47 | 显示全部楼层
还有
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 4763
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 6288
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 4009
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 165
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 375
 楼主| 发表于 2017-10-27 20:34:16 | 显示全部楼层
还有
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 9964
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 4153
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 7557
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 2779
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 67
 楼主| 发表于 2017-10-27 20:35:02 | 显示全部楼层
还有
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 7389
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 8593
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 4578
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 3091
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 3069
 楼主| 发表于 2017-10-27 20:35:41 | 显示全部楼层
图片多
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 7572
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 122
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 6215
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 1182
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 1657
 楼主| 发表于 2017-10-27 20:36:10 | 显示全部楼层
完了
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 4050
 楼主| 发表于 2017-10-27 20:38:28 | 显示全部楼层
最上面到接线图以上都是要用的材料
 楼主| 发表于 2017-10-27 20:40:52 | 显示全部楼层
接线图
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 877
发表于 2017-10-27 20:42:52 | 显示全部楼层
厉害了。
发表于 2017-10-27 22:49:46 | 显示全部楼层
我每天看贴无数,
基本上不回贴。
后来发现这样很傻,
很多比我注册晚的人分数都比我多,
于是我就把这段文字保存在记事本里,
每看一贴就复制粘贴一次。
帮LZ把贴子顶上去。
我也顺便挣点分
发表于 2017-10-27 23:16:35 | 显示全部楼层
我每天看贴无数,
基本上不回贴。
后来发现这样很傻,
很多比我注册晚的人分数都比我多,
于是我就把这段文字保存在记事本里,
每看一贴就复制粘贴一次。
帮LZ把贴子顶上去。
我也顺便挣点分
发表于 2017-10-28 06:32:32 | 显示全部楼层
自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:auto_han 5018 自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:auto_han 4685
发表于 2017-11-2 18:32:22 | 显示全部楼层
加精华帖
 楼主| 发表于 2017-11-3 13:37:41 | 显示全部楼层
野野马 发表于 2017-11-2 18:32 自已做了一个爬楼梯车 电机,自动爬楼梯车 作者:Ykh 7438
加精华帖

赞一个
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|关于模吧|APP下载|广告报价|手机版|企业会员|商城入驻|联系我们|模吧 ( 黔ICP备2022002348号-1 )

© 2013-2020 Moz8.com 模吧,玩出精彩!