在我们开始之前,我强烈建议您在我的 substack (How to Make a Gesture Controlled Robotic Arm (substack.com)) 上阅读这篇文章。质量会好很多,而且是完全免费的。如果出现什么说它是读者支持的,只需点击阅读更多 / 也许稍后即可关闭它。我所有的原始帖子都会在那里。谢谢。
快速预览:
工作原理总结:
机械臂上的每个关节都沿相对于安装在标准丝手套上的 PCB(印刷电路板)的旋转方向移动。该 PCB 经过定制设计,用于读取和传输来自陀螺仪和柔性传感器的信号,以确定手何时闭合以及该手旋转了多少。这些信号由接收器接收并被解释为将移动电机的信号。
构建 Arm:
机械臂是我在 CAD(计算机辅助设计)软件中设计的,只需要基本材料进行组装,例如 M3 螺栓、螺母、垫圈、滚珠轴承和一些 NEMA 17 步进电机。手臂的所有其他组件都使用 Ender 3 Max 3D 打印机以蓝色 3D 打印。但是,只要有足够大的打印床,大多数打印机就可以完成这项工作。
分解设计:
这是设计的工作原理,手臂有三个步进电机来移动每个主关节。两个电机用于控制俯仰的长臂,一个用于控制偏航的底座旋转。我将在这里指出它们:
您可能已经注意到我在这里圈出的不是步进电机。这些是我设计的变速箱,以帮助产生更大的扭矩。它们每个人都将连接一个步进电机。
对于夹持器,它同样简单。只有两个伺服电机控制整个抓手。一个用于旋转 “爪子” ,另一个用于关闭它。我将在这里指出这些位置:
您可能很好奇为什么夹持器上似乎有一些没有解释的额外层。好吧,请允许我。浮动在要安装伺服系统上方的两层用于快速轻松地更换烙铁架等夹具。它们适合磁铁,因此您可以轻松地将它们弹出并替换为您心中渴望的任何东西。我使用的磁铁是直径为 1.26 英寸的钕杯磁铁。
行星齿轮箱的魔力:
您可能已经注意到,机械臂实际上非常巨大。全站姿时,它大约有 33 英寸或 84 厘米。这对于机械臂来说真的很大。对于这些 14 美元的微型 NEMA 17 步进电机来说,移动这个东西上的关节并非易事。如果不进行任何形式的减速以产生更大的扭矩,这些电机将无法承受移动这些关节中的任何一个,哪怕是一点点。值得庆幸的是,我们能够利用物理学来发挥自己的优势。安装在手臂上的变速箱实现了大约 132.7 的传动比,这意味着它们将使电机的移动速度减慢 132.7 倍,以换取 132.7 倍的扭矩。我在这个设计中使用的那种变速箱被称为行星减速机,因为它们有 3 个行星齿轮围绕太阳轮移动。这一切都发生在 Ring 齿轮内部,以防止它们打滑。当您将载体连接到每个行星齿轮上时,您将实现 ((ring gear + sun gear)/sun gear)) 的齿轮减速。这些方法非常高效,因为您能够在较小的空间内实现高传动比。
我的设计是如何运作的:
我为机械臂制作的变速箱就是利用这个概念,通过将三个行星齿轮箱合二为一来实现如此高的传动比。请记住,通常只有一个行星齿轮箱本身不能超过大约 10 的传动比。我的每个行星齿轮箱的传动比为 5.1,但通过将一端送入另一端,您可以将第一端的扭矩乘以第二端的扭矩,依此类推。我的变速箱的每个行星层都有 5.1 的传动比,但是因为我将一端送入另一端三次,所以我能够实现 5.1^3 或 132.7 的传动比,这使它们能够有足够的扭矩来提升每个关节
有关如何实际组装变速箱和机械臂(螺栓和螺母)以及在哪里压入轴承的更多信息,将在帖子底部的“组装手臂”下。如果您愿意,请考虑在 substack.com 下订阅我的帐户。它有助于支持我的项目,并让我花更多时间制作内容供大家欣赏和学习:)
构建发射器:
我在这个项目中使用的微控制器是 ESP32 WROOM 模块。它们的功能与 Arduino 微控制器非常相似,但体积更小,并且内置了用于无线通信的 Wi-Fi。首先,我在下面附上了一个电路原理图,说明了所有连接。
9V Vin 最好使用 5V,因为它必须降低更少的电压,但我使用了 9V 电池来说服。只需确保 Vin 电压保持在 12V 以下,因为这是 ESP32 上的稳压器可以降低的最大值。如果超过该值,它可能会使微控制器的易碎组件暴露在未额定电压下并损坏它。要记住的另一件非常重要的事情是,当 ESP32 由外部供电时,您不能将 USB 插入 ESP32。它会烧坏的!
对于项目的这一部分,我开发了一个 PCB 来帮助使电路更加紧凑,以便将其全部安装在手套的顶部。有许多不同类型的设计软件可以从给定的原理图生成 Gerber 文件。一旦它按照您的意愿发布,您需要做的就是将其上传到 PCB 站点并等待它通过邮件到达。然后,是时候进行焊接了。
电路如何运作:
该电路由一个 ESP32 微控制器、MPU6050、三个 LED、一个柔性传感器、一个按钮和三个电阻器组成。MPU6050 是一个了不起的芯片,你可以买到相当便宜的。它是一个二合一的三轴加速度计和陀螺仪。但是,对于此项目,我们将仅使用陀螺仪功能。陀螺仪通过使用所谓的科里奥利效应来工作,该效应会导致振动被放大和过滤以产生成比例的电压。然后,该电压被输出到微控制器中,在那里被读取和纵。在这种情况下,它是通过以可变速率移动连接到接收器的步进电机来纵的,该速率由该电压产生和映射。就我而言,为了便于理解,我使用了 0-180 度的值范围和 ESP-NOW 无线通信方法。为此,您将需要一个 MPU6050 库。至于与微控制器的连接,就像连接内部时钟 (SCL) 以同步数据传输和数据线 (SDA) 进行实际数据传输一样简单。当然还有 VCC (3.3V) 和 GND。
柔性传感器甚至更简单。它所做的只是产生与弯曲半径相关的电阻。它弯曲得越多,由于电阻材料变得更加凝结,它的阻力就越大。该值可以由具有模拟读取功能的微控制器拾取,其中可以直接无线发送到接收器以控制夹爪伺服电机。
就 LED 而言,我使用了两个来告诉我在运行过程中的任何时候是否有任何问题。我用蓝色的 1 来告诉我无线通信是否有问题,用红色的 1 来告诉我电路板是否通电。您将不得不使用欧姆定律来计算 LED 的电阻值 (V=IR),但我需要 >= 160欧姆。如果您没有确切的电阻器,也可以略高于该值,它只是可能会稍微不那么亮。该按钮用于电路中,因此我只需按一下按钮即可切换控制我正在通过的轴。我所做的是将一个引脚写入高电平,这样当按钮闭合时,它所连接的另一个引脚上的输入将为低电平。这样,当它被按下时,该引脚的值也会被发送到接收器板,以将一个关节的控制切换到另一个关节。
构建接收器:
这个项目的接收器并不太复杂。它由一个 ESP32、三个 A4988 步进电机驱动器、两个电阻器和两个 LED 组成。但是,回想起来,我强烈建议使用更重的步进驱动器,例如 TB6600。由于电流额定值低,我在这里使用 A4988 是相当愚蠢的,但是接线是相同的。LED 的用途与发射器电路中的用途相同。我在下面附上了我的电路原理图。
打破电路:
该电路的目的是获取发射器发送的值并将其处理为电机要遵守的速度/值。对于步进电机,这是使用 AccelStepper 库和步进电机驱动器完成的。在我的项目中,我使用了 A4988 步进电机驱动器。但是,这些是非常小且脆弱的驱动器,因此如果您打算将机械臂用于教育目的以外的任何目的,我强烈建议您使用更重的东西来控制步进电机。步进驱动器的目的是提供电流控制以及与步进电机通信,而无需使用反馈系统。这就是步进电机知道它需要移动多少的方式。您可以将它们视为电机编码器,但反过来。它们也是必要的,因为步进电机的控制电路需要比驱动电路小得多的电压。为了有效地连接它们,您需要做的就是将 STEP 和 DIR 引脚连接到各自的 GPIO 引脚,并为其供电并将其连接到步进电机。
A4988 上的 STEP 引脚通常是连接希望电机执行的步数的位置,而 DIR 引脚是发送高值或低值以确定希望移动电机的方向的位置。但是,在我使用的 AccelStepper 库以及其他一些库中,情况并非如此。因此,请确保正确连接所有 pins,因为对应于您将用于编码的 library。还要确保 sleep 和 reset 引脚已连接在驱动程序上,如果它们没有连接,它将无法正常工作。 就一切供电而言,VDD 可以直接来自 ESP32 的 3.3V 输出,而 VMOT 需要来自您正在使用的步进电机额定的外部电源。只要确保它在驱动器的工作电压 (8-35V) 范围内即可。还要确保一切都有一个共同点! 在处理电子产品时,一个极其常见的错误是所有东西都没有正确接地。如果没有公共接地,就没有正常工作的电路。您还需要调整驱动器上的板载电位计,以限制流向电机的电流。我使用的 NEMA 17s 的最大额定电流为 2A,因此我相应地调整了电位计。一个很好的经验法则是 Vref=Imax/2.5,其中 Vref 是将万用表的正极放在电位计上,将负极放在 GND 上时流经万用表的电压,其中 Imax 是步进电机的最大允许电流。但是,请记住,驱动器的最大电流也是 2A,因此将其保持在安全一侧并没有什么坏处
至于伺服电机,它非常简单。大多数微控制器都对伺服系统有很好的支持,因为它们需要做的就是向特定方向移动,直到伺服的板载电位计与它试图移动的值相匹配。只要确保它们的伺服器也与电路的其余部分有一个公共接地,并且它根据其额定电压获得外部电源。对于 MG996RS,这是 6V。
重要的焊接技巧:
在焊接电路板和进行连接时,尤其是对于接收器,我强烈建议在电路板和易碎组件(如 ESP32 和 A4988 步进驱动器)之间焊接连接。尤其是司机非常脆弱,虽然他们工作得体,但他们并不是超级重的负担,事情会出错。我自己可能在原型设计时短路了至少五个步进电机驱动器。这可能非常令人沮丧,尤其是当驱动器焊接到电路板上时,因为如果您无法移除,它们可能很难移除并破坏电路。我强烈建议您执行如下作,以便在出现任何问题时轻松更换零件。
这对于确保热烙铁在焊接元件就位时不会损坏任何东西也非常有用。如您所知,烙铁会变得非常非常热,而针脚是极好的导体。直接焊接元件可能会导致这些引脚过热并断开连接,从而损坏脆弱的 IC。
构建移动电源:
我为这个项目制作的移动电源非常简单,而且有很多方法可以制作。我只是使用了 11.1V 5200mAh LiPo 电池并将其连接到三个不同的输出。其中两个输出具有降压电压,一个具有升压电压。调整这些电压非常重要,以便需要不同电压电平的每个组件都能够获得正常运行所需的电压。如果电压过高,则会破坏组件。如果它太低,组件将无法获得足够的功率来正常工作。
每个稳压器 (reg.) 和升压模块都输出到接收器板的不同部分以供电。在本例中,我已将所有舵机连接到 6V 输出,将所有步进电机连接到 24V 输出,将 ESP32 连接到 5V 输出。LM78XX 系列 IC 可以简单地降低电压,但请记住,它们的最大电流很小(通常为 1.2A),因此它们不适用于繁重的用途。正是出于这个原因,我为伺服电机使用最大电流为 3A 的降压转换器,为步进电机使用最大电流更高的升压模块。这样我就可以确保所有东西都能获得所需的电量,而不必担心它们会烧坏。只要确保在所有不同的 output 和 receiver board 中都有公共接地。
编程运行:
所有的 CAD 和代码都可以在我的 github 上找到:GitHub - RoboticWorx/Gesture-Controlled-Robotic-Arm:手势控制机械臂项目的 CAD 和代码。如果您到目前为止喜欢我的项目,请考虑在 substck.com 订阅我。它有助于支持我的页面,并使我能够投入更多时间来撰写此类文章。更不用说,更多的订阅者意味着我有更多的资金来制作项目!(请记住,订阅者越多 = 项目越酷!


















【Arduino 动手做】从头开始制作一个手势控制的机械臂
项目链接:https://www.hackster.io/RoboticWorx/hand-gesture-controlled-robotic-arm-0cdfc4
项目作者:RoboticWorx2
参考资料:https://roboticworx.substack.com/p/roboticworx
项目视频 :https://www.youtube.com/watch?v=uypjox9_HAk
项目代码和3D 文件:https://github.com/RoboticWorx/Gesture-Controlled-Robotic-Arm


评论