亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

自动焊接机械臂

组件和用品

步进电机 28BYJ-48 带驱动模块 ULN2003
× 1
Arduino UNO
× 1
伺服电机 TowerPro MG955
× 1
I2C 串行 LCD 1602 模块
× 1
降压模块
× 1
OpenBuilds NEMA 17 步进电机
× 1

必要的工具和机器

激光切割机(通用)
用于 Dremel 的旋转刀具切割钻头套件

应用和在线服务

Arduino IDE
Microsoft Visual Studio 2015

关于这个项目

介绍

这个项目的想法是在我搜索机械臂的不同能力时偶然想到的,然后我发现有几个人涵盖了这个使用领域(自动焊接和焊接机械臂)。

其实我之前也有过搭建类似项目的经历,但是这次的项目非常有用,效果很好。

在决定它的形状之前,我看到了很多应用程序和其他项目,特别是在工业领域,开源项目帮助我找到了很多合适的形状。

这是因为我们大脑的视觉进食背后的科学。

第 1 步:设计

一开始看到很多专业的项目,因为复杂,没能实现。

然后我决定在其他项目的启发下制作我自己的产品,所以我使用了 Google Sketch up 2017 pro。每个部分都被设计为按照特定顺序并排组装,如下图所示。

在组装之前,我必须测试零件并选择合适的烙铁,这是通过绘制一个虚拟的精加工项目作为指导来实现的。

这些图纸显示了实际精加工尺寸和每个零件的正确尺寸,以选择合适的烙铁。

第二步:操作安装

在工作期间,我遇到了一些我们必须宣布的障碍。

1. 手臂太重了,小型步进电机无法支撑,我们在下一个版本或激光切割打印中修复了这个问题。

2. 由于模型为塑料材质,旋转底座摩擦大,动作不流畅。

第一个解决方案是购买一个能够承受重量和摩擦的更大的步进电机,我们重新设计了底座以适应更大的步进电机。

实际上问题仍然存在,更大的电机并没有解决它,那是因为我们不能按百分比调整锅的两个塑料表面之间的摩擦。最大旋转位置不是驱动器可以提供的最大电流。您必须使用制造商展示的技术,即在转动电位器的同时测量电压。

然后我完全改变了底座设计,在齿轮机构中放置了一个带有金属齿轮的伺服电机。

3. 电压

Arduino 板可以通过 DC 电源插孔 (7 - 12V)、USB 连接器 (5V) 或板的 VIN 引脚 (7-12V) 供电。通过 5V 或 3.3V 引脚供电绕过稳压器,我们决定从 PC 或任何电源购买​​支持 5V 的特殊 USB 电缆。

因此,步进电机和其他组件仅在 5 伏电压下即可正常工作,并确保部件不会出现任何问题,我们修复了降压模块。

降压模块是一个降压转换器(step-down converter)是一种DC-DC电源转换器,它将电压(同时增加电流)从其输入(电源)到其输出(负载)并保持稳定性或电压。

第 3 步:修改

经过一些修改,我们改变了模型的设计,通过减小臂尺寸并为伺服电机齿轮制作合适的孔,如图所示。

在测试伺服电机时,它成功地将配重正确旋转了 180 度,因为它的高扭矩意味着一个机构能够处理更重的负载。伺服机构能输出多大的转动力取决于设计因素——电源电压、轴速度等。

使用 I2c 也很好,因为它只使用两个引脚,您可以将多个 i2c 设备放在相同的两个引脚上。因此,例如,您最多可以在两个引脚上安装 8 个 LCD 背包 + LCD!坏消息是您必须使用“硬件”i2c 引脚。

第 4 步:烙铁架或夹具

夹具采用金属齿轮伺服电机承载烙铁重量固定。

servo.attach(9, 1000, 2000);servo.write (constrain (angle, 10, 160)); 

起初,我们遇到了一个障碍,那就是电机晃动和振动,直到我们找到了一个棘手的代码,可以限制天使。

因为并不是所有的舵机都有完整的 180 度旋转。许多人没有。

所以我们写了一个测试来确定机械极限在哪里。使用servo.write 微秒而不是servo.write 我更喜欢这个,因为它可以让你使用1000-2000 作为基本范围。许多舵机将支持超出该范围,从 600 到 2400。

所以,我们尝试了不同的值,看看你在哪里得到了告诉你已经达到极限的嗡嗡声。然后只在你写作时保持在这些限制内。您可以在使用servo.attach(pin, min, max)时设置这些限制

找到真正的运动范围并确保代码不会试图将其推过终点站,constrain () Arduino 函数对此很有用。

第 5 步:编码

Arduino 使用库环境可以通过使用库进行扩展,就像大多数编程平台一样。库提供用于草图的额外功能,例如使用硬件或操作数据。在草图中使用库。

#include AccelStepper.h#include MultiStepper.h#include Servo.h#include Wire.h #include LiquidCrystal_I2C.h 

代码

  • 步进器 X Y Z 代码
步进器 X Y Z 代码Arduino
#include "AccelStepper.h" // AccelStepper SetupAccelStepper stepperX(1, 2, 3); // 1 =Easy Driver 接口 // UNO 引脚 2 连接到 Easy Driver 的 STEP 引脚 // UNO 引脚 3 连接到 Easy Driver AccelStepper stepperZ(1, 5, 6); // 1 =Easy Driver 接口 // UNO 引脚 5 连接到 Easy Driver 的 STEP 引脚 // UNO 引脚 6 连接到 Easy DriverAccelStepper stepperY(7, 8, 9); // 1 =Easy Driver 接口 // UNO 引脚 5 连接到 Easy Driver 的 STEP 引脚 // UNO 引脚 6 连接到 Easy Driver 的 DIR 引脚 // Stepper Travel Variableslong TravelX; // 用于存储Serial Monitorlong TravelZ中输入的X值; // 用于存储Serial Monitorlong TravelY中输入的Z值; // 用于存储Serial Monitor中输入的Y值int move_finished=1; // 用于检查移动是否完成vo​​id setup() { Serial.begin(9600); // 以 9600 波特的速度启动串行监视器 // 在启动时在串行监视器上打印说明 Serial.println("输入由逗号分隔的旅行距离:X,Z "); Serial.print("Enter Move Values Now:");// 设置每个步进器的最大速度和加速度 stepperX.setMaxSpeed(500.0); // 设置 X 轴最大速度 stepperX.setAcceleration(500.0); // X 轴加速度 stepperZ.setMaxSpeed(250.0); // 设置 Z 轴的最大旋转速度更慢 stepperZ.setAcceleration(250.0); // Z轴加速度 stepperY.setMaxSpeed(250.0); // 设置 Y 轴的最大旋转速度更慢 stepperY.setAcceleration(250.0); // Y 轴加速度}void loop() {while (Serial.available()>0) { // 检查串行缓冲区中的值是否可用 move_finished=0; // 设置用于检查步进器移动的变量 TravelX=Serial.parseInt(); // 将缓冲区中的第一个数值放入 TravelX 变量 Serial.print(TravelX); Serial.print(" X Travel , "); TravelZ =Serial.parseInt(); // 将缓冲区中的第二个数值放入 TravelZ 变量 Serial.print(TravelZ); Serial.print(" Z Travel , "); TravelY=Serial.parseInt(); // 将缓冲区中的第二个数值放入 TravelY 变量 Serial.print(TravelY); Serial.println(" Y 旅行 "); stepperX.moveTo(TravelX); // 为 X Stepper 设置新的移动位置 stepperZ.moveTo(TravelZ); // 为 Z Stepper 设置新的移动位置 stepperY.moveTo(TravelY); // 为 Z Stepper delay(1000) 设置新的移动位置; // 在移动步进器之前等待 1 秒 Serial.print("Moving Steppers into position..."); }// 检查步进器是否已到达所需位置 if ((stepperX.distanceToGo() !=0) || (stepperZ.distanceToGo() !=0) || (stepperY.distanceToGo() !=0)) { stepperX 。跑(); // 将步进器 X 移动到位置 stepperZ.run(); // 将步进器 Z 移动到位置 stepperY.run(); // 将 Stepper y 移动到位 }// 如果移动完成,则在串行监视器上显示消息 if ((move_finished ==0) &&(stepperX.distanceToGo() ==0) &&(stepperZ.distanceToGo() ==0) &&(stepperY.distanceToGo() ==0)) { Serial.println("COMPLETED!"); Serial.println(""); Serial.println("输入下一个移动值(0,0,0 表示重置):"); // 为新的串行监视器值做好准备 move_finished=1; // 重置移动变量 }}

示意图


制造工艺

  1. Makerarm:一款超酷的创客机械臂
  2. 为机器人系统设计电机控制
  3. 电机控制器集成 Arm Cortex-M0 内核
  4. 参考设计简化了工业机器人电机控制
  5. 机械臂:它是如何制造的?
  6. 制造中的机械臂及其优势
  7. 机械臂伺服电机:会发生什么?
  8. 使用物联网远程控制机械臂
  9. Arduino 3D 打印机械臂
  10. 机器人单元可实现零件自动管理
  11. 机器人手臂市场到 2026 年将增长到 147.8 亿美元
  12. 工业机械臂——制造热潮