注释
这就是为什么在你的宏中你探测,升高 1mm 然后再次探测更慢。
|
成员
Grbl 检查每一步的探测状态。它尽可能准确。更有可能发生的是探头开关中的惯性效应。 |
在探测过程中,GRBL 每一步都检查探针,并在触发探针时将当前位置复制到探针结果中,可能需要几步才能取消运动(我不确定,我还没有检查它是怎么回事完成)但探测结果尽可能准确 |
作者
成员
当首次检测到每步中断触发时,记录探针位置。然后 Grbl 会减速停止,但会报告触发位置,而不是它停止的位置。 |
探测记录触发位置,然后在机器加速度限制内停止,linuxcnc 文档说同样的事情 |
作者
那么缩回到触发位置不是很有意义吗?当您在 bCNC 中进行简单的探测操作时,它不会考虑到这一点。 |
成员
并不真地。省略了自动返回探测点,因此为定制留出了更多空间。如果需要,您可以通过 g1 命令轻松插入返回命令。如果它是自动化的,您将无法选择删除退货。 |
作者
没关系,我已经添加了在 bCNC 中直接探测后自动缩回的选项。感谢您的解释。 |
我也用 bCNC 宏对它进行了排序。然而,我想大部分用例都假设接触停止会按照它说的去做,或者至少会缩回接触点,而不是接触后很快减速并停留在那里。我还认为有很多用户不使用具有宏功能的发件人。在那些情况下,手动计算无论如何都是皮塔饼。据我所知,许多人都在“校准”他们的探头以补偿减速,却不知道错误存在的原因或如何使用探头报告。至少大多数每次探测都使用固定的进给和加速值;所以校准是一致的。我也想不出定制会利用停止位置。它似乎至少有一个现实生活中的理由不自动缩回。 |
作者
也许可能会有额外的 g 代码用于 grbl 的探测。例如。: G38.2 = 传统探测 |
我一直在做一些测试,我发现我探测得越快,grbl 越晚停止机器。这似乎是正常的,因为常识是你走得越快,由于探头电缆和引脚的惯性和寄生电容,测量精度就会降低。
但是我坚信,GRBL 中也存在软件错误,这就是造成这种情况的原因!我会解释:
假设我以 100 毫米/分钟的速度在 Z 轴上向下探测,我得到的探测结果为 -10.000 毫米,但是当我以 400 毫米/分钟的速度探测时,我得到 -10.472 毫米。而且这两个测量值都非常可重复!我可以在 100mm/min 和 400mm/min 之间来回切换,并且对于给定的进给速度总是得到相同的数字!!!如果我尝试将速度从 100mm/min 逐渐增加到 400mm/min,我还可以看到探测误差相应地从 0 增加到 0.472。如果我低于 100 毫米/分钟,精度会进一步提高,但不会那么剧烈。
这个误差在 0.5mm 左右。即使对于快速探测来说,这也太多了。我尝试了几种探测技术。在这种情况下,经典的无源机械 6 球探头。当我以 50 毫米/分钟的速度移动时,触点几乎没有移动。当我以 400 毫米/分钟的速度移动时,我可以看到两个或更多接触点有大约 1 毫米的间隙(当一个接触点几乎打开时,这些探针已经触发)。这比我的预期差得多。如果我使用探头断开步进驱动器的电源,我可以做得更好。此外,当我尝试通过将导线连接到立铣刀并连接到导电材料进行探测时,我注意到我走得越快,探测后在材料表面上产生的划痕越深。
我认为我可以消除惯性,因为问题的可重复性以及我的 Z 轴在重力预加载的导螺杆上,这几乎阻止了它在导螺杆停止后继续运动。
起初我以为这是 arduino 输入引脚通过内部上拉(20k 欧姆)充电太慢的问题,所以我已经安装了 500 欧姆的外部上拉电阻到探针引脚(= 40 倍以上的上拉电流),但我仍然明白无论我是否断开额外的上拉,相同的 -10.472mm 读数。所以我可以肯定地说信号及时到达了arduino!
我认为主要问题是 GRBL 不检查每个电机步骤之间的探针状态,而是每秒检查几次。这意味着,您走得越快,探针引脚读取之间完成的步骤就越多!这种方法不能导致精确读数!
我不太了解 GRBL 的内部工作原理。我不是加州大学的大师,我还没有看到代码。也许这可以通过使用中断来处理探针来解决。也许没有中断可以执行此操作,因为它们在代码的其他部分中使用。也许probe是通过中断来处理的,但是中断被处理另一个与电机步进相关的中断阻塞了。我不知道。
我唯一知道的是 GRBL 中的探测被破坏且不精确。