注释
我想到了两种可能性;首先,您可以使用启动块功能来关闭继电器,此 wiki 页面对此进行了描述: https://github.com/gnea/grbl/wiki/Grbl-v1.1-Commands#n—view-startup-blocks 您可以做的另一件事是连接“武装”开关(可能使用另一种继电器设置,以便在断电时自动关闭)。然后,如果武装开关/继电器没有被激活,主继电器将不会连接到等离子切割机。 |
感谢您提供该信息。我觉得第一个选项不会很有用,因为继电器甚至在启动之前就被触发了。此外,启动块在归位序列之后才会被激活,因此唯一的选择是使用开关,直到一切都稳定下来。 |
您可能应该在输出引脚上添加上拉或下拉电阻。regpye <notifications@github.com> schrieb am Mi., 4. Dez. 2019 年 22 时 55 分:
|
|
它只是一个相当高值的电阻器(50k 到 100k 欧姆),它连接在 arduino 的输出引脚和地(用于下拉)或 5v 电源引脚(用于上拉)之间。 这个想法是电阻器总是试图将输出引脚拉到另一端连接的(接地或 5v),并且在启动时 Arduino 根本不会驱动引脚,所以电阻器是唯一的为引脚提供任何电平的东西。然而,一旦引脚确实被 Arduino 驱动;它会压倒电阻(这就是为什么它在 50k 到 100k 范围内的原因 – 足以提供一些拉力,但电阻不会小到短路)。 然而; 从关闭到主轴方向销被 Arduino 驱动之间的时间长度非常短。默认方向是向前;这在不到一秒钟的时间内就完成了。 你能修改和更新你板上的固件吗?如果是这样,那么您可以查看
它应该放在 这样做会在主轴停止时关闭主轴方向销(无论 Grbl 的其余部分认为它应该转动的方向如何 – 但因为这是等离子切割机,这实际上是你想要的 – 没有电机驱动 &实际的旋转位会因此而感到困惑或颠簸)。 |
感谢您提供非常详细的解释。我从中学到了很多。 |
黑眉 我按照我的想法按照您的说明进行了操作,但是在闪烁我的 nano 时出现此错误消息。 Arduino:1.8.10 (Windows 8.1),开发板:“Arduino Nano,ATmega328P” 在 C:\Users\Reg\Documents\Arduino\libraries\grbl/grbl.h:43:0 包含的文件中,
C:\Users\Reg\Documents\Arduino\libraries\grbl/nuts_bolts.h:56:0: 警告:“最大”重新定义 #define max(a,b) (((a) > (b)) ? (a) : (b)) 在 sketch\grblUpload.ino.cpp:1:0 包含的文件中: C:\Users\Reg\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2\cores\arduino/Arduino.h:93:0:注意:这是前面定义的位置 #define max(a,b) ((a)>(b)?(a):(b)) 在 C:\Users\Reg\Documents\Arduino\libraries\grbl/grbl.h:43:0 包含的文件中,
C:\Users\Reg\Documents\Arduino\libraries\grbl/nuts_bolts.h:57:0: 警告:“min”重新定义 #define min(a,b) (((a) < (b)) ? (a) : (b)) 在 sketch\grblUpload.ino.cpp:1:0 包含的文件中: C:\Users\Reg\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2\cores\arduino/Arduino.h:92:0:注意:这是前面定义的位置 #define min(a,b) ((a)<(b)?(a):(b)) 在 C:\Users\Reg\Documents\Arduino\libraries\grbl/grbl.h:43:0 包含的文件中,
C:\Users\Reg\Documents\Arduino\libraries\grbl/nuts_bolts.h:61:0: 警告:“位”重新定义 #定义位(n)(1 << n) 在 sketch\grblUpload.ino.cpp:1:0 包含的文件中: C:\Users\Reg\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2\cores\arduino/Arduino.h:124:0:注意:这是前面定义的位置 #define 位(b) (1UL << (b)) Sketch 使用 29020 字节(94%)的程序存储空间。最大值为 30720 字节。 如果在文件 -> 首选项中启用了 |
好的,关于重新定义 min() 和 max() 的警告可以忽略,这是一种糟糕的风格,但不是真正的问题。 低内存错误是正常的 – 实际上,在 ‘328 处理器中,Grbl 的运行确实非常接近其 RAM 的极限。 然而,这个错误是一个问题。这意味着 Arduino IDE 没有与开发板通信(在 IDE 中选择了错误的端口?驱动程序问题?或者只是一个临时故障会随着重启而消失?)或者开发板没有响应(它没有重置正确吗?缺少引导加载程序?电缆损坏?)。 取决于您如何上传之前的 Grbl .hex 文件;您可能已经覆盖了引导加载程序。如果是这样,您将需要第二个设备(另一个 Arduino 可以工作,或者像 USBASP 或 Atmel-ICE 编程器之类的东西)将引导加载程序闪回到您的板上。 如果你还没有看到,这是当前编译这个版本的 Grbl 的官方文档: |
bdurbrow |
我在 grbl.h 中找到了这个 #define GRBL_VERSION “1.1h” 但是当我编译并闪存到 nano 时,它显示的是 1.1f。 |
在您的 Arduino 库路径中删除旧版本的 Grbl。将 Grbl 重新导入为库。同时在 Arduino 首选项中禁用主动缓存。 |
camnit |
闪烁 GRBL 1.1h 后,我仍然遇到继电器模块在启动时打开的原始问题。 我的下一步行动是尝试添加一个上拉电阻,如果我理解正确的话,这需要在继电器模块的信号引脚和 nano 上的 5v 引脚之间放置一个电阻。说错了请指正,我不想无缘无故的吹nano。 我已经按照 bdurbrow 的建议添加了这一行 SPINDLE_DIRECTION_PORT &= ~(1<<SPINDLE_DIRECTION_BIT); 它应该在 spindle_stop() 函数的末尾;在第 115 行和 116 行之间。” 我没有看到我遇到的问题有太大区别或变化。 |
如果我使用定时器继电器模块将引脚 D13 激活到继电器模块信号引脚,我可以解决这个问题,但前提是我可以在启动时发送 M4(也许) |
呸!我之前错过了这个:
我建议添加到 spindle_stop() 的那一行将输出引脚设置为低电平,而不是高电平。试试这个:
这会将输出设置为高。 |
黑眉 我已将行更改为 SPINDLE_DIRECTION_PORT |= (1<<SPINDLE_DIRECTION_BIT); 这对问题没有任何影响。 |
今天高/低电平继电器模块来了,所以我把它们设置在高电平并重新接线。问题出在使用低级继电器模块。 |
感谢大家的帮助和建议。 |
我正在使用 GRBL 1.1f
我有一个继电器模块连接到 Arduino nano 上的 D13,我希望用它来打开我的等离子手电筒。我让它在软件中运行正常,我使用 M3 将其打开并使用 M4 将其关闭。我遇到的问题是,当我启动或连接 GRBL 时,继电器会打开并保持打开状态,直到我发送 M4 将其关闭。这是非常危险的,因为等离子在它应该打开之前就打开了。
有没有办法阻止这种情况发生?