×
模拟电子 > 模拟电路设计 > 详情

M1 Rover:无人自动驾驶机器人,与Arduino兼容

发布时间:2020-06-28 发布时间:
|

在建造了许多室内机器人后,决定建造一个能够在崎岖地形中行驶的户外机器人。称之为“M1-Robot”。

M1型机器人电机很容易驱动四台直流电机与Arduino一起驱动,所以它是任何机器人项目的完美之选,这可能成为一个更强大的机器人的神奇心脏,所以从头开始设计越野四轮驱动M1。

它不仅仅是一辆遥控车,它可以按照一套指令编程为自动驾驶,甚至可以通过远程计算机进行控制,它可以通过游戏控制器和自定义操纵杆(如遥控车)使用。

第1步:设计

设计自己的产品或原型很有趣,但当你决定以实时尺寸规模制作它时会变得更加复杂。因此,该项目最终选择了Google Sketch-up 2017作为功能强大且简单易用的设计工具,它允许您将模型的蓝图导出到激光切割机甚至3D打印机。

头三个星期用来设计和建造机器人的船体。至于材料,可以选择一张一张3毫米木板。由于时间的限制,机器人的最终布线不太好,包括将整个路障塞入船体。

该项目的机器人的名字是M1Rover。因为计划使用M2,M3等序列名开发它的版本。它在套件中设计,你所要做的就是用一些螺丝装配它。

 

第2步:组件和功能

  • 运行时间长达三个小时;
  • 专为Arduino Uno,Mega和Nano设计;
  • 5V-9V DC工作电压;
  • 3毫米厚的木质底盘;
  • 直径68mm的车轮L298N双H桥电机/步进电机;
  • 9v电池为直流电机供电;
  • 9v电池为Arduino供电;
  • LED灯7用于后部和前部;
  • HC-06蓝牙模块;
  • Arduino传感器屏蔽v5.0;
  • 超声波换能器HC SR04;

 

第3步:电机控制器

 H-Bridge通常用于控制电机的速度和方向,但也可用于其他项目,例如驱动某些照明项目(如高功率LED阵列)的亮度。

  • 确保将所有理由捆绑在一起; Arduino,电源和电机控制器。
  • 如果您不想控制PWM功能,则不需要PWM引脚。

 

第4步:组装机箱

 机箱已经使用激光切割机切割成几个部分,正如之前提到的那样,模型是在易于组装的套件中创建的,所以您所要做的就是按照下面的说明操作。

考虑到设计也很重要,当涉及到RC车时,它应该包含前灯和后灯。在M1-Robot的前面放置了4个白色LED,每个LED连接到220欧姆电阻,而在后面放了2个红色LED,每个LED有220欧姆电阻。这些LED可以由同一应用程序控制。

第5步:电路

电路有点棘手,因为当您决定同时控制许多电子部件时,您应该注意每个部件的顺序。

  • ArduinoSensor Shield 5.0;
  • ArduinoUno R3 L298N双H桥电机/步进电机;
  • 9v电池为直流电机供电;
  • LED灯7(2后)和(4前);
  • HC-06蓝牙模块;
  • 超声波换能器HC SR04;
  • 伺服电机9g;
  • 有源蜂鸣器;
  • 4个带轮子的直流电机;

 

第6步:软件

在编写M1-Robot的代码时考虑了大量的事情,使用GUI软件,您可以获得有关机器人状态的更多信息。

实际上代码分为两部分:

  • Arduino代码

Arduino代码与任何类型的控制器兼容,因为所有电子部件都经过编程以通过串口命令工作,因此您可以使用蓝牙模块发送器/接收器,PC,手机。

  • C#windows应用程序(附截图)

 

第7步:包装

  • 起动机

这款M1rover套件包含基本组件,而顶板允许轻松安装任何传感,操纵或计算机硬件。只需将传感器连接到板载和Rover电源即可开始使用。

  • EXPLORER

Explorer软件包支持基本的室内和室外自主功能,并且我使用通过IP地址连接到互联网的移动电话凸轮的IP摄像机。

  • MAPPING

Explorer包可以在车辆室外时进行基本的GPS跟踪,当您实时观察坐标路径时非常酷。

  • MANIPULATION

使用机器人手臂和2个手指50mm Gripper与世界互动。

 

重要提示:

并非所有伺服系统都具有完整的180度旋转。很多人没有。您可以编写测试以确定机械限制的位置。使用servo.writeMicroseconds而不是servo.write,因为它允许你使用1000-2000作为基本范围。许多伺服系统将支持600到2400之外的范围。

因此,尝试不同的值,看看你在哪里得到的嗡嗡声告诉你已达到极限。然后在你写作时只能保持在这些限度内。使用servo.attach(pin,min,max)时可以设置这些限制。

应该说,如果你想,你可以设置附加的最小和最大微秒,然后只需使用servo.write。它使用map()将您传递的0-180度值更改为微秒值。

如果你把它保持在最后一个停止位置很快就会出现,它正在拉动大电流并迅速升温,通过这种方式加载它可以很容易地“烹饪”伺服电机任何时间长度。

找到真正的移动范围,并确保代码不会尝试将其推到终点站点,constrain()Arduino函数对此有用:

servo.write(constrain(angle,10,160)); //约束10..160范围内的角度。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
使用一次侧回授的4.2 W GU10 LED照明驱动器