【全3D打印坦克——基于Arduino履带式机器人】

这篇具有很好参考价值的文章主要介绍了【全3D打印坦克——基于Arduino履带式机器人】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在教程中,我将向您展示我如何构建超酷的无线电控制履带式车辆,机器人平台或坦克,应有尽有。我从头开始设计这个东西,完全可以3D打印,所以你可以轻松地打印所有东西并自己构建一个。

您可以观看以下视频或阅读下面的书面教程。

1. 概述

我这个项目的目标是制作一个多功能平台,可以穿越多种类型的地形,并可用于各种应用。最好的办法是使用连续轨道系统。履带将车辆的重量分布在更大的表面积上,从而提供出色的抓地力并降低卡在松软的地面、泥泞或雪地中的几率。

机器人平台在泥泞中行驶得很好,可惜我没有机会在雪地上测试它。我希望我能在我未来的一些视频中安装机械臂或炮塔。在平台顶部使用机械臂,我们可以执行各种任务,例如抓取和移动某些东西,或者我们可以将相机放在上面并使用它进行目视检查等等。或者例如,我们可以制作一个可以发射 NERF 飞镖的炮塔,结合我已经安装在这个平台上的简单但很酷的 LED 照明,我们可以玩得很开心。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

至于悬架,我采用了科视Christie悬架系统,该系统已在坦克中使用多年。通过这种设置,每个车轮都有一个单独的悬架或一个弹簧和一个减震器。

这使得车辆能够在不平坦的地形上平稳运行并爬上障碍物,同时保持轨道和地形之间的良好接触表面。

为了控制3D打印坦克,我使用了一种廉价的商用RC发射器,它可以向平台发送命令。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

在平台上,我有一个合适的RC接收器,它可以接收命令并将其发送到微控制器。该平台的大脑是基于Atmega2560微控制器的电路板,为了轻松地将所有内容连接在一起,我制作了一个定制的PCB,可以简单地连接到电路板顶部。

尽管如此,现在系好安全带,我将引导您完成构建此机器人平台的整个过程,从设计,3D打印,组装,连接电子元件和微控制器编程开始。

2. 设计机器人平台

我使用 SOLIDWORKS 设计了这个机器人平台,SOLIDWORKS 也是本视频的赞助商。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

— 赞助部分 —

“值得注意的是,这些行业领先的专业级设计工具现在可供所有制造商使用,价格非常低,每年只需99美元或每月9.99美元。没错,3DEXPERIENCE
SOLIDWORKS FOR Makers非常适合任何学习交易,制作DIY项目等的人。
【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

此优惠包括 3DEXPERIENCE SOLIDWORKS PROFESSIONAL,这是该优惠中最受欢迎的 CAD 工具,可在您的 PC
本地运行。您可以使用 3D体验平台将文件存储在本地或云中。

“xDesign”,基于浏览器的CAD,您可以将其与3DEXPERIENCE
SOLIDWORKS一起使用,也可以单独使用。它非常适合随时随地在任何设备上进行建模。

“xShape”,基于浏览器的自由曲面CAD,易于在任何设备上进行曲面建模。

““Visualize Connected”,轻松创建照片质量的图像、动画、交互式 Web 内容等,以打动您的观众。

““NC Shop Floor Programmer”,用于 3 轴铣削和线切割的智能加工策略的 CAM,易于使用的软件包。

单击下面的链接,您将获得特别的 20% 折扣——因此您可以立即开始使用最好的!非常感谢 SOLIDWORKS 赞助和支持这样的教育内容。"

立即购买: http://www.solidworks.com/makers20

了解更多: https://discover.solidworks.com/3dexperience-solidworks-makers

— 回到主题 —

让我解释一下我是如何想到机器人平台设计的。设计的第一个输入参数是我拥有的这些RC减震器及其尺寸。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我有其中的 8 个,这意味着每侧将有 4 个车轮,当以 41 毫米行程延伸时,它们的长度为 11 毫米。根据这些尺寸,我想为车轮获得更大的垂直行程,因此我想出了这个机制,使我的车轮垂直行程为16mm。

我的意思是,如果我将减震器和方向轮连杆的接头移近方向,我可以获得更大的行驶距离,但那样我会失去弹簧的力量,或者我需要更坚固的弹簧来正确固定平台。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我用 SOLIDWORKS 做了一些简单的模拟,以检查不同机构对弹簧的反作用力,因此我选择了这种机制,它也提供了良好的整体紧凑性。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

如果我们仔细观察前轮,我们可以看到它是如何与惰轮连接的,惰轮提供了履带的动态张力。当车轮上升时,履带圆周变小,因此张力松动。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

通过这里的这种连接,当发生这种情况时,惰轮被向前推以张紧轨道。通过这种连接,我们还可以通过调整螺栓和距离螺母来静态张紧轨道。

在背面,我们有由三部分组成的链轮。它有轴耦合器和链轮的左右部分通过三个 M3 螺栓连接在一起。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

链轮上的关键尺寸是节距,因为它必须与轨道的节距相匹配。这里的节距是 11 毫米,我选择链轮有 12 个齿,这使链轮的节距直径约为 42 毫米。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

11mm节距实际上是由轨道链节的设计定义的。我对轨道链接的目标是尽可能紧凑,只需一个额外的零件或销钉即可与下一个链接连接,同时足够坚固,可以用3D打印机制作。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

最重要的是,在3D打印时,我想避免为零件使用任何支撑材料,我实际上通过这种设计实现了这一目标。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

为了将履带链节相互连接,我计划使用直径为2mm的销钉,因此我将一侧的尺寸定为2mm,以紧密配合,另一侧为2.3mm,以松散配合,以便轨道链接可以自由旋转。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

链轮齿进入这个开口,其中轨道连杆的销以8.8mm的直径形成,而链轮直径为9.1mm,以便松配合正常工作。
【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

一旦我定义了所有这些零件,我就在装配环境中画了一个草图,一个围绕链轮、惰轮和车轮的封闭轮廓。


然后,我将此草图与 SOLIDWORKS 链构件阵列特征结合使用,以生成沿该轮廓的所有轨迹链接。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我设计了机器人平台的其余部分,所有东西都连接的底座,容纳一些LED和顶盖的侧面,我认为这是一种现代而酷炫的风格。由于该平台的整体尺寸比大多数3D打印机大,大约400mm乘300mm,我将所有部件分为两部分,因此我们几乎可以在任何3D打印机上打印它们。它们通过一些支架和 M3 螺栓连接在一起。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

为了组装整个机器人平台,我们需要各种M3和M4螺栓和螺母,以及一些螺纹插件和轴承。您可以在下面的装配部分找到此项目所需的所有组件的完整列表。

3. 3D 模型和 STL 下载文件

当然,在这里你也可以下载这个3D模型以及3D打印所需的STL文件。

SOLIDWORKS 文件:

图标 3D 可打印履带式机器人平台 - SOLIDWORKS
文件
1 文件 9.45 MB 步骤文件:

图标 3D可打印履带式机器人平台 -
STEP文件
1 文件 803.38 KB STL 文件:

图标 3D可打印跟踪机器人平台 -
STL文件
1 文件 2.14 MB

3.1 3D打印

3D打印时,为了获得尺寸精确的3D打印零件,我们应该使用切片软件中的水平扩展和孔水平扩展设置。如果我们默认保留这些设置,则打印的外部尺寸以及孔通常小于原始模型。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我将水平扩展设置为0.02mm,将孔水平扩展设置为0.04mm。当然,您应该进行一些测试打印,以查看哪些值将在3D打印机上获得最佳效果。我们需要零件的精确尺寸,以便轻松地将它们相互组装,并与轴承和螺栓等其他组件组装在一起。

在3D打印轨道链接时,我使用木筏作为构建板粘附,因为它们与床板的接触面有点小,如果打印机上的床附着力不是那么好,则可能无法很好地粘合。特别是在打印大批量时,使用木筏更安全。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

3.2 组装 3D 打印坦克 – 履带式机器人平台

好的,这里我有机器人平台的所有3D打印部件。老实说,打印所有内容花费了相当长的时间。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

例如,每个基本部分的打印时间约为 22 小时,所有 156 个轨道链接的打印时间约为 96 小时。大约我们需要 200 小时来打印所有内容。幸运的是,我有两台3D打印机,所以我花了大约100个小时。

3.3 零件清单

以下是组装此3D打印坦克-机器人平台项目所需的组件列表。电子元件的列表可以在本文的电路图部分找到。

8x 遥控减震器
8x 弹簧
40x 滚珠轴承 624 – 4x13x5mm
M3螺纹嵌件
M3和M4螺栓和螺母
螺栓: M4x40mm– 8个;M4x35毫米 – 2个;M4x30毫米 – 8个;M4x25毫米 – 2 件;M3x25毫米 – 16 件;M3x20毫米 –8个;M3x16毫米 – 10个;M3x12/14毫米 – 32 件;M3x10毫米 – 8个;M3x8毫米 – 14 个
螺母: M4 –25 个 ;M3 – 30个
垫圈: M4 – 30个

我从组装底座开始。就像我说的,它由两个部分组成,它们将使用一些支架和 M3 螺栓和螺母相互连接。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

为了固定侧支架,我使用的是 M3,5 毫米长的螺纹嵌件,插入底座的侧壁。这样,墙的外部将是干净的,没有螺栓和螺母,以便轨道可以在附近运行。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

然后,我用一些 M3 螺栓将用于将减震器固定到位的支架。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

接下来,我将轴承安装在车轮臂将枢转的位置。轴承的外径为 13 毫米,内径为 4 毫米,每个车轮需要两个轴承。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

作为销钉,我使用的是长度为 4 毫米的 M30 螺栓。我们需要在轴承和臂之间放置一个垫圈,并用自锁螺母从内部将它们固定到位。我们应该小心我们把这个关节收紧多少,不要太紧,但也不能太松。

接下来,我们可以安装减震器。我们使用其包装随附的 M1.4 螺栓将其固定到位。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我没有那把小螺丝刀,所以我用钳子固定螺栓。到目前为止,该机制似乎运行良好。

接下来,我们可以将车轮安装在手臂的底端。车轮由两部分组成,以避免使用支撑材料打印。也许它可以作为一个整体打印出来,但我没有尝试它是如何出来的。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

通过这种方式,我们必须连接两个部分,我决定为此目的使用 2 毫米钢棒,与我将用于将轨道连杆连接在一起的钢棒相同。这实际上是用于焊接的黄铜棒,它有点软,只需钳子即可轻松切割成尺寸。

我为每个车轮插入了三根长约 23 毫米的杆,然后在车轮的两侧安装了两个我以前使用的相同轴承。同样,和以前一样,我使用 M4 螺栓、垫圈和自锁螺母将车轮固定到位。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

车轮应该能够自由旋转,同时在轴上没有任何间隙。

现在我们只需要对其他车轮重复此过程即可。至于前轮,我们有一个略有不同的臂,它有一个杠杆,可以为轨道提供动态张力,但安装是相同的。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

接下来,我们可以组装惰轮的机构。它由三个3D打印部件,一些螺栓和一个距离螺母组成。

在将第一个连杆固定到位之前,我们应该在背面添加一个 M4 自锁螺母,稍后我们将在其上安装惰轮。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我使用相同的 2 毫米铜棒作为这些接头的引脚。现在,在惰轮侧的第二个连杆处,我们可以借助 M15 螺栓固定一个 3 毫米长的 M3 距离螺母。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

在另一侧,我们放置一个 20 毫米长的 M3 螺栓和一个螺母,它将进入远处的螺母。通过此设置,现在我们可以调整惰轮和车轮臂之间的距离,因此我们可以静态和动态地张紧轨道。然后我们可以简单地用 M4 螺栓将惰轮固定到位,因此我们完成了这个张力系统以及整个悬架系统。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

好的,接下来我们可以组装链轮,为此,首先我们需要安装电机。我将基础平台设计为接受直径为37mm的电机,中心轴或偏轴。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我们可以安装任何 RPM 范围为 12 到 20 RPM 的 1000V 直流电机,当然这取决于机器人平台的应用,但我们稍后将在视频中讨论这一点。电机用六个 M3 螺栓固定到位。

为了将链轮连接到电机轴上,首先我们需要准备轴耦合器,或在其中安装一些螺纹插件。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

然后我们可以将耦合器插入到位并用 M3 沉头螺钉固定。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

然后插入链轮的两个部分并使用三个 M3 螺栓固定。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

因此,我们已经完成了平台传动系统,现在是时候享受组装轨道的乐趣了。没错,我发现组装赛道很有趣。

以下是对轨道链接的仔细观察,从中我们可以看到它们是多么简单和干净。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

它们可以从3D打印机立即使用,因为我们在3D打印它们时没有使用任何支持。我们只需要 2mm 引脚来连接它们。就像我已经说过的,我们可以轻松地从 2mm 黄铜焊条中获得它们。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

链节上的外孔紧密贴合,因此我们需要使用一些力来插入它们,但这样可以确保它们不会脱落。链节上的内孔是松散配合的,可确保履带链节之间的自由旋转。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

现在,我们只需要泡一杯茶或咖啡,然后享受组装几个小时的乐趣。一旦你连接了其中的几个,你就会意识到乐趣,看看赛道有多酷。我们总共需要 78 个轨道链接来组装单个轨道。就杆长度而言,每条轨道需要大约 3.5 米,因为每根销应该长约 43 毫米。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

准备好轨道后,我们可以简单地将其缠绕在链轮、车轮和惰轮上,并在现场用另一个 2 毫米的销子闭合环。我们可以在这里注意到,在 78 个履带链接中,履带的张力恰到好处,尽管最后一个车轮稍微向上移动。

之所以如此,是因为弹簧不够强壮。我们可以通过调整减震器上的这个螺母来稍微调整弹簧张力,尽管这还不够。因此,我决定将减震器随附的原始弹簧更改为更坚固的弹簧。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

更换弹簧非常容易,因为我们只需要拧下减震器的一端,插入更强的弹簧,然后再次拧紧杆。我的弹簧比原来的要宽一点,所以我不得不在底部使用M4垫圈。现在,这个弹簧有足够的力在安装带有 78 个连杆的履带时将车轮固定到位。

我最终更换了所有减震器的弹簧,因为我意识到它们的强度不足以承受整个平台的重量。这完成了平台的整个驱动系统,我认为结果非常好。

如果需要,我们现在可以使用惰轮上的距离螺母来调节履带张力。当然,让轨道有点松动是可以的,以便它正常工作。履带松动的顶部部分支撑在减震器支架上。

我将电机连接到电源以检查其工作方式。这对我来说似乎是完美的。看到你用这么多3D打印部件创造的东西真的是一种很棒的感觉。

显然,我们必须重复相同的程序来组装另一侧。完成此操作后,机器人平台已完成80%。接下来,我将安装侧面板,这些侧面板主要用于视觉外观。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我们在一些支架和 M3 螺栓的帮助下将它们固定到位。在顶部转到将包围平台的盖子。对于这个视频,我这样设计它只是为了视觉外观。

就像我之前提到的,在我未来的一些视频中,我计划在这个平台上添加一个机械臂或一个炮塔,这意味着我将不得不适当地设计顶部。

您可能还喜欢
【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

DIY火星毅力号火星车复制品 - 基于Arduino的项目

4. 机器人平台电路图

现在我们可以继续这个项目的电子设备了。就像我说的,我将使用基于 ATmega2560 微控制器的电路板。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

您可以从以下链接获取此项目所需的组件:

2x 12V 直流电机 – 50 至 500 RPM
DRV8871直流电机驱动器
Arduino MEGA
3S锂聚合物电池
XT60连接器 飞天遥控发射器

为了驱动两个电机,我将使用两个DRV8871直流电机驱动器,它们支持PWM控制和高达3.6A的峰值电流。直流电机的工作电压为 12V,我们将使用 3S 锂聚合物电池为所有电池供电,并提供大约 12V。我还包括一个 5V 稳压器 LM350 IC,以便为将来的其他用途提供专用的 5V 电源,例如,用于将伺服电机连接到它。在本视频中,我们将使用此 5V 为 RC 接收器和一些 LED 供电。

我用于这个项目的LED是白色和红色的简单5mm LED。我将它们排列如下:

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

在后部,我们每侧有两个红色 LED 作为尾灯,在前部每侧有三个白色 LED 作为大灯。此外,顶盖上有六个LED作为远光灯。为了使这些LED正确点亮,我们需要一个合适的电路,其中包括用于限制电流的电阻器。我将它们的并联和串联组合在一起。
【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

例如,对于前大灯,我使用两条 12V 的平行线为 6 个 LED 供电,左右两侧各 3 个,它们串联连接。根据LED的正向电压和电流,我计算了每条线路所需的电阻值,在这种情况下为150欧姆。为了激活LED,我使用了一些额定电流为200mA的通用NPN晶体管。

最后,我制作了一个简单的分压器,我将用于监控电池电压。简单地说,来自电池的12V电压降至5V以下,因此它们可以进入微控制器的模拟输入。在程序中,我们可以将值转换回实际电压值,并将其从RC接收器发送到RC发射器,在那里我们可以在显示屏上看到该值。

4.1 定制电路板设计

我实际上最终有很多连接, 所以为了避免一团糟,我不得不为这个项目设计一个定制的 PCB.

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

该PCB将与基于ATmega2560微控制器的电路板兼容,直接安装在其顶部。
【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我包括一个 3.3V 稳压器和一个NRF24L01收发器模块的连接,以防我们想使用该模块控制平台。此外,我还包括一个 12V 电源轨,以及 5V 和 6V 电源轨,并带有数字引脚连接,用于将伺服电机连接到它们。6V 电源轨可由一个外部降压转换器供电。

我从PCBWay订购了PCB。在这里,我们可以简单地上传 Gerber 文件, 选择我们 PCB 的属性, 并以合理的价格订购.
【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我没有更改任何默认属性,除了我选择为白色的 PCB 颜色.您可以从 PCBWay 项目共享社区找到并下载 Gerber,您也可以通过该社区直接订购 PCB.

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

另外,您可以在此处下载 Gerber 文件:

图标
3D可打印履带式机器人平台Gerber
1 文件 123.02 KB

然而,几天后,PCB到达了。PCB的质量很棒, 一切都与设计中的完全相同.

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划
组装 PCB 非常简单,因为所有东西都贴有标签.我首先在PCB底部焊接引脚接头,用于ATmega2560连接,然后继续焊接顶部。为方便起见,我们应该首先焊接较小的组件,如电阻器和晶体管,然后焊接较大的组件,如 LED 和电源连接器。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我为所有连接都使用了引脚接头,因为它可以灵活地进行更改,如果某些内容无法正常工作。我没有焊接外部降压转换器及其电源轨的连接器,以及3.3V稳压器,因为我现在无论如何都不打算使用它们。我真的很喜欢这个PCB的漂亮和干净,这种白色.

4.2 完成 3D 打印储罐组件

好的,首先,我们用一些M3螺栓将微控制器板固定到位,然后在它上面是定制的PCB。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

现在是时候安装 LED 了。它们将在这些可容纳 5mm LED 的支架的帮助下安装在侧板上。如原理图中所述,我们应该将每行LED串联焊接。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

阴极是黑线,阳极是红线。我们将这些电线穿过侧板上通向 PCB 的小开口.

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

LED 支架部分旨在与侧面板紧密贴合,因此一旦插入到位,我们就会获得漂亮干净的外观。
【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

远光灯 LED 直接放置在顶前盖上。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

为了连接 LED,我在 PCB 上焊接了 XH2.54mm 杜邦公连接器,因此我必须在电线上安装合适的杜邦母连接器。我们需要那个钱包的压接钳,但在制作这个项目时,我没有随身携带。
【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我用普通的小钳子来完成这项工作,连接很好。每条LED线都应进入PCB上标记的相应连接器。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

至于电机,我没有合适的连接器,所以我将电线直接焊接到它们上。电机连接进入DRV8871驱动板,然后进入PCB。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

对于无线电通信,我使用的是FLYSKY RC发射器和接收器,它们非常实惠且工作出色。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

为了将接收器连接到微控制器,我们可以使用跳线。接收器通过I-BUS和串行端口与微控制器通信,因此我们只需要三根电线,VCC,GND和信号引脚。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

如果我们想将数据从接收器发送回发射器,在我们的例子中,为了监控电池电压,我们还需要将接收器的传感器I-BUS连接到另一个串行端口。

最后,我们可以连接锂聚合物电池。根据电池的不同,我们需要一个合适的连接器。它进入 12V 连接器,紧挨着它,我们有一个 ON/OFF 连接器,它将连接一个开关,用于打开和关闭平台的电源。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

请注意,在为电路板供电之前,我们应首先将 RC 接收器从电源中移除,并使用微调器将 LM350 IC 的可变电压调节至 5V。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

现在我们只需要把顶盖放到位,我们就完成了这个项目。

5. 机器人平台编程

现在我们必须对3D打印坦克/机器人平台进行编程。这是这个机器人平台的Arduino代码。

/*
      3D Printed Tracked Robot Platform - Arduino Code
      by Dejan, www.HowToMechatronics.com

     Libraries:
     IBusBM: https://github.com/bmellink/IBusBM
*/

#include <IBusBM.h>

#define motorLeft_IN1 4
#define motorLeft_IN2 5
#define motorRight_IN1 6
#define motorRight_IN2 7

IBusBM IBus;
IBusBM IBusSensor;

int ch0, ch1, ch6, ch8 = 0;

int motorSpeed, steeringValue, leftMotorSpeed, rightMotorSpeed = 0;

int ledBlinkPeriod = 50;
int isOn = LOW;
unsigned long time_now = 0;

void setup() {

  Serial.begin(115200);
  IBus.begin(Serial1, IBUSBM_NOTIMER); // Servo iBUS
  IBusSensor.begin(Serial2, IBUSBM_NOTIMER); // Sensor iBUS

  IBusSensor.addSensor(IBUSS_INTV); // add voltage sensor

  // DC motors control - set them stationary

  // Left track
  digitalWrite(motorLeft_IN1, LOW);   // PWM value
  digitalWrite(motorLeft_IN2, LOW); // Forward

  // Right track
  digitalWrite(motorRight_IN1, LOW);   // PWM value
  digitalWrite(motorRight_IN2, LOW); // Forward


  digitalWrite(46, LOW);
  digitalWrite(47, LOW);
  digitalWrite(48, LOW);


}

void loop() {
  // Reading the data comming from the RC Transmitter
  IBus.loop();
  // ch0 - left and right; ch1 - forward and backward;
  ch0 = IBus.readChannel(0); // ch0 - left and right;
  ch1 = IBus.readChannel(1); // ch1 - forward and backward;
  ch6 = IBus.readChannel(6); // ch6 - Headlights
  ch8 = IBus.readChannel(8); // ch8 - High beam



  // convert the incoming date into suitable PWM value
  steeringValue = map(ch0, 1000, 2000, -185, 185); // 0 to 185 range because then I add +70 in order to avoid low PWM values as to motors won't start if so
  motorSpeed = map(ch1, 1000, 2000, -185, 185);
  motorSpeed = abs(motorSpeed);

  leftMotorSpeed = 70 + motorSpeed + steeringValue; // 70 + (0-185) + (0 - 185 ) =  70 - 255 so this range from 70 to 255 is used as PWM value
  rightMotorSpeed = 70 + motorSpeed - steeringValue;

  leftMotorSpeed = constrain(leftMotorSpeed, 0, 255); // constrain the PWM value from 0 to 255
  rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);

  // if PWM is lower than 72, set PWM value to 0

  if (leftMotorSpeed < 72) {
    leftMotorSpeed = 0;
  }
  if (rightMotorSpeed < 72) {
    rightMotorSpeed = 0;
  }
  // if right joystick goes up > move forward
  if (ch1 > 1510 && ch1 < 2000) {
    analogWrite(motorLeft_IN1, leftMotorSpeed);  // PWM input
    digitalWrite(motorLeft_IN2, LOW); // Direction - Forward

    analogWrite(motorRight_IN1, rightMotorSpeed);  // PWM input
    digitalWrite(motorRight_IN2, LOW); // Direction - Forward
  }

  // if right joystick goes down > move backward
  if (ch1 > 1000 && ch1 < 1420) {
    digitalWrite(motorLeft_IN1, LOW);  // Direction - Backward
    analogWrite(motorLeft_IN2, leftMotorSpeed); // PWM input

    digitalWrite(motorRight_IN1, LOW);  // Direction - Backward
    analogWrite(motorRight_IN2, rightMotorSpeed); // PWM input
  }
  // if right joystick is in the middle, don't move
  if (ch1 > 1420 && ch1 < 1520) {
    if (leftMotorSpeed < 75 && rightMotorSpeed < 75) {
      digitalWrite(motorLeft_IN1, LOW);
      digitalWrite(motorLeft_IN2, LOW);

      digitalWrite(motorRight_IN1, LOW);
      digitalWrite(motorRight_IN2, LOW);
    }
    // if right joystick move just left or right, without going up or down, move the tank left or right (only 1 motor move)
    else {
      analogWrite(motorLeft_IN1, leftMotorSpeed);  // PWM input
      digitalWrite(motorLeft_IN2, LOW); // Direction - Forward

      analogWrite(motorRight_IN1, rightMotorSpeed);  // PWM input
      digitalWrite(motorRight_IN2, LOW); // Direction - Forward
    }
  }

  // LEDs control

  // Headlights and Taillights LEDs control
  if (ch6 > 1500) {
    digitalWrite(47, HIGH);
    digitalWrite(48, HIGH);
  }
  else {
    digitalWrite(47, LOW);
    digitalWrite(48, LOW);
  }
  // High beam LEDs control
  if (ch8 == 1500) {
    digitalWrite(46, HIGH);
  }
  // If rocker switch in position 3 (2ooo value) - flasing with the high beam LEDs
  else if (ch8 == 2000) {
    if (millis() >= time_now + ledBlinkPeriod) {
      time_now += ledBlinkPeriod;
      if (isOn == HIGH) {
        isOn = LOW;
      }
      else {
        isOn = HIGH;
      }
      digitalWrite(46, isOn);
    }
  }
  else {
    digitalWrite(46, LOW);
  }

  // Monitor the battery voltage
  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.00 / 1023.00) * 3.02; // Convert the reading values from 5v to suitable 12V
  // Send battery voltage value to transmitter
  IBusSensor.loop();
  IBusSensor.setSensorMeasurement(1, voltage * 100);
}

Code language: Arduino (arduino)
代码概述
因此,使用 IBusBM 库,我们从 RC 发射器读取传入数据。

// Reading the data comming from the RC Transmitter
  IBus.loop();
  // ch0 - left and right; ch1 - forward and backward;
  ch0 = IBus.readChannel(0); // ch0 - left and right;
  ch1 = IBus.readChannel(1); // ch1 - forward and backward;
  ch6 = IBus.readChannel(6); // ch6 - Headlights
  ch8 = IBus.readChannel(8); // ch8 - High beam

Code language: Arduino (arduino)
右操纵杆、通道 0 和 1 用于控制平台的运动,两个摇臂开关通道 6 和 8 用于控制 LED。

我们将输入的数据转换为适合直流电机PWM控制的值,从0到255。

// convert the incoming date into suitable PWM value
  steeringValue = map(ch0, 1000, 2000, -185, 185); // 0 to 185 range because then I add +70 in order to avoid low PWM values as to motors won't start if so
  motorSpeed = map(ch1, 1000, 2000, -185, 185);
  motorSpeed = abs(motorSpeed);

  leftMotorSpeed = 70 + motorSpeed + steeringValue; // 70 + (0-185) + (0 - 185 ) =  70 - 255 so this range from 70 to 255 is used as PWM value
  rightMotorSpeed = 70 + motorSpeed - steeringValue;

  leftMotorSpeed = constrain(leftMotorSpeed, 0, 255); // constrain the PWM value from 0 to 255
  rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);

Code language: Arduino (arduino)
我们使用 analogWrite() 函数适当地将 PWM 值发送给驱动器和电机。

// if right joystick goes up > move forward
  if (ch1 > 1510 && ch1 < 2000) {
    analogWrite(motorLeft_IN1, leftMotorSpeed);  // PWM input
    digitalWrite(motorLeft_IN2, LOW); // Direction - Forward

    analogWrite(motorRight_IN1, rightMotorSpeed);  // PWM input
    digitalWrite(motorRight_IN2, LOW); // Direction - Forward
  }

Code language: Arduino (arduino)
总体而言,代码并不复杂,因为机器人平台本身没有复杂的功能。

6. 测试3D打印机器人 - 跟踪机器人平台

上传代码后,我们可以启动机器人平台和RC发射器进行测试。在发射器显示屏上,我们可以注意到锂聚合物电池电压,以及接收器和发射器电压。
【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我们有它。使用正确的操纵杆,我们可以控制平台的运动。使用左侧摇臂开关,我们控制大灯和尾灯 LED,使用右侧 3 向摇臂开关控制远光灯 LED。远光灯LED有两种模式,始终亮起和闪烁模式。

我们可以在这里注意到,我安装的电机对于这个平台来说实际上有点功率不足。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我们可以看到,操纵杆几乎位于顶部,轨道才能开始移动。另外,我可以用手非常轻松地停止赛道。悬架系统和履带本身会对电机产生很大的张力和阻力。这些电机为888RPM,在速度方面很好,但它们是较小的电机,额定电流略低于500mA。

所以,我用我拥有的其他更大的电机替换了它们,但实际上我得到了几乎相同的结果。虽然这些是更强大的电机,但它们的减速较小,或者它们的转速更高,为 1280,所以我得到了相同的结果。

实际上,它们并没有那么糟糕。机器人平台与它们一起运行良好。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

老实说,驾驶这个东西真的很有趣,尤其是当 LED 闪烁并产生倦怠或甜甜圈时。

然而,这种乐趣并没有持续那么久,因为一旦我把它带到外面,它很快就停止了工作。问题是动力不足的电机,没错,还有轨道连杆的设计。污垢很容易堆积在链轮齿所在的位置。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

因此,我重新设计了它们,使其在另一侧有一个开口,以便污垢可以通过它们。我还使链轮变小了一点,将其偏移了0.2毫米,以便在它和轨道之间有一个更松散的配合。
【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我用这些更新重新组装了所有东西,平台现在能够在外面行驶。尽管动力不足的电机再次成为一个问题。平台不时堆积,无法上坡。因此,我的建议是获得不超过 500 RPM 的电机,并且至少具有 1A 或 2A 额定电流的电机更强大。

我实际上尝试了具有更强电机的平台。它们只有 20 RPM,对于玩乐和做甜甜圈来说显然太慢了,但现在的平台就像一个真正的坦克。它实际上可以去任何地方。

20 RPM 电机的功率足以爬上任何障碍物。它们真的很慢,但也许它们适用于某些特定的应用程序。我的建议是,如果我们需要较慢的速度来使用大约 50 RPM 的电机,而对于更快的速度,大约 500 RPM。

【全3D打印坦克——基于Arduino履带式机器人】,arduino学习,3d,机器人,原力计划

我希望您喜欢这个视频并学到一些新东西。请随时在下面的评论部分提出任何问题,不要忘记订阅未来的更新并检查我的Arduino项目集合。

参考文献:Fully 3D Printed TANK – Tracked Robot Platform
视频地址:https://www.youtube.com/watch?v=q3XNYwNZ97w文章来源地址https://www.toymoban.com/news/detail-737439.html

到了这里,关于【全3D打印坦克——基于Arduino履带式机器人】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 浅谈3D坦克的部分游戏外挂

    3D坦克又名:Tanki Online,是由俄罗斯 Alternativa 公司创作发行的一款坦克游戏,于 2009 年 6 月 4 日俄罗斯开启公开测试,于 2010 年 4 月在中国发布。游戏至今数十年,渐渐衍生了一些游戏外挂,由于我才疏学浅,只浅聊其中出现的部分外挂,如有错误,欢迎批评指正。 第一:

    2024年02月19日
    浏览(40)
  • Unity游戏程序设计——3D双人坦克大战

    3D多人坦克大战 ·Unity2019.4.29   ·Visual Studio 2019 双人坦克游戏: 坦克:可移动旋转,发射炮弹 子弹:按一定方向一定速度发射;炮弹周围会产生冲击波,击中坦克或接触地面后爆炸 坦克生命:坦克被击中后血条相应变化;血条不随坦克的旋转而旋转;血条减到小于等于0后爆

    2024年04月28日
    浏览(41)
  • 基于ROS的机器人模型建立及3D仿真【物理/机械意义】

    在前面的博客中,我们已经学习过了如何对目标机器人进行数学意义上的模型建立,以便实现基础控制,而在实际生活中,由于机器人造价高昂,我们往往难以获得实际的目标机器人进行部署研究,这就需要我们对目标进行仿真,采用编程或可视化方法建立机器人3D模型,从

    2024年02月09日
    浏览(68)
  • Coin3d环境搭建(VS2019+QT),实现基于Open Inventor机器人图形交互

    先下载VS2019下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com)    这里点下载然后界面拖到最下点击较早的下载项      下载这个2019社区版的,下载好后勾选python开发和使用C++的桌面  然后下载QTIndex of /archive/qt,点这个5.12,然后点5.12.4,下3.6G的   ,   然后QT下载

    2024年02月10日
    浏览(42)
  • 使用Arduino Uno构建一个巡线机器人

    原文 MX 巡线机器人 (LFR: line follower robot)是一种简单的自主引导机器人,它遵循在地面上绘制的线来检测白色表面上的暗线或黑暗表面上的白线。在本教程中,使用 Arduino Uno 和一些易于访问的组件构建黑线跟随机器人。 巡线机器人的原理 如前所述,巡线机器人(LFR)跟随

    2024年02月10日
    浏览(50)
  • 使用ros_arduino_bridge控制机器人底盘

      搭建了ROS分布式环境后,将ros_arduino_bridge功能包上传至Jetson nano,就可以在PC端通过键盘控制小车的运动了。实现流程如下: 系统准备; 下载程序; 程序修改; 分别启动PC与Jetson nano端相关节点,并实现运动控制。   ros_arduino_bridge是依赖于python-serial功能包的,需要在

    2024年01月17日
    浏览(40)
  • 上位机(Ubuntu)与下位机(Arduino)通讯控制机器人前轮转角

     实现基础:1、上位机、下位机通讯;2、ROS读取前轮转角传感器速度 ​​​​​​​​​​​​​​上位机系统Ubuntu 20.04与下位机arduino UNO通讯_可见一班的博客-CSDN博客 读取拉线位移传感器(RS485协议)的ROS驱动包_可见一班的博客-CSDN博客 方案一:判断了旋转方向就向下位

    2024年02月13日
    浏览(52)
  • 【雕爷学编程】Arduino动手做(156)---OTTO两足舵机机器人

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)

    2024年02月16日
    浏览(49)
  • Arduino开发实例-DIY超声波传感器避障机器人

    在本应用中,我们将使用一个超声波传感器与两个直流电机和一个伺服电机相结合,Arduino作为主控板创建一个简单的避障机器人。 超声波传感器发送和接收信号以确定物体的距离。 如果距离小于 15 厘米有物体,机器人将停止。 然后它环顾四周,转向一个它什么都感觉不到

    2023年04月08日
    浏览(63)
  • 【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台

    吃完快餐粥,除了粥的味道不错之外,我对个快餐盒的圆盖子产生了兴趣,能否做个极低成本的简易机器人呢?也许只需要二十元左右 知识点:轮子(wheel) 中国词语。是用不同材料制成的圆形滚动物体。简单来说,它包括轮子的外圈、与外圈相连接的辐条和中心轴。透过滚

    2024年02月14日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包