是否需要经过验证的在线 z 高度轴调整? #372

推推 grbl 3年前 (2023-02-05) 347次浏览
关闭
FMMT666 开启了这个问题 2013 年 1 月 31 日 · 9条评论
关闭

是否需要经过验证的在线 z 高度轴调整?#372

FMMT666 开启了这个问题 2013 年 1 月 31 日 · 9条评论

评论

是否需要经过验证的在线 z 高度轴调整? #372

我厌倦了仅仅因为 z 轴零位置未对齐而重新开始打印。

在我的 Ultimaker 上,我通常只是抓住主轴并用手转动它几下,
同时机器正在打印裙子。
我的其他机器有两个用于 z 轴的主轴,或者该机构
完全隐藏。没有机会手动高度覆盖……

这就是为什么我实现了一些帮助功能,可作为 G 代码或
“LCD 命令”使用,它在运行时更改打印高度 ( 1 )。

虽然“LCD 命令”可直接从“调谐菜单”获得,但
G 代码变体显然需要一个允许您手动
发送命令的软件(那些自定义 Printrun 用户按钮非常适合此操作;-)
这可以如果您从 SD 卡打印,也可以这样做。

每次单击(或命令)都会向上/向下移动 z 轴。命令
本身以及高度可以在 configuration.h 中设置,但被限制
(硬编码)为“每次点击”0.1mm,因为 z 轴现在可以移动到 0 ( 2 ) 以下。

is change 已经“投入生产”了几个星期,在四台
不同的机器上进行了测试并且真的很好用(对我来说 ;-)。

会有人对这个小帮手感兴趣吗?
在这里试试:https ://github.com/FMMT666/Marlin

我没有做“pull request”,因为我还不完全熟悉 Github
,我不确定这个改变对其他人是否有意义。

让我知道…

1 )
实际上,注入的命令仍然被缓冲。
所有其他解决方案似乎都不太安全,但它通常 ™
在裙子轮廓的下一个 1..2 边上执行。

2 )
因为这可以被视为危险操作,所以
命令被执行为“G666”;-)

是否需要经过验证的在线 z 高度轴调整? #372
贡献者

长期以来,人们一直在思考如何实现这一点。理想情况下,在 sd 卡打印开始后,可以在面板屏幕上自动执行此操作。所以你不要因为移动到调谐菜单而浪费时间,时间很关键,几秒钟就可以改变一切。我同意它也应该在调谐菜单中.. 因为如果你有一个桥接层,那么让上面的层更受挤压是一件好事,以补偿流量损失。但是在打印开始后应该有一个机制,也许是一个 gcode 来触发调整,例如 20 秒,然后显示恢复正常。
第二个问题是缓冲移动。高度调整应立即生效,及时,不得拖延。否则对于长而直的裙子线条毫无用处。所以它需要从 ISR 外部调用步进例程。这可以通过在当前或下一个缓冲移动中挤压一些 z 步来实现。无法在 ISR 外部切换步进引脚。此外,在 AVR 上可能可以省略重新计算加速度,因为所有这些的速度都相当小。

你是如何解决这个问题的?

是否需要经过验证的在线 z 高度轴调整? #372
贡献者

顺便说一句,0.1 毫米不够准确,0.01 毫米或 0.02 更合适。然后您也可以执行单个步骤。并避免浮动计算。

是否需要经过验证的在线 z 高度轴调整? #372
贡献者

为什么还要尝试将其用于缓冲的移动命令?你没有改变逻辑坐标(gcode 指的那些),只有实际的电机位置,那么为什么不让控件直接脉冲步进器独立于运动缓冲区?步进率足够低以至于不需要加速(如果不是完全没有意义的话),并且固件不需要记住这些步骤已经发生。我想我什至曾经看到有人在硬件中实现了这一点,完全在固件之外并隐藏起来。

是否需要经过验证的在线 z 高度轴调整? #372
贡献者

因为:
如果印刷品在移动(这是你想要调整的时间,看看你挤压的强度),ISR 会不断改变步进引脚。独立于您在“正常”程序流程中所做的事情。
现在,如果主程序也想更改引脚,则很可能什么都没有发生,或者发生了一些事情,因为引脚状态不断变化。
这就像你有两个互不认识的人通过两个不同的开关切换同一个电路,而其中一个人不断切换,而另一个人想为此添加一个额外的眨眼。

您可以在主程序中轮询 z-pin 状态,然后等到 ISR 忙于其他事情。但这非常难看,因为您在非常近的地方发出两个“步骤”,这可能会导致步骤因加速而丢失。等待是唯一可能的,如果你轮询两次来测量 ISR 延迟。

如果您假设当前执行的行中没有 z 移动,也许可以简化解决方案。可以在缓冲区中检查它。但是你不能调整“jorised”对象。

是否需要经过验证的在线 z 高度轴调整? #372
贡献者

可以从主程序添加到 current_block->steps_z 吗?在最后一次从 ISR 读取 current_block->steps_z 之后,以及在下一个块 -> 当前块转换发生之前,这种情况发生的可能性很小。然而,交互地这并不重要……

是否需要经过验证的在线 z 高度轴调整? #372
贡献者

我的理解是 joris 模式不会影响第一层,无论如何你都想在第一层使用它。似乎向 Z 步进驱动器发送脉冲所花费的时间无论如何都不太可能干扰实际的 Z 移动,并且一次一步应该不足以摆脱加速,但它不应该在进行 Z 移动时太难阻止该功能。

是否需要经过验证的在线 z 高度轴调整? #372
贡献者

@我你不能简单地添加到 current_block,因为 bresenham 算法。
该功能可以是“智能的”。如果可能的话,例如当前移动中没有 z 步,直接步进。如果有 z 移动,将其添加到下一个移动 z_steps。那是除了加速度和最大速度之外的其他东西,但我们说的是单步。
我个人更喜欢它甚至与 joris 的东西和非第一层一起工作。手动补偿灯丝滑动和类似的东西。有时我作为机器的主人想要影响它,以弥补机器的问题。例如灯丝滑移、m600 后灯丝更换 :) 或由于在空心物体中打印陡峭的悬垂而导致周界未卡住/失败。

而且我认为应该有 gcode 让 LCD 显示 z-pos-tune 为 S[seconds]。( :) 请保护 m666 以获取更暴力的内容,我曾梦想拥有 M666 S[steps];老式打印模拟器。添加随机移动到 f*** up 打印的路径)
也许 gcode 可以更通用化以移动到其他菜单条目。eg S[第n个元素第一个菜单] T[第n个元素第二个菜单] U[第n个元素第三个菜单]

是否需要经过验证的在线 z 高度轴调整? #372

如果您希望考虑集成,请重新打开或创建一个带有拉取请求的新问题。