自制 MK2 Plus 机械臂控制器 - 基于 Arduino 与 CNC 扩展板
组件与物料清单
| 组件 | 数量 |
|---|---|
| CNC 扩展板 | 1 |
| NEMA 17 步进电机 | 3 |
| Arduino UNO | 1 |
| A4988 步进电机驱动模块 | 3 |
| 微型限位开关 | 3 |
所需工具
- 3D 打印机
软件工具
- Arduino IDE
项目简介
EEZYBOT MK2 机械臂
Thingiverse 上著名的 EEZYBOT MK2(设计者 daghizmo)按 1:7 缩放 ABB IRB460 运动学结构。原版使用舵机驱动,精度与平滑度有限。MK2 Plus 重混版(Thingiverse)改用 3 个步进电机驱动连杆机构,性能大幅提升。
3D 打印耗时数天,建议先打印再阅读后续内容。
原点校准方案
步进电机无位置记忆,上电需回零。利用 3 个限位开关建立原点。连杆机构运动学较复杂,组装后直观理解开关位置。
Z 轴限位开关安装在底座任意位置,热熔胶固定导线防脱落。为配合 CNC 扩展板标签,将两连杆电机分别称为 X、Y 电机,底座旋转电机称为 Z 电机。
接线指南
CNC 扩展板丝印清晰,注意 A4988 驱动模块插入方向。连杆侧电机对应 X/Y 端子,底座旋转电机接 Z 端子,限位开关按标签接线,极性不敏感。需 12V 电源保证电机扭矩。
代码实现
使用 AccelStepper 库 实现多电机同步加减速运动。通过 Arduino IDE 库管理器安装或访问 官网。
引脚定义与对象创建
#define XSTEP 2
#define YSTEP 3
#define ZSTEP 4
#define XDIR 5
#define YDIR 6
#define ZDIR 7
#define ENABLE 8
#define XLIMIT 9
#define YLIMIT 10
#define ZLIMIT 11
#define XMOTORACC 250
#define XMOTORMAXSPEED 1000
#define YMOTORACC 250
#define YMOTORMAXSPEED 1000
#include <AccelStepper.h>
AccelStepper XMOTOR(1, XSTEP, XDIR);
AccelStepper YMOTOR(1, YSTEP, YDIR);
AccelStepper ZMOTOR(1, ZSTEP, ZDIR);
引脚初始化
void pinsetup() {
pinMode(ENABLE, OUTPUT);
digitalWrite(ENABLE, LOW);
pinMode(XLIMIT, INPUT_PULLUP);
pinMode(YLIMIT, INPUT_PULLUP);
pinMode(ZLIMIT, INPUT_PULLUP);
}
回零逻辑详解
回零分两阶段:
- XY 回零:连杆耦合运动
- X、Y 反向运动触发 Y 限位
- 同向运动触发 X 限位
- 微调脱离限位开关
- Z 回零:独立旋转触发 Z 限位并微调脱离
首次回零必备手捏电源开关,若电机反向立即断电并翻转电机插头。
主程序框架
void setup() {
Serial.begin(9600);
pinsetup();
autohome(); // 仅运行一次
Serial.println("HOMING OK");
}
void loop() {
// 示例:简单往复运动
XMOTOR.runToNewPosition(100); delay(1000);
YMOTOR.runToNewPosition(50); delay(1000);
YMOTOR.runToNewPosition(-50); delay(1000);
YMOTOR.runToNewPosition(0); delay(1000);
XMOTOR.runToNewPosition(0); delay(1000);
}
扩展建议
- 串口指令控制:加入分隔符解析,如
5,6,7*控制 XYZ 步数 - 逆运动学:输入末端坐标,Arduino 计算关节角度
- GRBL 固件方案:需上位机发送 G-code,适合复杂轨迹
总结
无需上位机即可让机械臂执行预设动作,代码完全在 Arduino 端运行。感谢 Thingiverse 所有优秀设计师!
代码与资源
- 完整代码:GitHub 仓库
- 3D 模型:MK2 Plus 机械臂 (致敬 ackyltle)
制造工艺
- MeArm 机械臂 V1.0——Arduino 与 Raspberry Pi 驱动的桌面级机械臂制作全指南
- 以太网远程控制机械臂 — 基于 Arduino 101 与 WIZ750SR
- LittleArm 2C:3D 打印 Arduino 机械臂 - STEM 教学专用,坚固易装
- DIY 手势控制机械臂:基于 Arduino + 柔性传感器 + IMU + 蓝牙的六自由度仿生臂
- 通过专用 Android App 蓝牙控制 Arduino 机械臂
- MeArm 机械臂精准手柄控制器:基于 Arduino UNO 的轨迹记录与回放
- 自制可录制动作的纸板机械臂——Arduino 与舵机轻松 DIY
- Realtime Robotics推出先进控制器简化集成加速部署
- KUKA KMR iiwa:面向工业 4.0 的移动协作机器人臂
- 双臂 SCARA 机器人:高阶装配与柔性生产的利器
- Yama Seiki GA-2000CR:配备机械臂与托盘系统的紧凑型车削中心
- 英飞凌发布 IMC300 电机控制器:集成 Arm Cortex-M0 提升灵活性