Contact me: hankecnc@gmail.com

保存 G 代码文件 #993

推推 grbl 3年前 (2023-01-23) 151次浏览

打开
arlimbad222 打开了这个问题 2021 年 1 月 21 日 · 24条评论
打开

保存 G 代码文件#993

arlimbad222 打开了这个问题 2021 年 1 月 21 日 · 24条评论

注释

保存 G 代码文件 #993

嘿叉子

我正在做一个卧式铣床,每个循环只想运行 25 行 gcode 有什么方法可以在板上保存 gcode 文件并通过按下循环开始按钮运行该文件并通过按下停止按钮停止。目前我正在使用一台旧笔记本电脑发送仅 25 行 gcode。并且终身不需要编辑,只需要 25 行 gcode。

谢谢你的帮助。

保存 G 代码文件 #993

在 Arduino Nano 中存储一个小的 GCODE 并让它在休息或按下按钮时发送出去是一个微不足道的练习。
或者获取那些便宜的离线控制器之一并使用它,如果您的硬件已经支持它的话。

不幸的是你没有说你在使用什么。

保存 G 代码文件 #993

@SimonJohnCastle

我将 Arduino Uno 与 grbl 1.1f 一起使用,目前使用 ugs 发送 gcode,但如果可以在 Arduino Uno 上存储一些 gcode 并通过简单的物理按钮发送它们。我在编码方面没有太多经验,所以我在这里寻求帮助。

保存 G 代码文件 #993
哈利柏林 评论了 2021 年 1 月 22 日  

Candle 具有用于 cuttom gcode 的自定义按钮

保存 G 代码文件 #993

@harryberlin

什么是蜡烛兄弟我不知道那个认为我只使用 grbl 而不是编码人员基本上是机械工程师你能简单地解释一下什么是蜡烛吗?

保存 G 代码文件 #993
西蒙约翰城堡 评论了 2021 年 1 月 22 日  

Candle 是用于将 GCODE 发送到 GRBL 的 PC 软件,所以不是您想要的。

您可以非常便宜地获得一个 Nano 克隆,或者如果您有另一个 Uno,则可以使用另一个 Uno,它易于编程,只需插入即可使用。
如果您是 Arduino 编程的新手,它非常简单并且有很多示例,您所要做的就是通过串行端口将 GCODE 作为字符串发送。为了使事情变得简单,您不必担心 GRBL 的响应,您可以在每行之间设置延迟,以便机器有时间执行其任务。不是最好的,但可能足以满足您的需求。

连接 GND、5V 并穿过 2 个 Arduinos 之间的 Rx/Tx 线

保存 G 代码文件 #993

@SimonJohnCastle

首先抱歉我无法理解这些东西,因为我是机械人。假设我有一个带有 grbl 1.1 的 Uno 和第二个 Uno 空白,我必须给第二个 uno 我没有任何编码经验,如果容易的话,你能帮我做一个吗?

保存 G 代码文件 #993
西蒙约翰城堡 评论了 2021 年 1 月 22 日  

从https://www.arduino.cc/en/software获取 Arduino IDE

Arduino“C”代码非常简单,您只需要像下面这样的代码,并将其上传到您的第二个 Arduino,您可以上传它并直接从您的 PC 上的 Uno 上进行测试。
如果你打开 Tools/Serial_Monitor,你应该看到执行代码的输出,参见图片,你需要选择速度 115200,它应该匹配 GRBL,因为它们需要以相同的比特速度通话(如果这对你来说是新的)

`
void setup()
{
Serial.begin(115200);
//延迟(10000);// 长 10 秒延迟以允许 GRBL 启动并准备好
Serial.println(“G90”);
延迟(100);
Serial.println(“G1 X10 Y10”);
延迟(100);
Serial.println(“G1 X100”);
延迟(1000);// 等待 1 秒以完成
移动 Serial.println(“G1 X-100”);
// 添加你所有的 GCODE
}

无效循环(){}
`

保存 G 代码文件 #993

上面的代码将在每次 Arduino 重置时简单地执行,按下重置并在打开的监视器中看到它再次运行。

作为最低限度,您需要将两个 Arduinos 的 GND 连接在一起,并将第二个 Arduinos 的 TX 引脚连接到 GRBL 一个的 RX 引脚,第二个也需要 5V,您可以从 GRBL one 获得第二个电源

保存 G 代码文件 #993

太感谢了@SimonJohnCastle

现在我明白有什么方法可以添加按钮来启动、保持和停止循环以确保机器安全。

保存 G 代码文件 #993
西蒙约翰城堡 评论了 2021 年 1 月 22 日  

是的,添加按钮非常容易,一旦您看到它是多么容易,您就可以自己学习。
查看示例
您可以在不将其连接到 GRBL 的情况下测试所有这些,只需想象串行监视器是 GRBL,当您按下按钮/重置等时,这将是 GRBL 收到的内容。您的主要危险是发送 GCODE 太快,这会丢失,因为这种方法不检查 GRBL 何时准备好下一个 GCODE

保存 G 代码文件 #993

再次感谢@SimonJohnCastle

我明天会买电子产品,然后测试一下,如果我需要任何帮助,我会来这里?

保存 G 代码文件 #993
哈利柏林 评论了 2021 年 1 月 22 日  

检查这个
https://github.com/mathertel/OneButton
不要使用延迟,因为你可以每次启动停止事件。

保存 G 代码文件 #993

你好@harryberlin @SimonJohnCastle

我今天管理所有电子设备并测试代码但是当我用 grbl 给 mega 一个代码时它会给出很多错误 (25,24,1,2,) 我想我想要代码等待 ok 响应然后给出第二行gcode to arduino mega with grbl&我不擅长编码方面所以请给我一些建议我附上我的ino文件请看并给我建议

祝你有美好的一天谢谢大家的帮助
M3M5.txt

保存 G 代码文件 #993
西蒙约翰城堡 评论了 2021 年 2 月 11 日  

我最初的想法是在每个 G 代码之间使用延迟,让机器在发送下一个命令之前移动。
这样你就不用担心OK了。
从简单的开始,只需在按下按钮时进行一两个动作,就可以证明这个概念。(它是否有效?)
即,当您重置并在按下按钮时执行第一步时,Grbl 是否会失锁。
然后添加额外的 G 代码并适当延迟
由于您的 G 代码是一个简单的重复序列,在任何情况下运动基本上都会“停止”,因此您可以在 Y3、Y-25 之后延迟说在 X 运动之前,所以只要在每个动作序列中放置足够长的延迟

保存 G 代码文件 #993

你好@SimonJohnCastle

哦,我只是忘了在命令行之间使用延迟,我会尽快检查并在此处更新。

感谢您的快速回复。

保存 G 代码文件 #993

你需要在 G01 Y22 F125
即延迟(11000)之后延迟 11 秒;
知道机器在做什么会很有趣吗?

保存 G 代码文件 #993

你好@SimonJohnCastle

我正在使用一台旧的卧式铣床在铸铁环上加工 26 个齿,附上一些照片。

我使用 X 作为旋转轴 & Y 作为线性轴。不使用滚珠丝杠或任何数控设备,只需放置 2 个步进电机并使其工作。

保存 G 代码文件 #993
保存 G 代码文件 #993
保存 G 代码文件 #993

保存 G 代码文件 #993
西蒙约翰城堡 评论了 2021 年 2 月 11 日  

很好,现在我明白了 GCODE

保存 G 代码文件 #993
作者
阿林巴德222 评论了 2021 年 2 月 11 日  

你好@SimonJohnCastle

对于同样的问题,我很抱歉,但我有 3 个这样的产品,我懒得找到每个代码延迟时间请分享我没有任何编码经验。

再次感谢你。

保存 G 代码文件 #993
西蒙约翰城堡 评论了 2021 年 2 月 11 日  

原则上它并不太难,假设你没有进入错误条件并且想让它容错。
基本思路是从串行端口读取数组或字符串,然后查找 OK。
你一直这样做,直到 OK 到达,然后继续发送下一个 GCODE,
查找
Serial see readString etc
String see lastIndexOf
我不能给你一个我头脑中的工作示例,但它并不难。

哦,在你的代码周围放一个 FOR 循环,而不是全部重复

延迟时间并不重要,只要它们比您需要的时间长,我想这里或那里 1 或 2 秒对您来说并不太无能为力,这取决于您要在哪里投入时间,学习编程适当地对你来说可能是一项很好的投资

保存 G 代码文件 #993

G4应该是等待命令

保存 G 代码文件 #993
西蒙约翰城堡 评论了 2021 年 2 月 12 日  

这可以满足您的需要,如图所示进行测试,键入 ok 并按发送
根据按钮处理的需要进行调整

附代码gcode.txt

保存 G 代码文件 #993

保存 G 代码文件 #993

你好@SimonJohnCastle

谢谢你的努力我会在明天测试代码我今天有点忙对不起我会在完成一些实际测试后回到这里。

连连谢谢兄弟。

保存 G 代码文件 #993
作者
阿林巴德222 评论了 2021 年 2 月 12 日  

你好@SimonJohnCastle

我测试了代码,但是当我想通过按钮 2 发送一些实时命令(如(0x91 和 0x94))时几乎没有问题。它完成了按钮 1 的任务,然后按钮 2 正在工作,很抱歉有很多问题,但说真的,我没有任何编码技能,我只是复制并修改你的代码。

祝你有美好的一天,我的朋友。
M3M5.txt

保存 G 代码文件 #993
西蒙约翰城堡 评论了 2021 年 2 月 12 日  

你的字符串是错误的,它应该是“\x91”,这意味着一个值为十六进制 91 的单个字符。
其次,我认为 GRBL 不会对实时命令做出 ok 响应,所以只需像以前一样使用 print 或 println,我不知道 GRBL 是否是我的头脑需要实时 cmd 的换行符,可能不需要,我认为它只是在流中查找它

如果您希望在铣削时按下按钮 2,那么它不会工作,这超出了您最初所说的范围,需要更复杂的编程,这不是真正讨论的地方

您可以通过单击在主循环中安排作业并等待调用滴答以检查进一步的按钮活动来重新排列您所拥有的内容,但是它会在哪里停止

这可能会解决您的问题,但我不熟悉按钮库,也没有测试过。它有点重入

while(Serial.available() < 2) button2.tick();

如果将 FOR 循环放入发送 26 次,整个过程是否正常工作?当您在上传的代码中删除它时?

喜欢 (0)