DIY Arduino CoreXY 绘图机器人:GRBL 固件 + Inkscape 工作流完整指南
项目概述
**Crazy Engineer's Drawing Robot** 是一款开源开源硬件的 CoreXY 结构 CNC 绘图机器人。采用 Arduino UNO (ATmega328P) + GRBL 固件 (CoreXY 伺服版) 解析 G-code,双电机联动实现 X/Y 平面运动,Z 轴由舵机控制笔尖升降。可在任意平面书写绘图,支持矢量字体、光栅图、技术图纸、签名、证书等应用。
核心硬件架构
| 模块 | 选型建议 | 说明 |
|---|---|---|
| 主控 | Arduino UNO R3 / CNC Shield V3/V4 | GRBL 官方支持平台 |
| 步进电机 | NEMA 17 (42mm, 1.8°/step, 1.5A) | X/Y 各一,CoreXY 需同规格 |
| 驱动器 | A4988 / DRV8825 / TMC2208 | 插接 CNC Shield,建议 TMC2208 静音 |
| 舵机 | SG90 / MG90S (金属齿) | Z 轴笔升降,接 CNC Shield 舵机口 |
| 同步带/轮 | GT2 6mm 宽,20齿同步轮 | CoreXY 交叉带路 |
| 直线导轨 | MGN12H / 光轴+直线轴承 | X/Y 各两根,保证精度 |
| 框架 | 2020/2040 铝型材或 3D 打印件 | CoreXY 核心结构 |
| 电源 | 12V/24V 5A+ 开关电源 | 电机+逻辑分离供电更稳 |
CoreXY 运动学原理
两个固定电机通过交叉同步带驱动运动平台:
- **电机 A 单独转** → 平台沿 45° 斜向移动 (X+Y 同向)
- **电机 B 单独转** → 平台沿 -45° 斜向移动 (X-Y 反向)
- **两电机同速同向** → 纯 Y 轴移动
- **两电机同速反向** → 纯 X 轴移动
运动学逆解:
MotorA = X + Y
MotorB = X - Y
GRBL 固件内核已内置 CoreXY 运动学,启用 COREXY 宏即可。
固件烧录与配置
- 下载 grbl-coreXY-servo 源码
- Arduino IDE 打开
grbl.ino,确认config.h中定义:
#define COREXY
#define VARIABLE_SPINDLE(用于舵机 PWM 控制)
#define SPINDLE_PWM_PIN 11(Uno D11) - 选择 **Arduino/Genuino Uno**,烧录
- 串口监视器 115200 波特率,发送
$$查看/修改参数:
$100=80.000(X steps/mm)
$101=80.000(Y steps/mm)
$30=1000(最大舵机 PWM,对应 0-180° 映射)
软件工作流:Inkscape → G-code → 绘图
1. Inkscape 准备
- 安装 Inkscape 模板 (页面尺寸 = 机器行程)
- 绘制/导入矢量图 (SVG/DXF/PDF),**全部转换为路径** (
Path → Object to Path) - 文字需
Path → Object to Path后再Extensions → Modify Path → Flatten Beziers近似直线段
2. G-code 生成
- 推荐插件:Makelangelo 或 Lasertool/Engrave 插件
- 设置:进给速度 F1000-3000 mm/min,Z 升降对应舵机角度 (M3 S0 笔下, M5 S1000 笔上)
- 导出
.ngc/.gcode文件
3. 发送绘图
- Universal Gcode Sender (UGS) / bCNC / CNCjs 等上位机
- 连接串口,归零 (G28 或手动移动到原点
G92 X0 Y0 Z0) - 加载 G-code,运行
机械结构关键点
- **同步带张紧**:过松失步,过紧增加阻力,弹簧张紧器最佳
- **CoreXY 交叉点**:两带必须在不同平面 (垫高 3-5mm) 避免干涉
- **笔夹设计**:弹簧预压 + 舵机杠杆,保证着纸压力恒定,适应纸面不平
- **限位开关**:X/Y 双向各一个,接 CNC Shield 限位接口,使能硬限位
$21=1
常见问题排查
| 现象 | 可能原因 | 对策 |
|---|---|---|
| 画图镜像/旋转 90° | 电机接线/运动学方向反 | 交换任一电机 A/B 相,或修改 $3=1/2/3 方向位 |
| 圆不圆、尺寸错 | Steps/mm 未校准 | 打印标尺实测,修正 $100/$101 |
| 笔尖划纸/悬空 | Z 零点/行程未设 | 调整舵机角度范围 M3/M5 S 值,机械调节笔夹高度 |
| 电机发热/失步 | 驱动器电流过大/微步细分低 | 调节 Vref (A4988: Vref=I×8×Rsense),改 1/16 微步 |
| GRBL 报警 Alarm 8 | 触发硬限位 | 检查限位开关常开/常闭逻辑 ($5=0/1) |
进阶扩展
- **激光雕刻**:替换笔夹为 500mW+ 激光模块,启用
VARIABLE_SPINDLEPWM 功率控制 - **双色/多笔头**:增加舵机切换笔架,或 CoreXY 搭载多工具换刀系统
- **闭环控制**:闭环步进电机 (带编码器) 消除失步
- **Klippers + Raspberry Pi**:卸载运动规划至 Pi,实现更高速度/压力预演/输入整形
项目资源链接
制造工艺
- 止汗除臭棒:科学原理、历史与制造洞察
- 蓝牙控制树莓派机器人:语音反馈功能构建指南
- 用 Twilio 与 Yaler 让 Arduino UNO 接听电话 — “给 Arduino 打电话”项目
- 舵机驱动避障机器人:基于 Arduino 与 HC-SR04 构建
- Arduino UNO 自制循迹小车:从零构建自主巡线机器人
- 自制尼克西管时钟:Arduino 驱动,MDF 木制外壳
- Arduino Nano 语音控制机器人:蓝牙 + 手机 APP 实现
- C64 复古电脑控制器:基于 Arduino Nano 的多 ROM 切换与设备号设置
- PiBot:Arduino驱动的88键钢琴机器人,精准演奏MIDI乐曲
- LittleArm 2C:3D 打印 Arduino 机械臂 - STEM 教学专用,坚固易装
- 自主家庭助理机器人 O'nine - ROS + Alexa 语音控制 + 机械臂 + 麦克纳姆轮全向移动
- 适用于 Arduino 项目的智能室内导航机器人套件