开源改变世界!!

推推 grbl 2年前 (2023-02-06) 91次浏览
关闭
spac3man 打开了这个问题 2013 年 12 月 13 日 · 14条评论
关闭

功能请求:触发开关时暂停#679

spac3man 打开了这个问题 2013 年 12 月 13 日 · 14条评论

评论

我想添加一个 NC 开关,触发时会导致当前打印暂停。目标是在耗尽灯丝时暂停机器。我找到了一个请求https://github.com/ErikZalm/Marlin/issues/337但它偏离了我的请求的主题并且寻求的不仅仅是我想做的(灯丝直径测量)。

我认为它的行为方式与“暂停”按钮在 pronterface 中的工作方式相同,因为打印会一直持续到缓冲区为空。如果是这种情况,如果开关设置得离挤出机头足够远,并且它触发了暂停,将有足够的材料继续打印,直到缓冲区清空。我认为还必须有某种要求将头部向上移动以避免过热和渗出。这个次要要求虽然有用,但必须作为上述第一个目标的附加条件进行检查。

随着今天的 TAP(热增材打印)机器变得更加可靠,社区似乎正在打印更大的部件和更长的时间。话虽如此,打印整个卷轴材料并需要重新加载,不再是不现实的了。

贡献者

我一直在想我们最终也需要实现这一点。它基本上是 E 轴的止动器(不要与紧急停止混淆,其中 E 表示紧急情况)。我一直在想,如果接线正确,我可能可以在同一个引脚上为 UFID 实现 1-WIRE 通信。

在 2013 年 12 月 12 日星期四下午 6:45,spac3man 写道:

我想添加一个 NC 开关,触发时会导致当前打印暂停。目标是在耗尽灯丝时暂停机器。我发现了一个请求#337 ( https://github.com/ErikZalm/Marlin/issues/337 ) 但它偏离了我的请求的主题并且寻求的不仅仅是我想做的事情(灯丝直径测量)。
我认为它的行为方式与“暂停”按钮在 pronterface 中的工作方式相同,因为打印会一直持续到缓冲区为空。如果是这种情况,如果开关设置得离挤出机头足够远,并且它触发了暂停,将有足够的材料继续打印,直到缓冲区清空。我认为还必须有某种要求将头部向上移动以避免过热和渗出。这个次要要求虽然有用,但必须作为上述第一个目标的附加条件进行检查。
随着今天的 TAP(热增材打印)机器变得更加可靠,社区似乎正在打印更大的部件和更长的时间。话虽如此,打印整个卷轴材料并需要重新加载,不再是不现实的了。


直接回复此电子邮件或在 GitHub ( https://github.com/ErikZalm/Marlin/issues/679 ) 上查看。

贡献者

如果您想要 1 线,则需要对引脚进行位敲击。atmegas 上没有硬件 1-wire。我唯一能说的是……祝你好运……
我前段时间写了一个 1 线库,很乐意分享,但我认为添加这个特定协议会相当具有挑战性……

马尔钦

我也喜欢这个主意。我想每个人都遇到过打印
线轴耗尽的问题。

这并不难,我们可以选择一个未使用的止动器。大多数板有
6 个止动器(X、Y、Z、最大和最小),只有少数人使用所有这些。

亚历克斯。

2013/12/13 nothinman notifications@github.com

如果您想要 1 线,则需要对引脚进行位敲击。atmegas上没有硬件
1-wire。我唯一能说的是……祝你好运
……
我前段时间写了一个 1 线库,很乐意分享,但我
认为添加这个特定协议会相当具有挑战性……

马尔钦


直接回复此电子邮件或在 GitHub 上查看它 https://github.com/ErikZalm/Marlin/issues/679#issuecomment-30502656

“Não é o mais forte da espécie que sobrevive,nem o mais
inteligente。É aquele que se adapta melhor as mudanças”(查尔斯·达尔文)

亚历克斯博罗

作者

@whosawhatsis 正是……E 轴的止动器。
@nothinman我会尊重您的经验,并假设我们必须保持 2 线(如止动器)。Mega 板上有可用的连接,例如 D16,然后只需几行代码就可以让固件识别信号。更进一步,PC端软件是否可以将人头移开,达到第二个目的?或者也可以/应该将其编码到固件中吗?我的猜测是获取固件来执行此操作,因为这将继续对机器进行无 PC 控制。

贡献者

我指的是单线协议,而不是一根线到一个引脚的物理连接……
两者都可以完成。我实际上计划明年在带有自动调平和内置灯丝传感器的热端工作。

作者

对不起。很快,我想我已经不知所措了。

无论哪种方式,修改固件都不是问题吗?

作者

我想知道最近是否对此进行了更多考虑?

作者

只是想知道关于这个主题是否有任何新内容?

贡献者

我假设这将类似于 M600 头部停放操作……除了停放位置将被硬编码(或至少使用 M600 的默认值)并且它将由输入引脚触发。对于 SD 卡打印和 LCD 屏幕(打印控制在固件中),这不会太难。

对于基于主机的打印,我想在不需要主机支持的情况下实现它的唯一方法是继续停止打印命令管道——我想这可能会导致某些主机超时。所以这可能会让人不悦。我更改#378添加固件命令以支持主机驱动的磁头停放和恢复受到了一些强烈的抵制,因为显然“它破坏了目的”(大写不是我的)。

贡献者

想法?

主要问题是 Marlin 无法将事件指示回主机。潜在地,我们可以以无害的方式扩展 G 代码协议,以返回 ok、rs、!!、// 以外的其他内容,以指示事件已发生。我们可能会发送如下回复:

%% S=”打印机暂停 – 在挤出机 1 上检测到灯丝丢失”
重新发送:546

%% 表示这是一个事件,而不仅仅是 // 信息性注释。

在一个不知道的主机上,未知的 %% 响应应该被正常的主机程序忽略(Marlin 毕竟在不使用 // 前缀的情况下在串行端口上发送各种其他非标准响应消息,所以我们希望主机不会阻塞这)。不知情的主机会继续重新发送命令,直到系统重新启动。[如果主机不支持恢复(您不希望打印机自动重启 – 可能是在您仍在摆弄挤出机时),这将要求您在打印机上有 LCD 或单独的“恢复”按钮。 ]

知道 %% 消息含义的主机程序可以
a) 在屏幕上显示事件消息(询问他们是否要尝试恢复打印/清除可能成功或可能不成功的故障)。
b) 然后它可以发送一个尚未定义的 Mxxx 清除事件命令以尝试在用户请求时重新启动打印(例如,在重新插入灯丝之后),而不是像不知道的主机那样继续重新发送相同的命令。

有更好的主意吗?

贡献者

它可能在主机端处理得更好。主机可以定期轮询传感器的状态,并可能对信号做出丰富的响应:暂停发送打印动作、记录位置、收回、冷却、发送电子邮件以及在 5 分钟、20 分钟内降低温度等。

从固件方面来说,您可能不想阻止灯丝重新加载和恢复类型的移动,但区分需要做什么可能会很复杂。

我用#940为 M42 添加了数字读取功能 也许它可以帮助进行实验。

贡献者

嗨 drf5n – 感谢您的加入。
在理想的世界中,是的,我完全同意固件将具有最少的功能,而这种更高级别的功能将全部由主机驱动。
不幸的是,在 RepRap 社区中,似乎大多数主机程序都非常基本,因为它们必须 a) 与这么多不同的变体或物理打印机配置一起工作,运行这么多不同的 3dp 固件变体(它们几乎似乎提供了最低的公分母功能)。
再加上您经常可以对打印机进行控制(例如,某些 LCD 上有一个暂停/恢复按钮,目前什么都不做)的问题,主机程序无法满足这些控制(同样在专有解决方案中,这不会’在主机上实现不会有问题)。

因此,这常常促使我们寻找可以在固件中实现并且可以与任何主机程序(至少是基本级别)一起工作的解决方案。

贡献者

这个是大约一年前创建的,有很多变化,请下载最新的 marlin 副本,看看问题是否仍然存在。您还可以使用最新的 arduino IDE 来刷新 marlin 固件。如果您的板文件等只能在旧的 ide 下工作,请先升级它们,以便它们在最新的 IDE 下工作。

如果您为不在https://github.com/ErikZalm/Marlin/tree/Marlin_v1/ArduinoAddons中的硬件创建板文件,请 fork marlin 并添加文件,然后创建一个拉取请求,以便我们可以获得硬件支持的。这也将使人们了解人们正在使用什么硬件。