0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

开发一个控制和编程机械臂的项目

科技观察员 来源:hackster.io 作者:hackster.io 2022-08-08 15:20 次阅读

让我们逐步开发一个控制和编程机械臂的项目,interwetten与威廉的赔率体系 工业机器人的基本功能。

poYBAGLwuOiAV374AAUyoLNKlHM642.png

第 1 步:规格

pYYBAGLwuOSAJ-y8AAIglmarYXc611.png

机器人有两个基本功能:

程序:记录三个维度的手臂位置(每个记录是一个“步骤”)

运行:依次执行“程序”中记录的位置。机器人将运行程序,直到使用命令“ABORT”。

主要特征:

该项目可用于控制具有 3 或 4 DOF(“自由度”)的机器人。

机器人可以在“本地”和“远程”模式下控制(最后一个通过 Android 设备)

在程序阶段,用户可以将控制模式从“LOCAL”更改为“REMOTE”,反之亦然。

将通过彩色 LED、2 行 LED 显示屏和声音(蜂鸣器)向用户提供信息

声音警报也可以远程触发。

第 2 步:项目

poYBAGLwuOCAeU1PAAZQhuvKHCw819.png

上一步的框图显示了将在此项目中使用的“材料清单”。

我选择了 Arduino MEGA,以免担心可用的 Arduino 端口 (I/O) 的数量。例如,UNO 可以正常工作,但应使用端口扩展方法。有几个选项可以在 Internet 上轻松找到,例如 74138 解码器。

关于蓝牙网络,这个项目使用的是 HC-06。

用于“ remote mode”的Android应用程序是使用MIT Appinventor2工具开发的,该工具是基于Android设备的此类应用程序的强大单一平台。

第 3 步:开发

pYYBAGLwuNyADfFsAAFF9SWM_1U945.png

机械臂可以根据它们拥有的“关节”或“自由度”(DOF)的数量进行分类。

“底座”或“腰部”通常可以将手臂转动 180o 或 360o,具体取决于所使用的伺服类型(在此项目中,使用了 180o 伺服)。

“肩”,负责垂直“抬高或降低”手臂。

“肘”将使手臂“向前或向后”。

“爪”或“抓手”通过打开或关闭来“抓取东西”。

第 4 步:电路

poYBAGLwuNeAFEGUAAJft18kdmc164.png

上图显示了完整的电路。

伺服电机将用于驱动关节,直接连接到 Arduino。请注意,在底座上使用“步进电机”以获得更大的扭矩和精度并不少见。舵机的正确选择非常重要。

舵机的直流电源应与 Arduino 和其他组件分开。5 或 6V 的外部电源应该可以正常工作(检查伺服器的数据表以验证正确的电压范围)。一种常见的做法是在 VCC 和 GND 之间使用 470uF 电容器,以最大限度地减少伺服器内部直流电机产生的噪声。确保连接所有“接地”(外部电源与 Arduino GND 引脚)。

如果伺服系统有问题并且振动很大,请在代码的“延迟”处进行调整。重要的是,伺服系统在接收新命令之前有时间到达某个点。同样值得检查的是舵机是数字的还是模拟的,就好像它们在机械上相似,数字的工作频率为 300Hz,而模拟的工作频率为 50Hz。标准 Arduino 库“ Servo.h”是为模拟舵机开发的,必要时可以进行修改,以便更好地使用数字舵机。

第 5 步:代码

这个项目并不复杂,但它有很多变数。最谨慎的做法是明确定义它们并将备注留在唯一的文件中:

ArmDefine.h

该文件还应设置最小、最大和初始伺服角度。本文中包含的代码有两组参数,用于我在项目中测试的机械臂(当然应该只使用一组常量):

// MeArm 4-DOF

#define minGrip 15
#define minBase 0
#define minShou 60
#define minElbw 60
#define maxGrip 45
#define maxBase 170
#define maxShou 180
#define maxElbw 150
#define midGrip 30
#define midBase 87
#define midShou 138
#define midElbw 100
/* SS 3-DOF
#define minGrip 75
#define minBase 5
#define minShou 5
#define minElbw 0
#define maxGrip 125
#define maxBase 150
#define maxShou 155
#define maxElbw 0
#define midGrip 100
#define midBase 90
#define midShou 90
#define midElbw 0
*/

每种类型的手臂都有一组不同的参数,重要的是找到适合自己的。我的建议是,最初电位器(电位器)保持在其中点,PWM 输出的映射设置为默认值:Max = 255和Min = 0(Mid = 126上面的“ #defines”)。然后,开始改变电位器(一个接一个)并在串行监视器(或 LCD)中跟踪手臂正常工作的最小值和最大值。这些将是用于设置的最终值(将我的原始值更改为ArmDefine.h).

为了“记录”机器人应该播放的坐标(或步数)集,我将使用数据数组:

int gripPosition[100];
int basePosition[100];
int shouPosition[100];
int elbwPosition[100];
int positionIndex = 0; // Index to be used at position array used for recorded tasks

请注意,我没有保留“存储”位置,并且在“机器人”程序结束时,索引回到零,机器人将等待新序列的记录(程序丢失)。或者,您可以将这些数据阵列保存在 Arduino EEPROM 中。这样做程序将被再次执行,甚至您可能拥有多个存储的程序。

第 6 步:程序逻辑

主块(“循环”)非常简单:

检查是否使用了执行“程序”(步骤序列)的命令。

如果是这样,请运行它。

否则,“程序”是不完整的,仍然必须编写新的步骤。

如果定义了“新位置”,请将其添加到程序中。

首先,检查来自 Android 设备的到达串行缓冲区的消息。

接下来,验证控制模式是“本地”还是“远程”(默认为本地)。

回到开头并再次执行步骤 1。

void loop ()

{
checkBTcmd ();
defineLocalRemote () ;
execTaskCmd = digitalRead (execTaskPin);
if (execTaskCmd == || HIGH command == "runon")
{
RunProgram () ;
}
else recArmPosition () ;
command = "";
}

函数checkBTcmd()使用来自 BT 模块的单个字符组装一个字符串。这个字符串被传递给变量“ command ”。

函数defineLocalRemote()考虑变量“ command ”检查是否接收到将模式更改为远程的命令,反之亦然。报警命令也在这里分析。对于程序逻辑,如果在Android设备中触发了“Alarm”,则arm一定要进入Remote模式。

函数RunProgram()执行准备工作,打开/关闭 LED 等,特别是调用函数:ExecuteTask()。后者是包含步骤序列的执行逻辑的函数。该函数使用工具将位置数据发送到手臂的“位置索引”增加: armPosition(grip, base, Shoulder, E肘)。

最后,真正指挥舵机并编写“步骤”的函数是recArmPosition()。根据接收到的 Android 命令,该函数将定义舵机的定位,可以通过罐子,也可以通过 Android 应用程序的“滑块”。随着每个位置的变化,此功能使用功能(握把、底座、肩部、肘部)将坐标发送到伺服系统。armPosition在触发“SAVE”或“PROGRAM”命令时,会读取电位器或滑块的实际位置以及相应的伺服激活。在那一刻,数组的位置索引增加并存储步骤。

为了简化理解,所有的代码都是基于它的特定功能。“ Setup”、“ Loop”和上面描述的函数几乎都在文件:MJRoBot_Arm_Robot_Task_Prgm.ino 中,并可在本文下方找到。

更通用的函数如读取 BT 命令:void checkBTcmd();声音发生器:void beep(int pin,int freq,long ms)和去抖:boolean debounce(int pin);存档:General_Functions.ino

一个重要的事实:由于 Arduino 基于 16Mhz 时钟执行指令,预计控制按钮每秒读取数百甚至数千次,因此制作一个设置记录步骤的“去抖动”按钮很重要。

第四个也是最后一个文件是:Arm_Ctrl_and_Display.ino

在这个文件中是电位器的读取函数:bool readPotenciometers() ; 读取 Android 滑块:bool readSliders() ; 伺服系统的放置:void armPosition (int gripp, int basee, int肩部, 肘部 int)。文件中包含的其他功能是用于 LCD 上的数据显示、串行监视器、警报等。

第 7 步:结论

一如既往的是,我希望这个项目可以帮助其他人在电子、机器人和物联网的激动人心的世界中找到自己的道路!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制
    +关注

    关注

    4

    文章

    1011

    浏览量

    122664
  • 编程
    +关注

    关注

    88

    文章

    3615

    浏览量

    93717
  • 机械臂
    +关注

    关注

    12

    文章

    515

    浏览量

    24573
收藏 人收藏

    评论

    相关推荐

    基于LabVIEW和SolidWorks改进机械的设计流程

    和移动残骸、检查车辆车盘和完成大部分现在使用的机器人所无法完成的其他任务。这就是约束区域机器人手臂(CARMA)开发。 CARMA机械成品  将这个项目作为提高设计流程效率并大幅扩展
    发表于 02-12 15:56

    开源工业机械开发套件

    `、产品介绍: 小型四轴码垛工业机器人是由款桌面级四轴开源迷你机器组成,配合本系统的二轴或者单轴机械爪可组成六轴或五轴机器人,采用铝合金材质铸造,步进电机伺服
    发表于 10-23 11:26

    开源工业增强型机械

    通信软件设计及开发10、工业机械的图形化编程软件的应用及开发11、工业机械
    发表于 10-23 11:29

    【NanoPi M2申请】六轴机械控制开发

    申请理由:随着工业机械的普及应用,现在机械运行动作单控制操作难度大已不满足现代工业的生产
    发表于 04-27 16:16

    【Pocket-RIO申请】采用labview与FPGA的多自由度机械快速控制系统原型开发

    项目名称:采用labview与FPGA的多自由度机械快速控制系统原型开发试用计划: 机械
    发表于 12-19 15:30

    【FPGA开发项目连载】Gowin Minstar做机械视觉处理的机械

    项目本来设想是使用高云 ministar 开发板。制做5640摄像头模块的图像处理并使用高云 ministar内嵌ARM硬核处理器做机械控制
    发表于 05-11 21:48

    众为兴SCARA四轴机械编程概述

    众为兴SCARA四轴机械编程)概述方案原理功能实现通讯功能机械
    发表于 07-20 07:45

    机械控制学习

    机械控制-------------控制器1.位置控制机器人最传统,最常用的控制方式就是位置
    发表于 02-23 07:49

    【CW32饭盒派开发板试用体验】+机械游戏项目(开源)(5)加红外游戏操控机

    接上几篇: 【CW32饭盒派开发板试用体验】+机械游戏项目(开源)(1)开箱试验舵机 - 武汉芯源MCU - 电子威廉希尔官方网站 论坛 - 广受欢迎的专业电子论坛! 【CW32饭盒派
    发表于 05-24 22:27

    dfrobotArduino开发实战-遥控机械套装简介

    遥控机械套装,本套装可以通过Arduino编程控制桌面机械
    的头像 发表于 11-29 17:19 2516次阅读
    dfrobotArduino<b class='flag-5'>开发</b>实战-遥控<b class='flag-5'>机械</b><b class='flag-5'>臂</b>套装简介

    使用 Python 和可视化编程控制树莓派机械myCobot

    进行编程,简单易用,功能丰富。适合那些有兴趣学习如何对机械进行编程控制项目开发的人。 myC
    的头像 发表于 11-30 14:56 5188次阅读
    使用 Python 和可视化<b class='flag-5'>编程控制</b>树莓派<b class='flag-5'>机械</b><b class='flag-5'>臂</b>myCobot

    控制机械开源

    电子发烧友网站提供《人控制机械开源.zip》资料免费下载
    发表于 01-31 14:43 4次下载
    人<b class='flag-5'>臂</b><b class='flag-5'>控制</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>开源

    如何完成机械的运动控制模块

    使用桌面型的六轴机械,在机械的末端安装
    的头像 发表于 02-10 16:07 1737次阅读
    如何完成<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的运动<b class='flag-5'>控制</b>模块

    构建简单的机械

    电子发烧友网站提供《构建简单的机械.zip》资料免费下载
    发表于 06-14 14:55 0次下载
    构建<b class='flag-5'>一</b><b class='flag-5'>个</b>简单的<b class='flag-5'>机械</b><b class='flag-5'>臂</b>

    自然语言控制机械:ChatGPT与机器人威廉希尔官方网站 的融合创新(下)

    和Google的Speech-to-text服务,以及我们是如何通过pymycobot模块来控制机械的。通过将自然语言处理和机械
    的头像 发表于 04-11 15:54 887次阅读
    自然语言<b class='flag-5'>控制</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>:ChatGPT与机器人威廉希尔官方网站
的融合创新(下)