要点速览
CNC 机床该用哪款 Arduino:控制板对比
除注明外,脉冲频率按 8 位内核上 Grbl 运行在 30 kHz 估算。电流为每驱动器电流,非每板电流。
| 板材 | 适用场景 | 轴数 | 注意事项 |
|---|---|---|---|
| Arduino Uno R3 | 3 轴雕刻机、激光、PCB 铣 | 3 | 脉冲频率约 30 kHz;无原生 USB HID |
| Arduino Mega 2560 | 4 轴搭建、多限位开关 | 4–5 | 同为 16 MHz 内核;引脚更多,速度不变 |
| Arduino Due | 细牙丝杠、3D 曲面加工 | 3–4 | 3.3 V 逻辑;需核对驱动器输入电平 |
| Teensy 4.1 | 高脉冲频率、快速点动 | 4–6 | 需自制转接板;3.3 V 逻辑 |
| ESP32 DevKitC | 联网机床、Wi-Fi 点动 | 3–4 | 3.3 V 逻辑;Wi-Fi 会增加抖动,需有线备用 |
| STM32 Blue Pill | 低成本 32 位搭建 | 3–4 | 克隆板质量不一;烧录工具不同 |
Arduino 在 CNC 机床上实际做什么
CNC 控制器把 G 代码变成运动。Arduino 负责读取 G 代码流、规划加减速曲线、翻转脉冲与方向引脚。步进引脚每发一个脉冲,电机走一个增量。200 整步/转、1/16 细分时,一转需 3,200 个脉冲。5 mm 导程丝杠上指令 3,000 mm/min,约需每秒 40,000 个脉冲。
这个数字就是全部理由。16 MHz 的 8 位 Arduino 跑 Grbl 可稳定在约 30 kHz 脉冲频率。再往上推,脉冲间隔开始不均。机床不会停,只是失去平顺性,曲面表面质量变差。所以细牙丝杠或高细分设置下,选板更重要。
Arduino 还负责安全回路:限位开关、测头输入、主轴使能和急停。这些都是数字输入输出,多数板对 3 轴机床够用。第四轴、刀具长度测头和吸尘继电器会迅速耗尽引脚,这时 Mega 就有吸引力。
Arduino 不做的一件事是闭环位置控制。标准 Grbl 是开环。控制器发出脉冲就假定电机已动。步进电机因切屑负载失步时,机床仍沿偏移后的路径切削。闭环步进或伺服驱动能补上反馈,但成本高于控制板。
如何为 CNC 机床选择 Arduino
从所需脉冲频率入手,而不是板名。电机每转步数乘细分系数,除以丝杠导程,再乘最快进给(mm/s)。结果低于 25 kHz,Uno 或 Mega 足够。25 到 60 kHz,考虑 Due 或 STM32。高于 60 kHz,选 Teensy 4.1 或专用运动控制器。
接着如实统计 I/O。每轴需脉冲和方向。每轴加一个限位开关,双向回零则加两个。再加主轴 PWM、切削液继电器、测头输入和急停线。单侧回零的 3 轴机床用 Uno 够。双侧回零的 4 轴机床不够。
然后看逻辑电压。Uno 和 Mega 为 5 V,直接匹配多数常见步进驱动器。Due、Teensy 和 ESP32 为 3.3 V。许多驱动器接受 3.3 V 信号,但接线前查数据手册。3.3 V 信号接进仅支持 5 V 的驱动器输入,会出现看似随机的丢步。
最后决定是否需要网络连接。机床在车间、任务从办公桌下发时,跑 Grbl_ESP32 的 ESP32 很方便。保留 USB 线作备用。Wi-Fi 有延迟,加工中丢包可能毁掉零件。
步进驱动器、电源与接线
Arduino 发逻辑信号,驱动器输出电流。小 NEMA 17 电机用 A4988 或 DRV8825 模块,加散热片每相约 1 A 到 1.5 A。NEMA 23 电机改用 TB6600 或 DM542 外置驱动器,每相 2 A 到 4 A。决定扭矩上限的是驱动器,不是 Arduino。
电源电压决定电机在失速前能加速到多快。24 V 电源适合大多数 NEMA 17 配置。NEMA 23 电机一般需要 36 V 到 48 V。电源电压至少比电机额定电压高 20%,并确认不超过驱动器的最大输入电压。48 V 电源接 42 V 驱动器,这套配置还没跑起来就结束了。
接线引起的故障比固件多。电机线要远离限位开关和探针线。开关线路用屏蔽线,屏蔽层只在控制器一端接地。步进电机线承载快速开关电流,会把噪声感应到相邻信号线上。加工中随机触发限位,通常是耦合干扰,不是开关坏了。
设置驱动器电流时,电机不接机床,驱动器只接逻辑电源。测量驱动器测试点的参考电压,按驱动器数据手册中目标电流对应的值设定。凭手感或猜测设电流,电机和驱动器都会过热。
Grbl、Marlin 以及何时升级
Grbl 是 Arduino 数控的默认固件。它体积小,能在 Uno 上运行,接受标准 G 代码。在配置文件中设置每毫米步数、最大速率和加速度,然后烧录一次。Grbl 本身不支持显示屏或 SD 卡;通过 USB 从 Universal Gcode Sender 或 bCNC 等发送端发送任务。
Marlin 是 3D 打印机固件,但有人把它用在数控雕刻机上,因为它支持显示屏、SD 卡和更多轴。它比 Grbl 更重,对恒速 G 代码的优化也更少。如果机床主要做木材或塑料的 2.5D 轮廓加工,Marlin 可用。如果需要在金属上快速、平滑地轮廓加工,Grbl 或 32 位变体更合适。
Grbl_ESP32、grblHAL 及类似移植版把同样的 G 代码解释器带到 32 位硬件上。它们增加了对更多轴、网络发送端和更高步进频率的支持。代价是配置时间:选项更多,容易配错的地方也更多。选定一个并坚持用到机床能稳定切削为止。
如果零件公差要求紧于约 ±0.05 mm,或者你要切不锈钢、钛合金或淬硬工具钢, hobby 控制器就不合适。这类活需要带闭环控制、热补偿和刚性机身的机床。配 Arduino 的桌面雕刻机可以做原型,但达不到量产公差。
分步流程:从裸板到首次切削
以下流程假设是一台 3 轴雕刻机,配 NEMA 23 电机和外部驱动器。
- 1计算步进频率预算写下每转步数、细分设置、丝杠导程和最快进给。Uno 目标低于 25 kHz,Due 低于 60 kHz。如果超出,先换板子再买驱动器。
- 2选板子和扩展板3 轴用 Uno 加 CNC 扩展板,配 A4988 或 DRV8825 模块。4 轴或开关较多时用 Mega 加螺钉端子扩展板。只有步进频率计算要求时才用 Due 或 Teensy。
- 3按电机电流选驱动器NEMA 17 每相 1 A 到 1.5 A:A4988 或 DRV8825 加散热片。NEMA 23 每相 2 A 到 4 A:TB6600 或 DM542。不要让驱动器长期工作在绝对最大额定值。
- 4确定电源功率大多数 NEMA 17 配置用 24 V,NEMA 23 用 36 V 到 48 V。把电机电流相加,电源留 30% 余量。先确认驱动器最大输入电压。
- 5接电机前先设驱动器电流只给驱动器逻辑部分供电。测量测试点参考电压,按数据手册设定。操作时电机不接机床,这样设错也不会把轴驱到硬限位。
- 6烧录 Grbl 并配置每毫米步数发送 $$ 读取当前设置。根据丝杠导程和细分值设置每毫米步数。最大速率和加速度先设保守值,再小步提高加速度直到电机刚开始失速,然后回退 30%。
- 7回零、对刀并试切逐个验证限位开关能单独触发。点动到工件原点,确认探针输入。用同种材料的废料块试切。测量结果后再切正式零件。
- 8记录失败项记下每次丢步、误触发限位和粗糙切削。这些记录能告诉你下一步是换更好的板子、改接线,还是换一台完全不同的机床。
常见问题
Arduino 能运行 4 轴或 5 轴数控机床吗?
Grbl 标准版本支持 3 轴。部分分支支持 4 轴,Mega 的引脚也够接额外驱动器和开关。5 轴联动远超 8 位 Arduino 能平滑规划的范围。
如果实际工作需要 4 轴或 5 轴,应选专用运动控制器或运动学经过验证的 32 位移植版。4 轴零件方面,钜亮五金(GreatLight)有 12 台四轴铣床和 16 台五轴联动加工中心在运行,这些机床的控制器与 hobby 板几乎没有共同点。
Arduino 做金属零件精度够吗?
取决于所需公差。配 Arduino 的雕刻机在刚性机身、锋利刀具和轻切削深度下,加工铝件大约能保持 ±0.05 mm。再紧,反向间隙、机身变形和热漂移的影响就超过控制器分辨率。
典型量产工作需要 ±0.005 mm,这要求闭环控制、温度稳定的主轴和检测手段。那是另一类机床。
Arduino Uno 运行 Grbl 的安全步进频率是多少?
16 MHz 的 Uno 按约 25 kHz 到 30 kHz 规划。超过后脉冲间隔变得不规则,轴在曲线上运动失去平滑性。
如果计算值超过 30 kHz,降低细分、改变丝杠导程,或换 32 位板。
所有轴都需要限位开关吗?
回零每轴至少需要一个开关。每轴两个开关、两端各一个,可在任务超出行程时保护机床。
开关按常闭接线。断线时读作开关触发并停机,而不是把故障藏起来。
什么时候该停止自制,把零件交给机加工厂?
当零件公差要求严于 ±0.05 mm、材料是不锈钢、钛合金、Inconel 或淬硬钢,或者你需要不止几件相同零件时,就该外发加工。
钜亮五金(GreatLight)可加工 6061、7075、316L、17-4PH、Ti-6Al-4V 和 PEEK,公差可达 ±0.005 mm,并在 12 小时内提供含免费 DFM 分析的报价。无最小起订量,从 1 件原型到 10,000+ 件均可。
3.3 V 板子能配 5 V 驱动器吗?
通常可以,但要查驱动器数据手册。有些驱动器规定逻辑高电平最低为 3.5 V,用 3.3 V 信号会丢步。
如果驱动器需要 5 V 逻辑,就用电平转换器,或选 5 V 板子。逻辑电平导致的丢步看起来像随机故障,后期很难排查。
