2019-3-5 14:32:42 [显示全部楼层]
2122浏览
查看: 2122|回复: 2

[创客活动] 蘑菇云创客成员之2019RCJ国际青少年机器人赛

[复制链接]
蘑菇云创客成员之2019RCJ国际青少年机器人
2018年的年底,我们在DUDU老师的带领下开始了2019RCJ国际青少年机器人赛中国选拔赛的准备。
我们的队员来自不同的学校,不同的年龄,最大17岁,最小10岁,大家集中在上海蘑菇云创客空间
开始搞事情啦。:P
先讲讲我们的作品第1版的方案,那是个关于海洋动物螃蟹的主题,我们把机器人设计成螃蟹,螃蟹
的足用齿轮连动,不多写,上图吧!
crab2.jpg
crab1.jpg

螃蟹机器人----齿轮连动的螃蟹(crab)设计
A) 内部结构设计
一:齿轮可以安装在轴承外部,由轴承带动进行传动,齿轮在转动的时候同时带动其他齿轮的转动,轴承与齿轮二者是缺一不可的。
二:齿轮主要提供一个相互的咬合力与扭矩,而轴承主要是提供一个传动功能。齿轮传动需要安装在轴上,而轴承是是为轴提供支撑的构件,有了轴承的支撑更容易使轴及轴上构件有比较准确的运转精度,轴承滚动体可以减少轴承与轴的摩擦。
三:轴承属于易损件,损坏后可以进行更换和维护,这样可以减少轴承的磨损。
制作上的难点是齿轮之间的啮合空隙需要反复试验。调试过程中硬件与软件的配合非常重要。
B) 设计
选择怎样的输出模块也非常重要,步进电机需要4个数字口,舵机只需要1个数字口
C) 程序设计:
采用了模块化设计思路,分别调试每个功能模块
crab3.jpg
如果你也想参加,请扫码联系我!

DUDU  学徒
 楼主|

发表于 2019-4-11 20:28:18

蘑菇云创客成员之2019RCJ国际青少年机器人赛

关于齿轮的设计
在齿轮设计过程中有以下几个关键点需要注意:
1.齿轮啮合条件
两齿轮的模数必须相等,两齿轮分度圆上的齿形角必须相等。两齿轮法面模数相等,齿形角相等,螺旋角相等且螺旋方向相反。两齿轮的大端模数和齿形角分别相等。
                              
2. 齿轮啮合间隙
一对齿轮装配后,齿侧间隙是固定值。标准直齿圆柱齿轮,是无侧隙啮合的,齿侧间隙为0;齿侧间隙等于一个齿轮节圆齿槽宽减另一个齿轮节圆齿厚的差值。实际齿轮啮合是有侧隙的,通过控制齿厚(齿厚减薄)保证侧隙;根据使用条件(载荷,等)、使用环境(油温,等)。
3.齿轮的齿边变成圆弧
4.大齿轮与小齿轮啮合,小齿轮的齿比大齿轮小一点,通过观察乐高的齿轮可以得到这个结论.
A)螃蟹机械结构的改进.
                                改进后这个齿轮的中心安装舵机
                                   原来舵机安装在这个齿轮
改进了安装位置,这样齿轮的传动更加均匀,齿轮转动的时间基本一致,对舵机的扭力要求会减小.
B) 螃蟹车底盘轮子的排列分布
  编程控制舵机带动8齿轮转,跟上节奏
舵机齿轮程序
子函数foot()
流程图:
2个超声波模块同时放置, 程序很容易,关键是要避开回波干扰
void csb(){
   ////////////////1号超声波////////////////////////////////////
digitalWrite(Tr1, LOW); //低高低电平发一个短时间脉冲去TrigPin
  delayMicroseconds(2);       // delayMicroseconds在更小的时间内延时准确
digitalWrite(Tr1, HIGH);
  delayMicroseconds(10);
digitalWrite(Tr1, LOW); //通过这里控制超声波的发射
  cm1 = pulseIn(Ec1, HIGH) / 58.0; //将回波时间换算成cm
  ////////////////2号超声波////////////////////////////////////
   digitalWrite(Tr2, LOW);
  delayMicroseconds(2);       // delayMicroseconds在更小的时间内延时准确
  digitalWrite(Tr2, HIGH);
  delayMicroseconds(10);
  digitalWrite(Tr2, LOW);
  cm2 = pulseIn(Ec2, HIGH) / 58.0;  
  Serial.print(cm1);
  Serial.print("cm1");
Serial.println();
Serial.print(cm2);
Serial.print("cm2");
Serial.println();
}
void trackA()
{
forward();
csb();
  if( cm1 <50)
  {
  stopped();delay(100);
  right();
  delay(200);
  }
else if(cm2 <50)
{
  stopped();delay(100);
  left();
  delay(200);
  }

回复

使用道具 举报

DUDU  学徒
 楼主|

发表于 2019-4-11 20:30:56

  螃蟹B 硬件接口
//  CrabB ZIGBEE(通讯开关接收A信号) 01 motor1(移动小车)891011   舵机(齿轮8足)13
//传感器 超声波1(跟踪23 )超声波2(跟踪45 )
树莓派3 + HC-SR04超声波测距模块
                               HC-SR04 介绍
HC-SR04 模块可以测量 3cm - 4m 的距离,精确度可以达到 3mm。这个模块包括 超声波发射器、超声波接收器和控制电路三部分。有4 个引脚。
     接线方式4 个引脚由 2 个电源引脚(Vcc 、GND)和 2 个控制引脚(Trig、Echo)组成。
Vcc 和 Gnd 接5v DC 电源,但不推荐用独立电源给它供电,应使用树莓派或单片机的 GPIO 口输出 5v 和 Gnd 给它供电。不然会影响这个模块的运行。
Trig 引脚用来接收来自树莓派的控制信号。接任意GPIO 口。
Echo 引脚用来发送测距结果给树莓派。接任意 GPIO口。
(注意 Echo 返回的是 5v信号,而树莓派的 GPIO 接收超过 3.3v 的信号可能会被烧毁,因此需要加一个分压电路)

HC-SR04 的测距过程

1. 树莓派向 Trig 脚发送一个持续 10us 的脉冲信号。
2. HC-SR04 接收到树莓派发送的脉冲信号,开始发送超声波(start sending ultrasoun),并把 Echo置为高电平。    然后准备接收返回的超声波。
3. 当 HC-SR04 接收到返回的超声波 (receive returned ultrasound) 时,把 Echo 置为低电平。

从上述过程可以看出, Echo 高电平持续的时间就是超声波从发射到返回所经过的时间间隔 ~

接线跟前文所说的一样。 GPIO 2 脚接 Trig , GPIO 3 脚接Echo 。树莓派的 +5v 和 Gnd 与 HC-SR04 的 Vcc 和 Gnd相连。还有一个分压电路,一端接 Echo ,另一端接 Gnd。
1k 和 2k 电阻组成了一个分压电路,使 GPIO 3 脚的电压降到了 3.3v 左右。
python 程序
  2 脚连 Trig ,设为输出模式; 3 脚连 Echo,设为输入模式。
然后向Trig 引脚输入10us 的脉冲:
time.sleep()  接收的参数单位为 s ,于是把10 us 转换为0.00001 s 。
接收到这个脉冲后,HC-SR04发射出超声波,同时把Echo 置为高电平。在发射之前,Echo一直为低电平。
据此编写程序,记录超声波发射时的时间。
然后记录超声波返回时的时间。 这样就获得了我们需要的数据pulse_start 和 pulse_end ,可以算出距离了~
测得距离(单位:m) =  (pulse_end - pulse_start) * 声波速度 / 2
测得距离(单位:m)  = (pulse_end - pulse_start) * 声波速度 / 2 声波速度取 343m/s 。
然后再把测得的距离转换为 cm。
测得距离(单位:cm) = (pulse_end - pulse_start) * 声波速度 / 2 * 100
                            =  (pulse_end - pulse_start) *17150
        
        
-GND
   
-VCC
   
-SCL
   
-SDA
   
   
   小强small.jpg   STM32 F103T8U6 数字指南针
      
        
1-VCC
   
2-VCC
   
3-SCL
   
4-GND
   
   
  

回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail