百摩网
当前位置: 首页 生活百科

arduino舵机控制程序(arduino蓝牙模块控制舵机)

时间:2023-07-11 作者: 小编 阅读量: 8 栏目名: 生活百科

除伺服电机外,夹具机构均已组装。5个自由度与大多数机械臂一样,DFRobot套件被宣传为“5DOF”或5自由度机械臂。对于机器人手臂,这通常意味着手臂拥有的电机数量。手臂能够承受很大的扭矩和动量,因此需要可靠固定。注意不要超过这个范围。螺钉头应位于L型支架一侧。确保轴承的斜面部分与伺服支架齐平。确认在拧紧螺钉后轴承仍能自由旋转。重置和运行所有伺服电机以确保一切正常

在人工短缺的大背景下,机械手正在大显身手,得到越来越多的应用。今天我们就通过一个便宜的机械手套件来了解其控制的基本原理及电路。我们将试验用Arduino Nano加PCA9685伺服控制器同时控制5个伺服电机

本文作者:加拿大DroneBotWorkShop 翻译整理:DIY百事

目录

1 简介2 DFRobot 5 DOF 机械臂套件3 5 自由度4 机械臂部分5 机械臂组装6 组装夹具6.1所需零件6.2组装说明7 组装底座电机安装座7.1所需零件7.2组装说明8 组装双U型支架8.1所需零件8.2组装说明9 组装带支架的弯头电机安装座9.1所需零件9.2组装说明10 组装腕式电机支架和夹持器支架10.1所需零件10.2组装说明11 安装底座电机11.1所需零件11.2组装说明12 连接底座到双 U 型支架12.1所需零件12.2组装说明13 安装弯头电机13.1所需零件13.2组装说明14 将双 U 型支架连接到带支架的弯头安装座14.1所需零件14.2组装说明15 安装手腕电机15.1所需零件15.2组装说明16 将带支架的弯头安装座连接到手腕马达安装座16.1所需零件16.2组装说明17 安装夹爪17.1所需零件17.2组装说明18 Arduino 控制器18.1 Arduino Nano18.2控制器接线18.3 Arduino 代码19 测试机械臂20 展开机械臂

让我们先看看我们将要构建什么。

DFRobot 5 DOF 机械臂套件

该DFRobot 5自由度机械手臂套件包括所有的伺服电机,支架,紧固件和其他硬件,你可以用它建立一个小而强大的机械臂及夹持机构。

手臂的支架和支撑件由黑色阳极氧化铝制成,它提供强大的支撑。

手臂由 5 个伺服电机提供动力,都是标准尺寸:

  • 两个 15Kg/cm 舵机用于底座和肘部
  • 一个 5.5 Kg/cm 手腕舵机
  • 两个 4 Kg/cm 伺服器用于夹持机构

舵机、支架和硬件包装在带有识别标签的单独塑料袋中。除伺服电机外,夹具机构均已组装。

DFRobot 5 DOF 机械臂套件的完整零件清单如下所示:

组装臂所需的唯一工具是十字螺丝刀和一套钳子。

5 个自由度

与大多数机械臂一样,DFRobot 套件被宣传为“5 DOF”或 5 自由度机械臂。术语“自由度”究竟是什么意思?

事实证明,这可能意味着不同的事情,具体取决于您所在的领域。

如果您是一名航空工程师,那么对您来说,自由度可能由经典的三个维度和物体可以移动的方向表示:

  • 前进与后退 Forwards & Backwards
  • 上下 Up & Down
  • 左右 Left & Right
  • 上述三个方向为轴的转动

然而,在机器人技术中,“自由度”或 DOF 通常被认为表示机构具有的可移动关节的数量。对于机器人手臂,这通常意味着手臂拥有的电机数量。

我们的机械臂有 5 个电机,因此被宣传为“5 DOF”机械臂。

机械臂部分

伺服电机各自为机械臂的不同部分提供动力,下面的描述中将用为它们提供动力的部分的名称来表示。

我将手臂部分命名为与人类手臂上的等效部分大致对应,这是我们大多数人应该熟悉的参考点。在某些情况下(在抓手周围),人类手臂上没有相应的部分,所以我尽可能描述性地命名这些部分。

各部分如下:

  • 底座–机器人手臂的底座,对应于人的肩膀。底座固定到位,至少现在是这样。
  • 肘部–手臂上的第一部分。就像人的肘部一样,它允许手臂弯曲。
  • 手腕–手臂上的第二部分。它允许更好地定位夹具组件。
  • 关节–允许夹具向任一方向旋转 90 度。人的手和手臂没有这样的关节,旋转一只手是用手臂上的几块不同的肌肉来完成的。
  • 夹爪 – 夹具机构本身,操作起来很像台钳或钳子。

在操作中,手臂的底座需要牢固地固定在坚固的表面上。手臂能够承受很大的扭矩和动量,因此需要可靠固定。

机械臂组装

DFRobot 5 DOF 机械臂套件是许多 5 DOF 机械臂的典型代表,因此您可能拥有与之类似的套件。您还可以使用DFRobot 网站上的部件将这个手臂或它的自定义版本拼凑起来。

机器人手臂的组装将按以下顺序进行:

  1. 组装夹爪
  2. 组装底座电机安装座
  3. 组装双 U 型支架
  4. 用支架组装肘部电机安装座
  5. 使用夹持器安装座组装腕式电机安装座
  6. 安装底座电机
  7. 将底座连接到双 U 型支架
  8. 安装肘部电机
  9. 将双 U 型支架连接到带支架的弯头安装座
  10. 安装手腕电机
  11. 将带支架的肘部安装座连接到手腕马达安装座
  12. 安装夹爪
  13. 接线和测试!

以下是每个步骤的详细信息:

组装夹爪所需零件

组装说明

  • 将两个舵机都设置为 0 度位置(完全逆时针)
  • 拿起夹具并将其与其中一台电机成 90 度角
  • 将伺服轴插入夹具组件背面,与齿轮啮合。
  • 测试对齐是否正确
  • 插入并拧紧臂安装螺钉以将夹具固定回电机轴
  • 手动操作夹爪直到它们处于完全打开位置。注意不要超过这个范围。
  • 将伺服电机插入钳口下方的位置,与齿轮啮合。
  • 测试对齐是否正确
  • 插入并拧紧臂安装螺钉以将夹爪机构固定到电机轴上。
  • 测试两个伺服电机以验证夹具是否正常运行。

组装底座电机安装座所需零件

组装说明

  • 放置舵机安装支架,使舵机安装在前面,带有两个孔的平板在后面。
  • 将人员轴承套件中的螺钉插入伺服支架背面左侧的孔中,螺钉头朝向伺服电机的一侧。
  • 将人员轴承套件中的轴承插入伺服支架外侧的螺钉上。确保轴承的斜面部分与伺服支架齐平。
  • 在轴承顶部插入锁紧垫圈。
  • 将螺母拧到螺钉上。
  • 拧紧螺钉和锁紧螺母。
  • 确认在拧紧螺钉后轴承仍能自由旋转。

组装双 U 型支架所需零件

组装说明

  • 将两个 U 型支架对齐,使短节相互压紧,并对齐安装孔。如果您有像我这样预先钻好的安装孔,您需要确保它们以相同的方式排列,否则方向无关紧要。
  • 使用袋子中的 4 个螺钉和螺母将支架固定在一起。确保将它们牢牢固定。

用支架组装弯头电机安装座所需零件

组装说明

  • 放置舵机安装支架,使舵机安装在前面,带有两个孔的平板在后面。
  • 将人员轴承套件中的螺钉插入伺服支架背面左侧的孔中,螺钉头朝向伺服电机的一侧。
  • 将人员轴承套件中的轴承插入伺服支架外侧的螺钉上。确保轴承的斜面部分与伺服支架齐平。
  • 在轴承顶部插入锁紧垫圈。
  • 将螺母拧到螺钉上。
  • 拧紧螺钉和锁紧螺母。
  • 确认在拧紧螺钉后轴承仍能自由旋转。
  • 将 L 型支架短边上的安装孔与 U 型支架短平底上的安装孔对齐。L 型支架应与 U 型支架成直角,详情请参见插图。
  • 使用 L 型支架随附的螺钉将 L 型支架固定到 U 型支架上。螺钉头应位于 L 型支架一侧。
  • 将 L 型支架长边的安装孔与舵机安装支架右下方的安装孔对齐。
  • 使用袋子中的 4 个螺钉和螺母将 L 型支架固定到伺服安装支架上。螺钉头应位于 L 型支架一侧。

使用夹持器安装座组装腕式电机安装座所需零件

组装说明

  • 放一个舵机安装支架,舵机安装在前,两个孔的平板在后。
  • 将人员轴承套件中的螺钉插入伺服支架右后侧的孔中,螺钉头面向伺服电机的一侧(请注意,这是之前电机安装装配说明中使用的相反侧)。
  • 将人员轴承套件中的轴承插入伺服支架外侧的螺钉上。确保轴承的斜面部分与伺服支架齐平。
  • 在轴承顶部插入锁紧垫圈。
  • 将螺母拧到螺钉上。
  • 拧紧螺钉和锁紧螺母。
  • 确认在拧紧螺钉后轴承仍能自由旋转。
  • 将第二个伺服安装支架下方的第二个伺服安装支架成直角对齐,以便第二个伺服的轴位于组件的右侧。对齐安装孔,有关详细信息,请参见插图。
  • 用袋子中的 4 个螺钉和螺母固定两个伺服安装支架。螺丝头应面向底部伺服支架。牢固地拧紧。

安装底座电机所需零件

组装说明

  • 将电机旋转到 0 度位置(完全逆时针)。
  • 安装电机时轴与背面轴承对齐,使用随伺服支架提供的 4 个螺钉和螺母将电机紧固。
  • 将臂放在电机轴上,暂时留在原处。其它小部件装配不再详述

您现在已经完成了手臂的机械组装。

重置和运行所有伺服电机以确保一切正常工作并正确对齐是一个好主意。如有必要,通过卸下将伺服臂固定到框架的 4 个螺钉来调整连接点的位置,并根据需要重新定位。

现在让我们组装一个简单的控制器并让手臂完成它的步伐!

Arduino控制器

我将 PCA9685 16 通道 PWM 控制器直接安装到我的机械臂上,以便我可以使用 I2C 总线控制所有电机。

虽然我现在对机器人手臂有很好的计划,但我只需要一个简单的控制器来调整所有五个伺服电机的位置。我是围绕 Arduino Nano 来设计的。

Arduino Nano

我的 Arduino 项目通常基于 Arduino Uno,它是一种流行且廉价的微控制器板,具有大量输入和输出。但有时它不符合要求。这次就是。

我想构建一个具有 5 个电位器的控制器,分别控制每个电机。然后它会通过 I2C 总线将信息发送到 PCA9685 以控制伺服系统。我还希望它能够轻松升级为使用 6 个电位计用于 6 DOF 臂(基本上是我的 5 DOF 臂,底部带有转盘)。

Arduino Uno 有 6 个模拟输入,因此乍一看似乎非常适合这项工作。但是有一个问题!在此设计中有两个模拟输入不能用。

Arduino Uno 上的模拟输入 A4 和 A5 作为 I2C 总线上的 SDA(数据)和 SCL(时钟)线执行双重任务。即使您的 Uno 具有单独的 SDA 和 SCL 引脚,它们也只是在内部连接到 A4 和 A5。

因此,如果您使用 I2C,那么您就不能使用模拟引脚 A4 和 A5,它们是共用的。

而Arduino Nano 有八个模拟输入,比 Uno 多两个。因此,即使 Nano 用引脚 A4 和 A5 作I2C通讯,它仍然有足够的剩余模拟输入来完成这项工作。

即使我最终添加了第六个电位器!

Nano 在大多数方面与 Uno 一样易于使用,尤其是当您将其安装到无焊面包板上或使用适配器插座时。请记住将 Arduino IDE 中的开发板类型更改为“Arduino Nano”,否则在编译代码时会出现错误。

为控制器接线

我们简易型机械臂控制器的接线非常简单,尤其是当我们使用 PCA9685 进行伺服连接时。

为了减少任何混乱,我在两个图表上显示了接线。这与我将 PCA9685 直接安装在手臂上的安排相匹配。如果您希望将 PCA9685 安装在用于 Arduino Nano 的同一块板或面包板上,这取决于您。

我喜欢直接安装在手臂上的 PCA9685,因为我认为它可以减少接线并避免延长任何伺服电机电缆。而且我还打算在我的手臂上安装其他 I2C 设备,因此为所有这些设备设置一个 I2C 连接是有意义的。

我们接线图的“Arduino 部分”有 Nano 和 5 个电位器。控制器一侧接地,另一侧从 Arduino Nano 获得 5 伏电压。

每个电位计的输出连接到 Arduino Nano 上的模拟输入,如下所示:

  • 底座Base – A0
  • 肘部Elbow – A1
  • 手腕Wrist – A2
  • 关节Grip Pivot – A3
  • 夹爪Grip Jaws – A6

请注意,A4 和 A5 用于 I2C 连接。

现在让我们转到连接的 PCA9685 一侧。

I2C 连接到 PCA9685 末端的一个连接器,任一连接器都可以工作。

然后,您需要将 5 个(或 6 个)伺服电机连接到该模块。确保以正确的方式连接。

最后,您将需要一个具有足够电流来驱动五个伺服电机的电源。6 伏 2 安电源将是理想的选择。电源直接连接到 PCA9685 模块上的连接器。

一旦你把它全部连接起来,就该编写一些代码了!

Arduino代码

此处提供了简单机械臂控制器的代码。

该草图使用了 Adafruit PWM 库,您需要将其安装到 Arduino IDE 中。只需在库管理器中搜索“Adafruit PWM”,它应该是第一个结果。

如果您需要安装库的帮助或想了解有关此库和 PCA9685 的更多信息,请查看我关于使用伺服电机的文章。

/*Basic Robot Arm Controllerrobot-arm-control-basic.inoControls 5 DOF Robot Arm, uses Arduino Nano and PCA9685 PWM ControllerUses Adafruit PWM libraryUses 5 potentiometers for input (can be modified for 6)DroneBot Workshop 2018http://dronebotworkshop.com*/ // Include Wire Library for I2C Communications#include <Wire.h> // Include Adafruit PWM Library#include <Adafruit_PWMServoDriver.h> #define MIN_PULSE_WIDTH650#define MAX_PULSE_WIDTH2350#define FREQUENCY50 Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); // Define Potentiometer Inputs int controlBase = A0;int controlElbow = A1;int controlWrist = A2;int controlPivot = A3;int controlJaws = A6; // Define Motor Outputs on PCA9685 board int motorBase = 0;int motorElbow = 1;int motorWrist = 2;int motorPivot = 3;int motorJaws = 4; // Define Motor position variablesint mtrDegreeBase;int mtrDegreeElbow;int mtrDegreeWrist;int mtrDegreePivot;int mtrDegreeJaws; void setup(){// Setup PWM Controller objectpwm.begin();pwm.setPWMFreq(FREQUENCY);} // Function to move motor to specific positionvoid moveMotorDeg(int moveDegree, int motorOut){int pulse_wide, pulse_width;// Convert to pulse widthpulse_wide = map(moveDegree, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);pulse_width = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096);//Control Motorpwm.setPWM(motorOut, 0, pulse_width);} // Function to convert potentiometer position into servo angleint getDegree(int controlIn){int potVal,srvDegree;// Read values from potentiometerpotVal = analogRead(controlIn);// Calculate angle in degreessrvDegree = map(potVal, 0, 1023, 0, 180);// Return angle in degreesreturn srvDegree;} void loop() {//Control Base Motor// Get desired positionmtrDegreeBase = getDegree(controlBase);// Move motormoveMotorDeg(mtrDegreeBase,motorBase);//Control Elbow Motor// Get desired positionmtrDegreeElbow = getDegree(controlElbow);// Move motormoveMotorDeg(mtrDegreeElbow,motorElbow);//Control Wrist Motor// Get desired positionmtrDegreeWrist = getDegree(controlWrist);// Move motormoveMotorDeg(mtrDegreeWrist,motorWrist);//Control Pivot Motor// Get desired positionmtrDegreePivot = getDegree(controlPivot);// Move motormoveMotorDeg(mtrDegreePivot,motorPivot);//Control Jaws Motor// Get desired positionmtrDegreeJaws = getDegree(controlJaws);// Move motormoveMotorDeg(mtrDegreeJaws,motorJaws);// Add short delaydelay(20); }

该代码包括 Adafruit PWM 库和 Wire 库,这对于通过 I2C 总线进行通信至关重要。

为 PWM 控制器定义了一些常数,PWM 信号的最小和最大脉冲宽度以及信号的频率。代码中的值将适用于 DF Robot 5 DOF 机器人手臂套件随附的电机。

接下来定义了许多变量:

  • “control”变量,代表电位计所连接的模拟端口。
  • “motor” 变量代表 PCA9685 板上 PWM 输出。
  • “ mtrDegree ”变量表示您希望电机轴定位到的角度(从 0 到 180)。

在设置中,我们只初始化 PWM 对象并将 PWM 振荡器的频率设置为 50 Hz,这是模拟伺服电机的标准。

然后我们定义两个函数:

  • moveMotorDeg – 此函数将电机名称和位置(以度为单位)作为输入。然后它将请求的电机移动到该位置。
  • getDegree – 此函数将电位计名称作为输入并以度数输出位置。

由于我们定义了两个函数,循环非常简单。这确实是相同的程序重复五次,每个电机一次。

电位计位置是使用getDegree函数确定的。然后将此信息传递给moveMotorDeg函数以将相应的电机移动到所需位置。

在为每个电机执行此例程后,会产生短暂的延迟,然后循环重新开始。结果是伺服电机响应电位计位置而移动。

测试机械臂

将所有东西连接起来并提供合适的电源,然后准备测试您的手臂。

确保将手臂牢固地固定在有足够质量支撑它的底座上。当你第一次给手臂加电时,不要让你的手和手指挡住你的手,舵机会立即移动到位,它们不会因为你的手指而停下来!

手臂很结实,能够举起合理的重量。如果您使用过像 MeArm 这样的小型实验臂,那么您会发现这是一个显著的改进。

抓手特别有用,它实际上能够以可重复的方式拾取小物件。

花几个小时把玩一下你的新机械手臂,这让人上瘾!

展开机械臂

这样我们完成了手臂的构建,但还可以做些后续的事情。这实际上只是 DFRobot 5 DOF 机械臂项目的开始,至少对我来说是这样。

我已经在我的下一批实验中安装了一个传感器。这是一个 MPU5060 陀螺仪和高度计设备,我安装在手臂手腕上以测量位置。它们用 I2C通讯,因此接口很简单。

摄像头、距离传感器、限位传感器、力敏电阻器——对于像这样的坚固机器人手臂可以连接的东西,天空是无限的。

所以我可以保证你会在车间看到更多的手臂。将此文章和视频视为系列的一部分。

我希望这篇文章能激励你建造一个像这样的机械臂。DFRobot 套件价格低廉,并且包含一些可以使用很长时间的高质量部件。

我很想听听你的机械臂设计。请在下面的评论中告诉我您的创作以及您在制作手臂时可能遇到的任何问题。

    推荐阅读
  • 自诩什么意思(词语自诩什么意思)

    下面更多详细答案一起来看看吧!自诩什么意思自夸,汉语词语,读音为zìxǔ,意思是自夸。出处清·蒲松龄《聊斋志异·浙东生》“浙东生房某,客於陕,教授生徒。尝以胆力自诩。”鲁迅《且介亭杂文·拿来主义》“尼采就自诩过他是太阳,光热无穷,只是给与,不想取得。”邹韬奋《暴敌最近进攻的惨败》“暴敌军事当局对他们所自诩的‘五月攻势’,已承认失败。”

  • 国际时装周前景(华丽志从上海时装周MODE服装服饰展发来的深度报道)

    10月14日,为期四天的2019春夏MODE上海服装服饰展圆满落幕。10月11日至10月14日期间,观展总人数达到9925人。专做时尚珠宝品类的無有乐园Showroom,此次带来了6个国家的40个珠宝品牌参展。海外中小品牌加速进入中国市场今年“MODE展”中海外品牌明显增加。据Valentina介绍,此次参展的18个意大利品牌以当代风格为主,涵盖不同品类和定位。

  • 甲状腺结节饮食有什么禁忌(甲状腺结节日常饮食的5大禁忌)

    所以发现甲状腺结节要积极治疗,要引起重视。甲状腺结节患者应该少吃海鲜,应该以清淡为主,禁忌烟酒,避免喝浓茶,浓咖啡,避免做重体力劳动,多休息,保持心情的舒畅。

  • 专科需要考的5个证书(专科生必须要考的五大证书)

    另外,教师每年带薪年假超过120天,福利待遇和公务员同级!导游证报考导游证要求并不多,也没有太多的限制。二级建造师众所周知,二级建造师的含金量的含金量比较高,随着国内建筑行业的需求不断增多,建筑行业的要求也会不断提高,拥有二级建造师证书能够帮助一些大专毕业的小伙伴们快速找到工作。很多大专毕业的小伙伴们都选择了二级建造师。而且近几年,国内火灾频发,国家对于消防工程师的需求也在增多,一些政策也在支持。

  • 幽默风趣的语言(有关幽默风趣的语言)

    你过得好不好,别人不知道,但你一胖,大家就都知道了。我不介意你骗我,我介意的是你的谎话骗不了我。大概就是每天被气死一万次,但仍然不辞职。和你在一起这么长时间,终于发现你长的快象个人似的了。我又不是王子,为什么女孩遇见我总认为自己应该成为公主!长得好看又喜欢吃的才是吃货,长得不咋滴还喜欢吃的叫饭桶!我发现一个问题,我喜欢和长得好看的人讲话,怪不得我老是自言自语。

  • 海滨公园金鱼(小金鱼游到窗台啦)

    不仅如此,金鱼吊兰极具观赏价值。众所周知,金鱼吊兰是吊兰中最受欢迎的品种之一。金鱼吊兰原产地位于澳大利亚,在西澳洲分布广泛。袋鼠花因其特有的形态和花色,使它成为澳大利亚最具代表的庭院植物。另外,如果在养护过程中,发现金鱼吊兰出现黄叶、黑叶、脱落等现象,多半是由于光照或温度造成的。其实,金鱼吊兰对温度要求相对较高,如果长期处于低于十度或者高于三十度的环境下,同样也容易出现黄叶现象。

  • 货车后桥型号怎么看(货车后桥型号如何分辨)

    货车后桥型号怎么看后桥主要有两个技术参数,1.承载级别,2.速比。各厂家对后桥的编号规定没有统一格式,主要看它提供的这两个参数。承载级别就是后桥设计最大承载质量,以吨表示,如:6吨级,10吨级,11吨级等。超过13吨级的国内道路是禁止的。10101046是载货汽车的型号,中间两位数字就是该车的总质量,就是自重和允许载重的总重,“09”表示总质量是9吨。总质量就是前后桥承载吨位的合计,一般前桥是后桥承载重量的一半左右。

  • 章丘是哪里啊(章丘道不尽的章丘)

    章丘道不尽的章丘齐鲁晚报•壹点文史研究院郭学军人们夸赞一个地方,往往会夸这里的人文地理有底蕴,有名气比如,它是一位某某名人的故里,或者说这里有一个某某著名历史古迹,亦或说这里有一处某某的著名自然景观对于一般的县市区,。

  • beats是苹果的吗 beats也是苹果的吗

    Studio耳机属于重低音和高音方面类型的耳机。这款耳机的两边都能够90度旋转,缺点就容易夹头发。BeatsPro耳机就是Studio和Mixr这两款耳机的优点结合体。SoloWireless耳机是Beats其中之一的蓝牙头戴式耳机采取了蓝牙加有线一体式的。音频方面虽然没有SoloHD这款耳机好,但音质方面不比Solo耳机差。2014年5月29日,苹果宣布以30亿美元收购Beats电子和Beats音乐的计划。26亿美元在收购时支付,其余4亿美元则将逐步支付。这次收购成为苹果历史上规模最大的一次收购。

  • 金鸡奖最佳女主角马丽(金爵奖最佳影片东北虎)

    《东北虎》获得了金爵奖最佳影片?!然而世间自有公道,付出终有回报,早在金爵奖红毯仪式上,章宇和马丽领衔的《东北虎》就是第一个走上红毯的剧组……而这部电影最加分的,无疑是两大主角章宇和马丽的表演。而这与百岁山长期以来对饮用水的品质追求也是不谋而合的。这也是为什么C罗在36岁依然保持良好身材的竞技状态!独霸欧洲杯射手王不说,他的107球也即将追平阿里代伊保持的国家队109球的进球纪录。