开源改变世界!!

NC 限位开关无法正常工作 #788

推推 grbl 2年前 (2023-01-23) 92次浏览

关闭
arminlinder 打开了这个问题 2020 年 1 月 4 日 · 7条评论
关闭

NC 限位开关无法正常工作#788

arminlinder 打开了这个问题 2020 年 1 月 4 日 · 7条评论

注释

NC 限位开关无法正常工作 #788
阿明林德 评论了 2020 年 1 月 4 日  

在花了一整天试图解决这个问题之后,我敢打扰你。我在 Arduino Uno 上设置了 GRBL 来运行 3 轴 CNC 铣床。步进器运行良好,G0 命令有效,现在我添加了限位开关(NC 类型,连接到 GND)。

从那时起,机器将始终在任何步进器启动时发出警报:1。

我的设置是:

$21=1
$5=1

其他一切都是默认的。查看本文末尾的所有配置值。

如果我输入任何运动命令,例如 G0 X -1,电机会发出微弱的“咔哒”声并立即停止,grbl 会抛出“ALARM 1”。它显然认为,它已经命中并停止,尽管没有一个。每次都以相同的方式发生这种情况(现在至少尝试了 50 次……)。这是此类“会话”的日志:

ok
?<Idle|MPos:0.000,0.000,0.000|FS:0,0|Ov:100,100,100>
G0 X 10
ok
ALARM:1
[MSG:Reset to continue]
Grbl 1.1h [‘$’ for help]
[MSG: ‘$H’|’$X’ 解锁]
?<Alarm|MPos:0.000,0.000,0.000|FS:0,0|WCO:0.000,0.000,0.000>

你看,机器甚至没有移动一步。

已经尝试/排除:

  • 重置错误,机器准备就绪,等了一会儿,什么也没发生,然后用手按下任何一个终点:“ALARM:1”立即出现,如预期的那样。所以我猜开关接线正确。
  • 有缺陷的 Arduino Uno。我给自己写了一个小草图,它使引脚 9、10、12 具有 INPUT_PULLUP,并且我数字读取了正确的状态:如果未按下 NC 开关则为 LOW,如果按下则为 HIGH。
  • 只是为了好玩,我通过 470 欧姆到 +5V 和 10nF 到 GND 添加了噪声抑制和去抖动,如文档中所示,问题仍然存在。
  • 使用示波器测量引脚 9,10 和 12 处的电压,所有三个电压均为 0V,如果我按下任何开关则跳至 5V。没有明显的尖峰。
  • 最后,我用一个粗略的“Bit-Banging”步进控制例程加载了完全相同的硬件,该例程在每个 Step 之后使用 digitalRead 来检查是否触发了开关。该例程旨在“折磨”我的设置,在一个方向上全速运行步进器约 10 厘米,然后返回,无限循环。我让它运行了几个小时,但没有收到任何停止警报。不是一个。只是为了检查,我手动按下了一个停止点,步进器立即停止,所以开关正在工作。
  • 我也断开了步进器,让 Arduino 将信号发送到超空间,错误立即出现。如果是任何类型的干扰,也许是 ENA 信号,那真是一个讨厌的家伙。

在这一点上,我认为我排除了任何硬件问题,这将注意力转移到配置问题上。但是我按照您的文档进行了检查,对所有内容进行了双重和三次检查,没有发现任何错误,没有任何气味可以使 GRBL 在检查端点时变得过于敏感。与此同时,我的示波器一直在运行,我从未注意到信号中有任何毛刺。

伙计们,我被困住了,任何帮助将不胜感激。
为了完整起见,这是我的完整配置:
好的
$0=10
$1=25
$2=0
$3=0
$4=0
$5=1
$6=0
$10=17
$11=0.010
$12=0.002
$13=0
$20=0
$21=1
$22 = 0
$ 23 = 0
$ 24 = 25.000
$ 25 = 500.000
$ 26 = 250
$ 27 = 1.000
$ 30 = 1000
$ 31 = 0
$ 32 = 0 $ 32 = 0
$ 100 = 80.000
$ 101 = 250.000
$ 102 = 250.000 $ 110.000
$ 110 = 500.000
$ 111 =
500.000 122 美元=10.000 美元 130 美元=200.000 美元

$131=200.000
$132=200.000
可以

有任何想法吗?

NC 限位开关无法正常工作 #788
作者
阿明林德 评论了 2020 年 1 月 5 日  

$5=1 对于连接到 GND 的 NC 开关应该是正确的。来自文档:

“默认情况下,Arduino 的内部上拉电阻将限制引脚保持在正常高电平。当限制引脚处于低电平时,Grbl 将其解释为已触发。对于相反的行为,只需通过输入 $5=1 来反转限制引脚。 “

恕我直言,$5=1 对我的设置是正确的。

顺便说一句,我也尝试了 NO switches 和 $5=0 ,并且得到了相同的行为。

NC 限位开关无法正常工作 #788

我的建议是避免让自己感到沮丧和头痛,以及丢失的工作,禁用硬限制 ($21=0),并仅将开关用于归位 ($22=1)。对于限制,使用软限制($20=1)。效果很好。

NC 限位开关无法正常工作 #788
作者
阿明林德 评论了 2020 年 1 月 5 日  

恕我直言,两者都需要工作。目前,我正在尝试将 Arduino 输入与光隔离器分离,并重新加工所有末端停止电缆的屏蔽层。我想这很可能会解决问题,我可以将其作为硬件相关而非 GRBL 问题关闭。似乎我低估了 Arduino 输入对电噪声的敏感性,如果在中断模式下使用引脚,问题似乎更大。我的粗略折磨程序使用 digitalRead 并且不足以替代 GRBL。

NC 限位开关无法正常工作 #788

我同意这不是 grbl 问题;这可能是 EMI 和静态电压累积引起的硬件问题。希望你能想出一个适合所有人的解决方案,但我愤世嫉俗的自我对此表示怀疑。仅使用软限制似乎更容易和可靠。根据我的经验,它在低湿度环境中确实会变得更成问题。真诚的好运。

NC 限位开关无法正常工作 #788
作者
阿明林德 评论了 2020 年 1 月 8 日  

解决。

这个问题与 GRBL 或 Arduino 引脚“敏感”没有任何关系,它是由接线中的电缆故障引起的。这也是NC开关出现问题的原因。

感谢您的帮助,

阿敏。

NC 限位开关无法正常工作 #788

我遇到了与该主题的所有者 – arminlinder 描述的完全相同的问题。由于即时的“硬限位”警报和停止,即使限位开关没有被物理触发,我也无法移动任何轴。

在我的例子中,问题是由电缆干扰引起的。以下是我调试和证明该问题的方式:

  • 我拔掉了所有连接到限位开关和我的 arduino 的电缆(所以 arduino 限位开关端口 9、10、12 变空了)
  • 我设置 $5=0(反转限制引脚 = 0)
  • 我设置 $21=1(启用硬限制),$22=1(归位周期)

通过这些设置,我能够毫无问题地移动所有轴,并且没有触发警报。

那时我连接了 2 条新电缆 – 第一条连接到限位开关端口(9、10 或 12 – 无关紧要),另一条连接到 GND – 之后我仍然能够移动任何轴。
最后一步是将电缆(我刚刚连接的)物理地移动到电机电缆旁边——只需将它们放在顶部或非常靠近的一侧,这样它们就会相互接触。
当我试图移动任何轴时,硬限位警报立即被触发!我将电缆移到电机电缆旁边约 20 厘米处,然后重试。这次时间轴再次正常移动!
我重试了这个过程几次以确保它是那个问题。解决方案是获得良好的屏蔽电缆!

我希望它能帮助别人,因为它让我发疯!

喜欢 (0)