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

自制 Arduino HID CNC 手持脉冲发生器:23键6功能/档,低成本替代商业手柄

为什么要自制?

商用 CNC 手持脉冲发生器(MPG/手轮)动辄 €100+,且功能固定(通常仅 2 键 + 手轮)。笔者自制木工 CNC,决定用 Arduino Leonardo(ATmega32U4)做 HID 键盘模拟,实现 23 个按键 × 6 种触发模式(单击/双击/三击/长按/双击长按/三击长按)+ 100PPR 手轮,功能远超商用产品,成本不足 €30。

核心优势:ATmega32U4 原生 HID

Leonardo/Micro/Pro Micro 内置 USB 控制器,插上电脑即识别为键盘/鼠标,无需额外驱动。配合 ClickButton 库,每个按键可区分:

并内置 20ms 消抖,极其可靠。

硬件架构

按键功能映射示例 (EdingCNC 软件)

其余按键对应加载文件、红绘、启动/暂停、吸尘/雾化/冷却开关、预设点位 P1/P2 等。

固件关键代码结构


#include "ClickButton.h"
#include "Keyboard.h"
const int buttons = 20;  // 实际用 20 个按键 (0 占位)
ClickButton button[21] = { ... };  // 数组管理,统一配置消抖/多击时间

void loop() {
  for (int i=1; i<=buttons; i++) button[i].Update();
  if (button[13].clicks != 0) {
    switch (button[13].clicks) {
      case 1: shortcut_HANDWHEEL_X(); break;
      case 2: shortcut_ZERO_X(); break;
      case -1: press_ESC(); goto_MAIN_MENU(); user_MACRO_18(); break;
      // ...
    }
  }
  // ... 其余按键同理
}

void shortcut_HANDWHEEL_X() {
  Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_LEFT_SHIFT); Keyboard.press('x');
  delay(100); Keyboard.releaseAll();
}

手轮接线与软件设置

手轮 A/B 相正交脉冲直接接 Leonardo 数字引脚(代码中未显式处理,依赖 EdingCNC 原生支持 USB HID 鼠标/键盘模拟的手轮输入,或通过中间件转换)。EdingCNC 中设置手轮分辨率 100PPR,倍率由按键 17/18/19 发送 Ctrl+N/Ctrl+O/Ctrl+P 切换。

外壳加工细节

编程便利性

无需拆机:保持供电,USB 直连电脑烧录新固件。若需在笔记本上改代码,拔下插笔记本即可,CNC 电源保持供电不丢失状态。

成本对比

按键单击双击长按
1 (复位)F1 复位ESC 退出关闭驱动器
2 (主菜单)Alt+F1 主菜单--
3 (全轴回零)--Ctrl+H 回零
13 (X轴)Ctrl+Shift+X 手轮绑定 XCtrl+1 X清零用户宏 18: G0 X0
17/18/19手轮倍率 1×/10×/100×--
20切换机床/工件坐标系--
方案成本按键数每键功能手轮
商用 MPG€100+2-41标配
本项目~€25236标配

开源资源

适配 EdingCNC、Mach3/4、LinuxCNC 等主流控制软件,仅需修改键盘快捷键映射函数即可移植。

制造工艺

  1. 纽扣:从古老扣件到现代创新
  2. Arduino Mega 按键 PWM 调光:三阶段渐变 LED 实战教程
  3. DIY 蓝牙控制 Arduino 间谍小车
  4. FlickMote:基于手势的智能家居红外遥控器
  5. DIY Arduino TV-B-Gone:万能关机遥控器
  6. 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
  7. Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
  8. 自制可拳击的可编程键盘按钮:基于 Arduino 与压电元件的分步指南
  9. Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
  10. Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY
  11. 理解 CNC 操作面板 RESET 键:功能与使用规范
  12. Osai USA OPENwiTP:面向 OPENcontrol 系统的无线示教器