要点速览
为 Arduino CNC 机床硬件编程所需条件
Arduino CNC 搭建是一套小型运动系统:控制器板、步进驱动器、步进电机、电源,以及主轴或刀具。Arduino 运行固件(通常是 GRBL),通过串口读取 G 代码,并将每行转换为驱动器的步进和方向脉冲。
GRBL 是固定固件,不是需要从零编写的编程语言。烧录一次后,通过 EEPROM 中保存的设置改变行为。因此本指南大部分内容是关于配置,而非编写 sketch。
适用板卡:Arduino Uno 配 GRBL 1.1,或引脚兼容板如 CNC Shield v3。步进驱动器通常为 A4988、DRV8825 或 TMC2209。TMC2209 运行更安静,能稳定处理 1/16 细分,这对小型雕刻机很重要。
电源选型常出错。将所有步进电机的额定电流相加,再加 30% 余量。三轴、1.5 A 电机的搭建至少需要 24 V、6 A 电源。欠压表现为丢步,而非明显故障。
编程前的接线顺序
分阶段接线。第一阶段仅 USB:将 Arduino 连接 PC,确认其显示为 COM 端口。第二阶段在电机电源关闭时添加驱动器,以便无风险检查细分跳线位置。
第三阶段添加电机。保持电源关闭,用手转动每个电机轴。应能自由旋转。若通电前感觉有顿挫,说明线圈通过驱动器短路,驱动器很可能已损坏。
第四阶段是主轴或继电器。使其与步进电机分开供电。有刷主轴与步进电机共用电源轨产生的噪声,是加工中途随机复位的常见原因。
烧录 GRBL 很简单。打开 Arduino IDE,加载 GRBL sketch,选择板卡和端口,然后上传。上传期间不要连接电机电源。上传后,以 115200 波特率打开串口监视器并发送问号。返回状态行说明固件正常运行。
- 1切勿带电插拔电机拔下步进电机前先断开电源。驱动器可能一次操作就损坏。
- 2核对跳线计算A4988 默认 1/16 细分。DRV8825 和 TMC2209 不同。记录下来。
- 3共用一个地控制器、驱动器和电源必须共地。
决定精度的 GRBL 设置
每毫米步数($100、$101、$102)设定某轴移动 1 mm 所需的脉冲数。计算方法:电机每转步数乘以细分,再除以丝杠螺距(mm)。200 步电机、1/16 细分、5 mm 螺距丝杠:200 x 16 / 5 = 640 步/毫米。
若数值错误,机床仍会移动和切削,只是尺寸不对。50 mm 测试方块测得 63 mm,说明每毫米步数约低了 20%。
最大速率($110-$112)是各轴最快移动速度。小型雕刻机 X、Y 轴从 2,000 mm/min 开始,Z 轴从 500 mm/min 开始。加速度($120-$122)控制达到该速度的快慢。从 100 mm/s² 开始,缓慢提高。
最大行程($130-$132)防止机床撞入自身框架。测量实际可用行程,然后两端各减去 5 mm。这一设置比任何其他设置都能减少断刀。
编写可实际执行的 G 代码
实际零件很少手写 G 代码。在 CAD 中设计,然后使用 CAM(如 Fusion 360、Carbide Create,2D 工作可用 Inkscape)。CAM 步骤选择刀路、进给率和切削深度,然后导出 .nc 文件。
后处理器必须与固件匹配。GRBL 与 Mach3 或 LinuxCNC 并不相同。选错后处理器会生成 GRBL 拒绝的圆弧和固定循环,任务在第 12 行停止。
运行前先读前 30 行。检查单位指令、工件偏置和主轴转速。若出现 G20 而 CAM 设置为毫米,机床将多走 25.4 倍距离。
小型 Arduino 雕刻机的进给和转速应保守。铝材中,6 mm 两刃立铣刀、12,000 rpm 约 800-1,200 mm/min,切削深度 0.5 mm。MDF 中,同刀具可 2,000 mm/min、切深 3 mm。
分步操作:从裸板到首刀
- 1步骤 1:烧录 GRBL仅连接 USB。通过 Arduino IDE 上传 GRBL 1.1。以 115200 波特率打开串口。发送 ? 并确认收到状态报告。
- 2步骤 2:设置每毫米步数对于 5 mm 螺距丝杠、1/16 细分,发送 $100=640、$101=640、$102=640。根据实际丝杠和细分重新计算。
- 3第 3 步:设置行程限位将实测行程每端减去 5 mm 后填入 $130、$131、$132。这样机床在撞到机架前就会限位。
- 4第 4 步:设置速率和加速度先设 $110=2000、$111=2000、$112=500,$120-$122=100。以 50 mm/s² 为步进提高加速度,直到电机失步,然后降低 20%。
- 5第 5 步:验证方向用 G91 G0 X10 让各轴点动 10 mm。如果方向相反,就反转 $3 中的方向位。不要通过重新接线来修正方向。
- 6第 6 步:空走不装刀具、Z 抬高 20 mm 加载程序。以 50% 进给倍率观察整条刀路。这里撞机不产生任何成本。
- 7第 7 步:切测试方块在废料上按实际切深切一个 50 mm 方块。测量它。按实测比例调整每毫米步数,再切一次。
- 8第 8 步:设工件零点并运行在毛坯角上设 G54 零点,在顶面碰 Z 对刀,装好吸尘罩后以 100% 进给运行程序。
Arduino CNC 固件与控制器选项
选择与你的机床尺寸和所需公差相匹配的选项。
| 方案 | 适用场景 | 局限 | 注意事项 |
|---|---|---|---|
| Uno 上的 GRBL 1.1 | 小型 3 轴雕刻机,从爱好到轻量生产 | 3 轴,无换刀装置 | 串口缓冲区小;长圆弧会卡顿 |
| Mega 加扩展板运行 GRBL | 带转台的 4 轴搭建 | 引脚更多,核心限制相同 | 引脚映射需在 cpu_map 中修改 |
| 32 位板上的 grblHAL | 进给更快,轴数更多 | 需要不同的板和 IDE 配置 | 社区插件质量参差不齐 |
| 专用运动控制器 | 生产零件,±0.005 mm 级加工 | 成本与装夹时间 | 只切木材则属过度配置 |
工程师接下来会问的问题
不用 GRBL 能编程 Arduino CNC 吗?
可以,但步进脉冲生成要自己写。这意味着要管理定时器中断产生脉冲、G 代码解析器和加速度规划。
对多数搭建来说这是白费功夫。GRBL 已处理前瞻、圆弧插补和软限位。只有需要 GRBL 无法表达的行为时才写自定义固件。
为什么机器加工中途丢位置?
常见原因是加速度设得过高、驱动器电流限值设得过低,或某一轴存在机械卡滞。
先检查驱动器 Vref,再把加速度减半重跑。如果失步消失,就小步提高加速度直到失步重现,然后回退 20%。
步进驱动器应设多大电流?
将驱动器设为电机额定电流的 70-85%。1.5 A 电机约运行在 1.1-1.3 A。
断开电机,测量驱动器电位器上的 Vref。过高电机会发热;过低负载下会失步。
如何从 CAD 模型得到 G 代码?
将模型导出为 STEP 或 STL,导入 CAM,定义毛坯和刀具,然后生成刀路。
用 GRBL 后处理器做后处理。运行前检查前 30 行的单位、偏置和主轴转速。
Arduino CNC 能达到 ±0.005 mm 吗?
基于 Arduino 的爱好级雕刻机通常最好只能达到 ±0.05 mm,受机架刚性和丝杠质量限制。
达到 ±0.005 mm 需要刚性机床配磨制滚珠丝杠、温度控制和计量手段。那属于生产级 CNC 范畴,不是桌面搭建。
