开源改变世界

激光模式问题 #38

推推 grbl 2年前 (2023-01-21) 334次浏览

关闭
HansPeterHaastrup 打开了这个问题 2016 年 11 月 27 日 · 26条评论
关闭

激光模式问题#38

HansPeterHaastrup 打开了这个问题 2016 年 11 月 27 日 · 26条评论

注释

激光模式问题 #38

您好,
我正在 Protoneer 的 Raspberry Pi CNC Shield 上运行 1.1 beta。我用它来控制结合了 LaserWeb3 的自制 40W CO2 激光器。
由于激光模式,我从 0.9j 切换到 0.9j – 看起来很有希望!

到目前为止我的发现:

  • 在执行“$$”命令时,我错过了对设置的评论。这可能是我缺少的编译标志?

  • 我在连接到屏蔽的 pi 上编译。冗长的编程会显示一些关于多次声明 true、false、max 和 min 的警告。这不是什么大事,但仍然是警告。

  • 系统在任意点停止并给出“警报”状态 – 有没有办法获得有关导致警报的原因的详细信息?

  • 首页提到“激光模式由 $ 命令激活” 你能澄清说 $32=1 启用激光模式吗?查看所有设置时可以节省一些时间 :)

激光模式问题 #38

您可以在https://github.com/gnea/grbl/blob/edge/doc/markdown/interface.md中找到有关配置选项、错误消息和警报状态的信息。

激光模式问题 #38

它看起来更像是整个系统只是重置然后(默认情况下)以锁定状态启动 – 因此警报

这是终端输出(来自 LaserWeb3)
Sent: G1 X93.000 S70 Q: 59019
Recv: ok
Sent: G1 X92.900 S70 Q: 59018
Recv: ok
Sent: G1 X92.800 S70 Q: 59017
Recv:
Recv: Grbl 1.1 d [‘$’寻求帮助]
Recv: [MSG:’$H’|’$X’ to unlock]
Recv: <Alarm|WPos:0.000,0.000,0.000|FS:0,0|WCO:0.000,0.000, 0.000>
接收:<报警|WPos:0.000,0.000,0.000|FS:0,0|Ov:100,100,100>
接收:<报警|WPos:0.000,0.000,0.000|FS:0,0>
接收:<报警|WPos :0.000,0.000,0.000|FS:0,0>

这是它停止的 gcode:
G1 X93.100 S70
G1 X93.000 S70
G1 X92.900 S70
G1 X92.800 S70
G1 X92.700 S70 G1 X92.600 S70
G1 X92.500 S70 G1
X92.400 S70
G1 X92
.300 S70
G1 X92.200 S70
G1 X92.100 S70
G1 X92.000 S70

我想没什么不寻常的。

激光模式问题 #38

这些是我的设置::
$0=10
:$1=25
:$2=0
:$3=3
:$4=0
:$5=0
:$6=0
:$10=0
:$11=0.010
:$12=0.002
:$13=0
: $20=0
: $21=0
: $22=1
: $23=3
: $24=500.000
: $25=1000.000
: $26=250
: $27=2.000
: $30=1000
: $31=0
: $32=1
: $100=80.000
: $101= 80.000
:102 美元=5120.000
美元:110 美元=1000.000
美元:111 美元=1000.000
美元:112 美元=200.000
美元:120 美元=500.000
美元:121 美元=500.000
美元:122 美元=10.000
美元:130 美元=550.000
美元=0 :0.130
美元

激光模式问题 #38

你有没有点击停止按钮?
几行后你会得到 Grbl 版本字符串,这是在新连接或重置后由 grbl 发送的。

激光模式问题 #38
开胃菜 评论了 2016 年 11 月 28 日  

顺便说一下,您的设置看起来不错。
您安装了哪个确切版本的 grbl?应该是 2016 年 11 月 13 日的最新提交。

激光模式问题 #38
贡献者

@HansPeterHaastrup:

  • 由于闪存限制,$$ 设置字符串消失了。它们占用大约 0.5-0.8KB,具体取决于您的最小化程度。已经没有空间了。

  • 我没有收到有关多个定义的警告。请确保从 Arduino 路径中删除任何其他现有的 Grbl 库。如果您没有使用 Arduino IDE 进行编译,请说明您使用的是什么以及您是如何编译的。

  • 你的闹钟看起来很不正常。它没有触发警报的迹象。您的 Arduino 似乎出于某种原因进行了硬重置。我这样说是因为它初始化为 [0,0,0] 位置,这只会在电源循环时发生。有什么东西导致你的 Arduino 硬重置,很难说是 Grbl 还是其他原因。你能断开所有与 Arduino 的连接并自行运行你的 g 代码程序吗?它做同样的事情吗?如果是这样,请尝试另一个 g 代码流媒体,如 UGS,以消除它是 GUI 的可能性。

  • 文档已移至 /doc 文件夹,但将在 v1.1 成为主版本时出现在 Wiki 上。

最后请粘贴您的$IGrbl 构建信息输出。它会告诉我们您使用的是什么版本以及您启用了哪些选项。

激光模式问题 #38
作者
  • $$ string gone:啊,有道理。这是一个很好的功能,但他们必须离开是有道理的。
  • 编译:我正在使用 Arduino。我试图从 git 中获得优势并按照那里的构建说明进行操作。出于某种原因,我无法将该文件夹作为 Arduino 库导入,最终只是打开并编译示例文件夹 (grblUpload) 中的 .ino 文件。我通常在 Windows 机器上,所以我可能做错了什么。
  • 警报:是的,我写完最后一条评论后认为这是硬重置,因为我丢失了机器位置。我知道如果我没有连接到激光 PSU 就可以正常工作,所以这肯定会涉及一些 EMI。
  • 文档:感谢您的信息!

$I:
[VER:1.1d.20161112:]
[OPT:V]

现在我看到一个问题,当我重置时,激光管会在 3 次短脉冲中触发。

激光模式问题 #38
贡献者

如果是 EMI 导致您的硬重置,那么这不是 Grbl 问题。

硬重置会将 Arduino 引脚置于浮动状态。Grbl 对此也无能为力。我记得 Arduino 引导加载程序将启动序列保持一两秒钟。通过 ISCP 标头与编程器一起闪烁可以摆脱引导加载程序。它可以减少或消除此引导顺序。如果您有程序员或备用 Arduino 用作程序员,我会尝试这样做。

激光模式问题 #38
贡献者

@chamnit您同意更新到 v1.1 后需要重置 EEPROM 吗?

(使用“$RST=*”命令完成)

激光模式问题 #38
贡献者

@Protoneer:是的,但是 Grbl 应该会在第一次使用 v1.1 固件启动时自动执行此操作。它检查设置版本号(不同于固件版本)。v0.9j -> 9 和 v1.1 -> 10。

激光模式问题 #38

仅通过 USB 重新连接串行连接(通过软件,电缆保持连接)时也会发生短激光发射行为,但这不应该导致重启,对吗?

激光模式问题 #38
贡献者

@cprezzi:通过串行 USB 重新连接也将硬重置 Arduino。这就是它的设计方式。请参阅 Arduino文档

激光模式问题 #38

谢谢,同时找到它;)

你有没有时间看看为什么在 ctrl-x 之后 gcode 队列没有被清除?
还是有另一种方法可以立即停止机器然后丢弃队列?

我正在考虑断开并重新连接串口,但这会短时间发射激光,这不好(安全)。

激光模式问题 #38
贡献者

@cprezzi: 抱歉,过去几周我没有太多时间。几份报告即将到期,并且在研究 Grbl ARM 时也有点偏离了方向。我今晚试着看一下。

是的,重新连接时不受控制的激光发射非常不安全,但我不完全确定该怎么做。我会认真尝试与另一个 Arduino 或程序员通过 ISCP 标头编写 Grbl。这将摆脱引导加载程序,并可能大大减少或消除此问题。不幸的是,我现在无法检验该理论。

激光模式问题 #38
开胃菜 评论了 2016 年 11 月 30 日  

对于普通用户来说,通过 ICSP 对 Arduino 进行编程可能不太实用。我希望找到另一种解决方案,最终基于硬件。我认为问题在于,pin11 在复位期间处于浮动状态,直到它被配置为集电极开路输出并且 pwm 设置为零。如果我可以设计一个简单的外部电路,将引脚拉到地,直到 Arduino 准备就绪,就可以解决问题。是否还有一个引脚可以用来告诉外部电路固件正在运行(或串口已连接)?

我希望你能找到缓冲区转储的解决方案。一个额外的实时命令来清除缓冲区可能会有所帮助,所以我们可以先保持然后重置队列。

激光模式问题 #38

您是否尝试过只添加一个高值下拉电阻?也许从100k开始。

激光模式问题 #38

舒尔我会先尝试下拉 ;)

激光模式问题 #38
贡献者

@cprezzi: 我不担心挂起问题。这可能只是我的状态机疏忽。几行代码应该可以修复它。

至于用于清除队列的附加实时命令,我不会那样做。这将引入大量需要考虑和适当处理的运行时和安全条件。当控制器允许时,这种类型的控制也经常被严重滥用。Grbl 有意限制仅使用 Ctrl-X 软重置或电源循环来清除缓冲区。主要是因为,如果您处于需要这样做的情况下,那么您很可能需要中止并重新开始您的工作。

如果您询问更好的慢跑处理,Grbl v1.1 有一个新的慢跑模式。在处理慢跑运动时,它有一个内置的方法来清除缓冲区。只有在 JOG 状态下,进给保持才会使机器停止,然后自动清除计划器缓冲区。还有一个单独的点动取消实时命令将执行相同的任务。强烈建议您使用它而不是进给保持命令,因为它不会在点动停止后意外调用保持状态。

激光模式问题 #38

我不是在谈论慢跑,我只是在研究暂停和停止行为,这些行为应该立即停止。对于暂停,我们发送 hold,它会立即停止,但 ctrl-x 会在停止之前发送队列的其余部分。刚刚出现这个问题是因为我们开始使用字符计数的方法,在grbl中填充gcode缓冲区。我不确定我的 ctrl-x 是否被执行了。

激光模式问题 #38
贡献者

@cprezzi: 我碰巧有一个 Arduino,只是做了一个快速测试。Hold 然后按 Ctrl-X 可以正常工作。它将中止保持、重置 Grbl 并刷新计划器和串行缓冲区。

我想我知道问题出在哪里了。在发送 Ctrl-X 之前,您的主播必须停止将 g 代码流式传输到 Grbl。否则,Grbl 将在重置完成后执行流式传输给它的任何 g 代码。这发生在 HOLD->reset 之后,因为 Grbl 重新初始化为 IDLE 状态。不是阻止所有 g 代码命令的警报状态。

HOLD->reset 被认为是“安全”重置,其中位置仍然由 Grbl 保证,因此它不必调用警报。它允许您立即继续操作机器。如果机器在重置期间移动,这会调用警报状态,因为它必须在加速度设置之外立即停止机器并且不能保证位置。我希望这能解决问题。

激光模式问题 #38

我在发送 ctrl-x 之前停止了流媒体,但我认为我的 ctrl-x (0x18) 没有正确发送,因为我没有看到 grbl 的任何反应。我仍然收到状态查询的回复。如果 ctrl-x 将由 grbl 执行,我应该得到欢迎字符串“Grbl 1.1d [‘$’ for help]”,对吗?

激光模式问题 #38
贡献者

@cprezzi: 是的。您应该在每次重置后看到欢迎字符串。Grbl 直接从串行 ISR 中提取实时命令。它永远不会进入串行 RX 缓冲区,您可以在其中使用 CC 协议存储其他数据。因此,只要发送了 Ctrl-X,Grbl 就应该标记系统并开始重置。我的猜测是出于某种原因没有发出 Ctrl-X。

激光模式问题 #38

好的,找到问题了!我必须做一个 String.fromCharCode(0x18) 来让节点序列快乐。
感谢您的耐心等待,对于造成的混乱,我们深表歉意!

激光模式问题 #38
贡献者

关于浮动针主题…

如果我们使用连接到主轴引脚和冷却液/主轴方向引脚的硬件与门来启用激光会怎样?

使用此配置,冷却剂/主轴方向引脚需要高以及主轴引脚才能发射激光。

激光模式问题 #38

您可能仍然需要在两个输出(和门输入)上进行下拉,因为它们会在重置时浮动并且仍然可以随机触发有源输出。
在大多数情况下,PWM 输出上的下拉可能就足够了。您只需要确认电阻器不会对 PWM 信号产生影响(取决于激光驱动输入),这就是为什么我建议使用 100k 的高值。

激光模式问题 #38

有没有人修复激光打开?删除引导加载程序并没有解决我的问题。

喜欢 (0)