3. 硬件接线实战:X/Y/Z轴限位开关的接线方式,常开(NO)与常闭(NC)的选择

好,咱们进入实战环节。前面聊了那么多原理,现在该动手了。限位开关的接线,说白了就是三根线的事儿——信号线、电源线、地线。但就是这三根线,我见过太多人栽跟头了。

嗯,咱们先看一张图,把整体逻辑理清楚。

限位开关接线与信号流向(NC 模式) 主控板 (Marlin) 信号输入引脚 限位开关 (NC 常闭) COM / NO / NC 电源 3.3V / 5V (VCC) VCC 信号线 (SIG) GND(公共地) 触发时断开

这张图展示的是我最推荐的接线方式——常闭(NC)模式。你看,电源先给开关供电,开关再通过信号线把高电平送回主控板。一旦触发,开关断开,信号线被拉低,主控就知道「到位了」。

3.1 认识限位开关的引脚

拿到一个机械限位开关,你通常会看到三个引脚:COM、NO、NC。别被它们吓到,其实很好记。

  • COM(Common):公共端,相当于开关的「总入口」。电流从这儿进。
  • NO(Normally Open):常开端。开关没被按时,这个脚和COM是断开的。按下去,才接通。
  • NC(Normally Closed):常闭端。开关没被按时,这个脚和COM是连着的。按下去,反而断开。

我个人习惯,拿到开关第一件事就是用万用表测一下。蜂鸣档,表笔搭在COM和NC上,没触发时应该响;用手按一下,响声消失。这就对了。我遇到过有人把NO和NC搞反,结果机器一启动就报限位触发,折腾了半天。

3.2 常开(NO)与常闭(NC)的选择

这是个大问题。很多新手会问:「到底用NO还是NC?」我的答案是——能用NC就别用NO。为什么?

核心原因:故障安全(Fail-Safe)

NC模式下,如果信号线断了、接触不良、或者开关本身坏了,主控板会一直收到「触发」信号。机器会停在原地不动,不会乱跑。这叫「宁可不动,不可乱动」。

NO模式呢?线断了,主控板还以为一切正常。结果撞到限位了,它也不知道停。嗯,后果你想想看。

我曾经帮一个客户排查问题,他的打印机每次归零都撞到X轴尽头,发出咔咔声。我一看,他用的就是NO模式,而且信号线接头松了。换成NC模式,重新压紧端子,问题立刻解决。

咱们用表格对比一下,更清楚:

特性 常开(NO) 常闭(NC)
未触发时信号状态 低电平(0) 高电平(1)
触发时信号状态 高电平(1) 低电平(0)
断线后的表现 一直显示未触发(危险) 一直显示已触发(安全)
Marlin配置 需要设置 ENDSTOP_INVERTING 通常默认即可
推荐度 不推荐 强烈推荐

小提示:如果你手头只有NO开关,也不是不能用。但一定要在Marlin里把 ENDSTOP_INVERTING 设为 true,并且定期检查接线。我个人还是建议你换成NC的,省心。

3.3 实战接线步骤

好,咱们动手。以最常见的NC模式为例,一步步来。

  1. 准备工具:限位开关、杜邦线(或压接端子)、万用表、剥线钳。
  2. 确认引脚:用万用表测出COM和NC。记住,没触发时这两个脚是通的。
  3. 接线:
    • COM 脚接主控板的 GND(地线)。
    • NC 脚接主控板的 信号输入引脚(比如 X-STOP、Y-STOP)。
    • 主控板的 VCC(3.3V或5V)通过一个上拉电阻(通常板载已有)连接到信号引脚。
  4. 检查:接好后,用万用表测一下信号引脚对地的电压。没触发时应该是高电平(3.3V或5V),用手按下开关,应该变成低电平(接近0V)。
  5. 固定:用扎带把线束固定好,避免运动时松动。

警告:千万不要把VCC和GND直接接到开关的NO和NC上!我见过有人把VCC接到NC,GND接到COM,结果一触发就短路,直接烧了主板的IO口。正确的做法是:信号线走NC,COM接地,VCC通过上拉电阻接信号线。

3.4 Marlin中的配置对应

接线搞定后,还得让Marlin知道你的设置。打开 Configuration.h,找到这几行:

// 限位开关使能
#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG

// 限位开关逻辑(NC模式不需要反转)
//#define X_MIN_ENDSTOP_INVERTING false
//#define Y_MIN_ENDSTOP_INVERTING false
//#define Z_MIN_ENDSTOP_INVERTING false

// 如果你用了NO模式,取消注释并设为 true
#define X_MIN_ENDSTOP_INVERTING true

你看,NC模式下,这些反转选项默认就是 false,不用动。NO模式才需要改成 true。我建议你编译前先看一眼这个配置,省得后面出问题再回头查。

3.5 常见接线错误与排查

说几个我实际踩过的坑:

  • 信号线接反:把NO当NC用了。结果就是机器一直报限位触发,或者撞了也不停。用万用表测一下触发前后的电平变化,马上能发现。
  • 地线没接:只接了信号线和VCC,没接GND。信号电平会飘忽不定,时高时低。嗯,这种问题最让人头疼,因为故障现象不固定。
  • 线序搞混:X轴和Y轴的线插反了。归零时X轴不动,Y轴乱跑。我建议你在线上贴标签,或者用不同颜色区分。

我的排查习惯:先看Marlin串口输出的 M119 命令结果。它会显示每个限位开关的当前状态。如果显示 TRIGGERED 但你明明没触发,那就是接线或配置有问题。这个命令我几乎每次调试都会用,非常实用。

好了,接线这块儿就这些。记住NC模式、记住用万用表验证、记住检查Marlin配置。这三步走下来,限位开关的硬件部分基本不会出大问题。