注释
是的,硬限制打开,开关被触发,但是当达到限制时没有任何反应,没有执行中断 = 没有硬限制警报。 |
更新更多信息 – 归巢时警报响起。但是,在不损坏机器的任何操作期间,这不应该起作用吗? |
可能是因为您使用的是 NC 开关。我从来没有尝试过。 |
我应该使用 NC 开关工作 我的设置是 |
Electrokean:我宁愿坚持使用 NC 开关,我认为它们比 NO 提供更多的安全性。 vMeph:我将开关串联 GND->SW1->SW2->Limit PIN。不要使用电阻器,相信这个配置它们已经过时了,因为内部上拉应该打开 [没有在 config.h 中禁用它]。 |
我有外部上拉,但没有移除内部上拉和开关和 gnd 之间的 47 uf 盖帽,我遇到了导致误报的噪声问题并且解决了我的问题(没有禁用 config.h) |
vMeph:但是你的开关是 NO,对吧?我认为如果您使用 NC,噪音问题会更好。不确定如何调试问题,也想为其他人提供帮助/修复。 |
我的开关是 NC |
你能展示一下连接接线的草图以供比较吗? |
我做了你的设置,它的工作方式和我的完全一样。我上传了一个问题的视频。正如您将看到的,限位开关将被触发到“1”,但机器移动不会停止,因此不会创建警报。 |
我不知道你用的是什么 arduino 或者你有什么版本我假设你有 arduino UNO #define LIMIT_DDR DDRB 看起来你已经定义了 #define LIMIT_DDR DDRC 应该就像你已经设置了 PORTC DDRC 和 PINC,从我在 grbl 1.1 上看到的信息是 我假设你使用了错误的寄存器 我获得信息的链接在这里 在你的情况下,保存你的机器配置设置清理你的arduino eprom等可能是个好主意。并开始新的安装? grbl 1.1 是新版本,它仍然是测试版,但到目前为止没有重大问题,它有新的选项,如实时覆盖进给速度、激光选项等。 |
我更改了端口映射,这样我就可以在 2560 顶部使用 RAMPS 板(绘制端口/引脚图很痛苦,如果有人需要可以分享)。根据 2560 规范设置的引脚/端口 – 自定义分配。我当然遵循引脚必须共享相同端口的规则。 |
@kyjak: 我觉得最好分享一下你所做的所有修改,否则无法帮助你。如果做得不正确,引脚中断分配可能会很棘手。 仅供参考,v0.9 上的 Mega2560 编译选项完全由用户支持。从默认构建更改内容时可能会出现错误。在 Grbl v1.1 成为 master 并且我将新内容移植到 Mega 分支之前,我将仅对 v1.0+ Mega 版本提供有限的支持。 |
没问题,http: |
@kyjak: 匆匆看了一眼。您可能需要检查您的 PORTE 引脚是否有引脚更改中断。它看起来不像,但话又说回来,我只是看了一眼数据表。 您还定义了一个 PORTE 引脚两次以执行两种不同的操作。 |
好吧,根据规格 [不是很深的专家],我假设“/INTx”表示中断可用性。或者? 更正:感谢 Chamnit,供参考和其他人使用,需要 PIN CHANGE INT,在引脚图中别名为“PCINT”。我会尝试重新布线并发布进度,再次感谢线索! |
@109JB 那里没有那个上限的原因是什么? |
我想我不需要它,但感觉我过去有一些噪音问题,我最终选择在那里设置一个上限以避免任何漂浮,到目前为止再也没有错误触发 |
深入研究数据表有帮助,使用端口 K 进行限制,PCIE2,感谢你们,我现在了解它是如何工作的。在连接探头和控件之后,如果有人感兴趣,我会在网上发布专有技术。不确定此设置是否与新的 GRBL 兼容,RAMPS 是否兼容可能是个问题。 |
我将限位开关设置为常闭 NC,
CPU 映射定义如下。我的问题是在查看详细输出时,
我将限位开关标志清除为 000,当我按下开关时,它有效地转到“1”。
但是,在运行 gcode 时,按下开关不会触发任何动作。
它应该暂停/中断执行,但没有任何反应,知道这是否是
代码中的错误?
$5=1
$21=1
#define LIMIT_DDR DDRC
#define LIMIT_PIN PINC
#define LIMIT_PORT PORTC
#define X_LIMIT_BIT 6 // mega Digital Pin 31
#define Y_LIMIT_BIT 5 // mega Digital Pin 32
#define Z_LIMIT_BIT 4 // mega Digital Pin 33
#define LIMIT_INT PCIE0 // 引脚更改中断使能引脚
#define LIMIT_INT_vect PCINT0_vect
#define LIMIT_PCMSK PCMSK0 // 引脚改变中断寄存器
#define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)) // 所有限制位