让我们逐步开发一个控制和编程机械臂的项目,模拟工业机器人的基本功能。
第 1 步:规格
机器人有两个基本功能:
程序:记录三个维度的手臂位置(每个记录是一个“步骤”)
运行:依次执行“程序”中记录的位置。机器人将运行程序,直到使用命令“abort”。
主要特征:
该项目可用于控制具有 3 或 4 dof(“自由度”)的机器人。
机器人可以在“本地”和“远程”模式下控制(最后一个通过 android 设备)
在程序阶段,用户可以将控制模式从“local”更改为“remote”,反之亦然。
将通过彩色 led、2 行 led 显示屏和声音(蜂鸣器)向用户提供信息。
声音警报也可以远程触发。
第 2 步:项目
上一步的框图显示了将在此项目中使用的“材料清单”。
我选择了 arduino mega,以免担心可用的 arduino 端口 (i/o) 的数量。例如,uno 可以正常工作,但应使用端口扩展方法。有几个选项可以在 internet 上轻松找到,例如 74138 解码器。
关于蓝牙网络,这个项目使用的是 hc-06。
用于“ remote mode”的android应用程序是使用mit appinventor2工具开发的,该工具是基于android设备的此类应用程序的强大单一平台。
第 3 步:开发
机械臂可以根据它们拥有的“关节”或“自由度”(dof)的数量进行分类。
“底座”或“腰部”通常可以将手臂转动 180o 或 360o,具体取决于所使用的伺服类型(在此项目中,使用了 180o 伺服)。
“肩”,负责垂直“抬高或降低”手臂。
“肘”将使手臂“向前或向后”。
“爪”或“抓手”通过打开或关闭来“抓取东西”。
第 4 步:电路
上图显示了完整的电路。
伺服电机将用于驱动关节,直接连接到 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 步:结论
一如既往的是,我希望这个项目可以帮助其他人在电子、机器人和物联网的激动人心的世界中找到自己的道路!
如何看懂电路图(三):放大电路设计详解
2021年新建5G基站60万个以上,明年5G依旧能够稳健发展
为什么最好的光刻机不是来自芯片大国美国?
系统设计:Instagram照片共享服务
万能遥控器的设置和使用方法
开发一个控制和编程机械臂的项目
苹果的芯片业务在行业内处在什么水平?
一加7原型照曝光 配备超大圆形后摄
急着买小米6!一加5配置更加凶残,你选谁?
All in 端智能,联发科未来三年AI战略公布
600公里高速磁浮道岔通过出厂验收,我国已实现领跑世界”的目标
三星note7爆炸门的受益者,苹果、华为还是OPPO?
东风日产正式达成了1000万辆产量规模,驶入电动化赛道
盘点:那些为健康而生的APP与智能硬件
液晶的几种模式的工作原理
浅谈3W原则与对走线之间的串扰估值
欧孚科技“2020企业灵活用工与税务筹划创新沙龙”圆满落幕
面对机器人设计开发的挑战
FTTR施工完成后到底需要进行哪些验收呢?
将毫米级智能传感器用于能量收集