开源改变世界

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

推推 grbl 3年前 (2023-01-21) 109次浏览
关闭
abetusk 打开了这个问题 2013 年 2 月 25 日 · 37条评论
关闭

用于(金属)高度映射的 Z 探针(例如 PCB 高度图)#192

abetusk 打开了这个问题 2013 年 2 月 25 日 · 37条评论

注释

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

我一直在修改 GRBL 的 0.8c 版以添加“探测”功能,该功能将减小 z 轴直到检测引脚变低或达到 z 阈值。到目前为止,我已经添加了三个新变量,az feed rate ($23)、az threshold ($24) 和一个探针启用位 ($25)。我还添加了一个独立命令“$P”,它将启动探测操作,但前提是设置了探测启用位。

我使用的是 seeeduino,它是 Arduino 的克隆,具有 atmega328p。探头使能位设置模拟引脚 5(PORTC,引脚 5)的内部上拉,使线路处于低电平有效。当启动探测命令时,z 访问递减,直到探测线变低或达到阈值。

我复制了很多限制代码,它们看起来非常相似。关键区别在于探针操作会适当地减少位置,并且在达到限制时不会退缩。这个想法是用户然后将读取高度并照常进行。

我特别需要此功能,因为 PCB 在相关区域明显翘曲,导致高度发生变化。一旦我有了高度图,我就会插入原始 g 代码以补偿高度差异,然后正常发送作业。

根据经验,这个高度可能高达 0.5 毫米(0.05 英寸),这看起来可能不多,但在布线 PCB 时,铜层的高度约为 0.03 毫米(0.00134 英寸),这使得显着差异,无论是布线 PCB 的质量还是首先这样做的能力。

以前,我通过发出 az height change 然后轮询 GRBL 的位置状态来完成此操作。然后我会查询连续性测试仪,独立于运行 GRBL 的 Arduino,看看连续性是否已经建立,如果已经建立,记录高度并移动到下一个点。这很有效,因为它生成了可用的高度图,但操作速度非常慢,受限于我的脚本可以轮询 GRBL 的速率。一块中等尺寸的木板,50 厘米 x 70 厘米,间隔 5 厘米,需要 30-45 分钟以上,具体取决于 0 z 位置与作品平均高度的接近程度。

我不确定是否还有其他人真正在业余爱好者级别上从事此类工作,但我认为也许其他人会对将此功能添加到 GRBL 感兴趣。您是否有兴趣将这些更改合并到您的下一个版本中?

如果是这样,您是否有关于如何合并此功能的任何指南?添加一个单独的“$P”命令是否符合项目其余部分的理念?我使用的变量是否合适?应该还有其他人吗?

LinuxCNC 也有一个专门用于此的 g 代码,称为“g38.[2345]”(参考此处),但环顾四周,您似乎不喜欢这种 g 代码膨胀。

我仍处于测试阶段,可能存在一些潜在问题。我发现特别麻烦的一个问题是有时会发出多个 ‘?’ 命令冻结 GRBL。我无法重现此问题。我还不确定这是否是我的更改、GRBL 中的错误或我的硬件设置的其他问题的产物,但我想如果您想查看/合并我的代码,我会通知您。

如果您确实看过我的更改,请注意我已经更改了“defaults.h”中 Zen Toolworks 部分下的一些默认值,并更改了 config.h 中步长和方向位的引出线以适合我的设置.

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
贡献者

这个功能听起来很棒!我很想开始做一些印刷电路板的工作
,我读了很多关于高度问题的书。这个添加
对于非 PCB 工作来说也是一个很好的功能。
谢谢,
马库斯

在 2013-02-25 00:57,Abe 写道:

我一直在修改 GRBL 的 0.8c 版以添加
“探测”功能,该功能将减小 z 轴直到检测引脚
变低或达到 z 阈值。到目前为止,我已经添加了
三个新变量,az feed rate ($23)、az threshold ($24) 和一个
探针启用位 ($25)。我还添加了一个独立命令“$P”
,它将启动探测操作,但前提
是设置了探测启用位。

我使用的是 seeeduino,它是 Arduino 的克隆,具有
atmega328p。探头使能位设置模拟
引脚 5(PORTC,引脚 5)的内部上拉,使线路处于低电平有效。当
启动探测命令时,z 访问递减,直到
探测线变低或达到阈值。

我复制了很多限制代码,它们看起来非常相似。关键
区别在于探针操作会
适当地减少位置,并且在达到限制时不会退缩。
这个想法是用户然后将读取高度并
照常进行。

我特别需要此功能,因为 PCB
在相关区域明显翘曲,导致高度发生变化。一旦我
有了高度图,我就会插入原始 g 代码以
补偿高度差异,然后正常发送作业。

根据经验,这个高度可能高达 0.5 毫米(0.05 英寸),这
看起来可能不多,但在布线 PCB 时,铜
层的高度约为 0.03 毫米(0.00134 英寸),这使得显着差异,无论是布线 PCB 的质量 还是首先这样做
的能力。

以前,我通过发出 az height change 然后轮询
GRBL 的位置状态来完成此操作。然后我会查询连续性测试仪,
独立于运行 GRBL 的 Arduino,看看连续性是否已经
建立,如果已经建立,记录高度并移动到下一个
点。这很有效,因为它生成了
可用的高度图,但操作速度非常慢,受限于
我的脚本可以轮询 GRBL 的速率。一块中等尺寸的木板,
50 厘米 x 70 厘米,间隔 5 厘米,需要 30-45 分钟以上,具体取决于
0 z 位置与作品平均高度的接近程度。

我不确定是否还有其他人真正在
业余爱好者级别上从事此类工作,但我认为也许其他人会对
将此功能添加到 GRBL 感兴趣。您是否有
兴趣将这些更改合并到您的下一个版本中?

如果是这样,您是否有关于如何合并此
功能的任何指南?添加一个单独的“$P”命令是否符合
项目其余部分的理念?我使用的变量是否
合适?应该还有其他人吗?

LinuxCNC 也有一个专门用于此的 g 代码,称为“g38.[2345]”
(参考此处
http://linuxcnc.org/docs/html/gcode/gcode.html#sec:G38-probe),
尽管环顾四周,看起来你对这种
g 代码膨胀不满意。

我仍处于测试阶段,可能存在一些潜在
问题。我发现特别麻烦的一个问题是
有时会发出多个 ‘?’ 命令冻结 GRBL。我
无法重现此问题。我还不确定这是否是
我的更改、GRBL 中的错误或我的
硬件设置的其他问题的产物,但我想如果您想
查看/合并我的代码,我会通知您。

如果您确实看过我的更改,请注意我已经更改
了“defaults.h”中 Zen Toolworks 部分下的一些默认值,
并更改了 config.h 中步长和方向位的引出线以
适合我的设置.


直接回复此电子邮件或在 GitHub
#192上查看。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
成员

看起来是个不错的开始。如果我正确阅读您的代码,我看到的主要问题是没有受控的减速。因此,当探头运动停止时,步数可能会丢失,从而给您错误的位置读数。经过几次探测操作后,误差的累积可能大到足以成为一个问题。

我认为您实现命令处理的方式看起来也很不错。与那里的内容大致相同。简单和模块化。我认为在某些时候我们可以将您的工作作为一项实验性功能引入。但是,请使用 edge 版本,而不是 master。这是我们将推送所有新更新的地方。

在某些时候我真正想做的是摆脱使用归位周期的“精简版”步进模块。由于它不是实时的,因此存在以更高的进给率运行的问题。缓慢的除法运算是问题的根源。相反,修改主步进模块以轻松使用特殊运动模式,如归位或探测。几周前我试了一下,但我认为这需要大量时间和工作才能将一些稳固的东西组合在一起。但是,我认为这完全独立于您拥有的 probe.c 模块。完成后,我们只需将那里的代码修改为新的步进器模块。

所以,这让我想到了另一点。探测打开了一大堆蠕虫。它有许多方法和探测工具的变体,即尖端形状、偏移方向、下垂/减速延迟、触发周期数等。所有这些都需要根据用户设置独立调整。如何管理这些使得探测更难支持。我想这种行为需要很像归巢如何寻找触发开关,拉开,然后慢慢重新接合开关以定位精确位置,但在感应到开关时控制减速。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

@abetusk:为此+1,这是我在可以说我具有grbl的基本可用性之前也缺少的功能(我可怜的深度传感器现在被遗弃了)-主要用于相同的应用程序(PCB铣削-基本上是什么我得到了我的磨坊)。

@chamnit:传感方法有点微妙——尽管一些深度传感器有弹性并且内置了一些“给定”,但其中很多(尤其是业余爱好者)只是经过高度校准的固体金属块——这意味着除非一个人可以在触点闭合时立即停止,下一步开始咀嚼工具的尖端(如果在 PCB 铣削中使用超锋利的 v 型钻头,这将立即意味着可怕但几乎不可察觉的“叮”声)。经验表明,带有探测脚本的 Mach3 几乎可以“无提示”地执行此操作任意多次,但该方法确实以蜗牛的速度完成。然而,这也意味着,如果需要第二次通过,我们就做错了……:)

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
成员

@blinkenlight:对于更高端的精密探头,进行触发循环是很常见的。它允许探头快速寻找并找到一个表面,然后快速减速、备份并进行缓慢的精确测量,因此惯性效应不会破坏测量。使用这种方法可以加快整个过程,尤其是对于大量测量。

但是,我确实认为如果您事先已经知道大致的 z 轴表面位置并且从探测周期开始时有意以非常慢的速度进给,那么没有减速是可以的。所以你会快速到达表面上方并开始缓慢接触并在感应到它时立即停止。由于步进电机在低速时具有高扭矩,因此丢失步数的可能性较小。尽管如此,这实际上只是平面探测或半手动慢跑/探测的解决方案,不适用于具有不同形状和大小的物体的一般自动化使用。

或许,将此作为开始也有助于解决我们遇到的一些细节问题。我们可以让用户知道他们需要手动点动到靠近探测点的位置才能启动它。@abetusk,如果您更新边缘分支的代码并使其成为 config.h 中的编译时选项,我想我会将其合并到代码库中,并且可以让人们开始测试它。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

恕我直言,如果探头设计如下所示:https ://docs.google.com/file/d/0BxCeMnNy47GdZ2ZCRFJLUnNfTlk/edit?usp=sharing你就不必担心损坏任何东西。当然,这假设您所有的工具上都有深度环,或者您有办法将工具精确地重复安装在主轴的同一位置(垂直)。

图中的探头是 NC 型(跳闸时打开)。弹簧行程可以随心所欲,理论上甚至可以安全停止移动速度。探头杆的 T 形部分和探头主体的下部是唯一需要精密加工的部分,因此探头的总长度(“松弛”时)是众所周知的。

请原谅我非常快速的起草技巧:-)

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

@csdexter: 哦,我根本不反对这个。我要说的是,我怀疑对于每个基于弹簧的“作为工具安装”的接触式探针,可能还有十个其他简单的实心金属板,实际工具被小心地放入其中,就像这样实例(没有任何“弹性”): http: //www.carving-cnc.com/media/simples/3020Znew_details_1.jpg

我欣然同意这种事情并不完全是专业的顶峰,但因为它可以很容易地制造(将输入线连接到已知厚度的隔离金属板上 -> 完成)并且因为它实际上在实际中工作得很好生活中,它往往是业余人群的首选武器,以我的经验……:)

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

如果涉及导电材料(或者,如您的图片所示,将导体连接到工具本身是可以接受的),那么反向进行我的设计也应该有效 – 无论是使用原始电气设计(即当探针被触摸时打开工具)或图片中的设计(即当工具接触探头时关闭)——在这两种情况下,弹簧都会在那里减弱冲击。

虽然这对于通常尺寸的实际 CNC 工具来说非常有效,但我非常怀疑它是否适用于非常精密的工具,例如 0.1 毫米硬质合金雕刻机或 0.5 毫米钻孔机。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

@csdexter:哦,它确实有效 – 0.1mm v-tips & co。正是我见过的那种工具。后来出于好奇,我什至在显微镜下观察了工具的尖端;看起来(我不是真正的冶金学家/机械师)尖端完全没有受到伤害 – 只要机器运行得非常慢并且在接触时立即停止。不幸的是,在铣削出一个中等大小的 PCB 后也不能说同样的话——不幸的是,这些雕刻刀头似乎不会持续太久……

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
成员

机床刀头非常坚硬,而且设计成比其切削的材料要硬得多,所以刀尖很好也就不足为奇了。我想您会在 PCB 表面看到一些凹坑。这实际上取决于触点之间的弯曲程度,以及如果接触压力过高,您是否会弯曲和弯曲工具。系统确实需要某种合规性,小(工具提示)和慢或大(弹簧)和快速。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
成员

同样,我见过的家庭爱好者可以制作的最好的接触式测头之一是Renishaw 测头。它基于 3 个 v 形槽中的 3 个球的静态行列式(极其精确)接触。球和凹槽是导电的并串联连接,因此当任何一个触点离开 V 形凹槽时,它会立即断开电路。一个简单的弹簧系统,如@csdexter提到的这个设计效果很好。很长一段时间以来,它一直在我的清单上。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
作者

blinkenlight 的链接正是我所做的:用电极连接一个 v 型钻头,减小直到它撞到工件上,记录它的高度。这是我的首选方法,因为正如 blinkenlight 所说,它很简单。我也得到了很好的结果。我可以轻松实现 10 mil 间距和 10 mil 轨道宽度。目前,我的首选钻头是 .1mm 25 度 V 钻头。在我之前的设置中,高度感应是通过一个独立的系统完成的,我确实在 PCB 上看到了“凹坑”,正如 chamnit 提到的那样。

我使用的是带有 1.25 毫米螺距导螺杆和 1/16 微步的 7×7 Zen Toolworks 套件。使用当前版本的探头,我相信当探头进给速率设置为 10-50 毫米/分钟时,我显然会丢失步骤。在听到 chamnit 的帖子后,我相信这可能是由于建立连续性后的不和谐停止。在我开始丢步之前,我还没有机会测试最大进给率是多少。

如果我弄错了,请原谅我,因为我对很多这方面都不熟悉,但我相信基本上有两种解决方案:使用减速来缓和停止或放慢速度,这样你就不会因为以下原因而丢失步骤刺耳的停顿 以前我一直在使用 0.01 毫米增量的高度探测,所以如果我能足够快地减速到这个窗口内,我会很高兴,也许这是一个合理的解决方案。另一种方法是降低探测速度,但这会显着增加映射时间。

我必须做一些计算并稍微玩一下代码,但我将不胜感激关于如何最好地进行的输入。我应该尝试增加减速,还是应该假设探测器的速度足够慢,这样刺耳的停止就不会错过步骤?如果我要使用减速,有没有人猜测在连续性事件后停止的合理窗口是多少?

作为旁注,我还想制作一个 Renishaw 探头,虽然探头代码目前仅适用于 z 轴,但可以很容易地看到它如何在连接 Renishaw 探头的情况下适应所有三个轴。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

如果你只想探测 Z,你可以拆一个 pogo pin 来安装在主轴上,几毫米的弹簧加载行程,所以你可能会快速向下运行并在缓慢备份时进行探测

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
成员

不确定具体如何进行。一方面,减速取决于机器。减速距离取决于速度和减速度。该距离可以通过基于弹簧的探针来增加。就像我说的,真的很难说什么是正确的,因为所有的设置和探测系统都是不同的。

所以,我认为现在最好的办法是假设探测器运行得足够慢,而不是安装减速装置。但是,我会在您编写代码时记住这一点,以便稍后可以轻松安装。我认为在我们弄清楚一切之前最好不要把事情复杂化。

@langwadt: 好主意。弹簧柱塞可以做同样的事情,可以在五金店买到(我想)。基本上用这些做连续性设置。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
作者

@langwadt, 虽然这可能是一种替代方法,但从工作流程的角度来看,使用实际要切割的工具要简单得多。即用工具进行高度感应,然后在创建高度图后,移除电极并开始切割。可以更换工具,将 pogo pin 换成钻头,然后再进行一次高度感应以将角归零,但如果可能的话,我想避免这种情况,因为它只会增加另一层复杂性。

@chamnit,我认为这是一种非常实用的方法。在我开始丢失步骤之前,我将不得不使用它来弄清楚我的系统的最大速度是多少,但这是与选择策略不同的问题。我会尝试将探测与边缘分支合并,并及时通知您。

谢谢大家的帮助。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

关于可以感应工具的 az 探针,我们是否可以使用弹簧柱塞的反面 – 使用弹簧加载机构代替已知高度的金属块?差异更大,但每个人都可以像测量金属块一样轻松地测量自己的测量值。

我以前从未使用过弹簧柱塞,所以我不确定是否有任何带有扁平尖端而不是球的弹簧柱塞……至少,一个足够扁平的扁平尖端。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
贡献者

有没有人真正尝试过没有高度图的隔离铣削?我在我的 MDF+drawer-slides+Proxxon-mill 上用 30° v 位(雕刻机)做了这个“Arduino Duemilanove + Pololu Drivers”板:https ://www.dropbox.com/sh/njo4u9pr34nlzbz/YRNU-tKvoQ . 它不是很漂亮,但无需删除或修复痕迹即可工作。但我的 PCB 质量非常好,也许我只是幸运。
所以,只要这对我有用,我就不想进行高度映射,因为否则我觉得工作量太大,值得购买蚀刻设备。
对于其他目的,我可以想象有一天自己做一个雷尼绍探头,我可以全速撞到物体上,就像归巢一样。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

@jgeisler0303:是的,我实际上是在没有高度校正的情况下进行 PCB 铣削。然而,我确实倾向于使用一个 MDF 床,在上面安装 PCB。它仍然有一些高度波动(我的板子很可能不是真正的顶级质量),但我通常只测量板子周围 5-6 个随机点的高度,并将 Z=0 设置为“最深”点 -这样我就可以保证到处都是铜铣削,并且在某些地方稍微深一点的切割不会对 20-30 度的 v 钻头产生太大的影响(但不是铣削,当然会)。

如果我没有搞砸任何东西,标准的 1.27 间距 SMD(或 2.54 THT,引脚之间有一条走线)是非常可行的。人们可以尝试走得更高,但可能需要特殊的钻头,即便如此,所有的赌注都落空了……

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
作者

@chamnit,我一直在做一些关于 z 探测的工作。它仍然有一个我无法修复的错误,所以我不认为它处于合并到边缘分支的状态。

如果你不介意的话,我希望你能帮上点忙。我肯定在某种程度上错位了,我不确定它是怎么发生的。

首先,让我描述一下我所做的一些改动:

  • 增加探头减速
  • 添加“probe_z_contact_position”以记录接触时间
  • 添加了查询探针函数“$S”以显示当前探针状态(接触/分离、接触 z 等)

我想添加减速,因为很明显我的 Z 轴错位了。但是,在添加减速后,我发现了同样的问题。

主要症状是,当我发出重复探测时,无论是在相同的 x/y 位置还是在其他位置探测然后返回,它都会逐渐向下漂移越来越远。对于 1 毫米/分钟的进给速率和 10 毫米/秒^2 的减速,它看起来是每 3-4 个探针大约 0.001 毫米。更快的进给速度似乎加剧了这个问题。

此外,它似乎只有在钻头接触工件时才会发生。在空中探查,让它命中阈值,一点漂移都没有。

漂移非常重要,以至于使生成的高度图值得怀疑。我对使用生成的高度图来布线板没有信心。

我知道你说不要把事情复杂化,但我对失去步骤感到太紧张,尤其是在看到漂移(有减速和没有减速)之后。对于希望探头在接触后立即停止的人来说,我想将减速度设置得足够高将是等效的。或者,将减速度设置为 0 可能是允许立即停止的特殊指示器。无论如何,我相信你是对的,因为这不是可以预见的,应该交给运营商根据需要进行设置。

我已经在我的帐户下将当前版本提交到 grbl 的“边缘”分支下。主要工作室仍然是probe.c

您对为什么我可能会看到这种情况向下漂移有任何想法吗?probe.c 中的减速代码对你来说合理吗?

任何帮助,将不胜感激。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
成员

导致漂移的可能根本不是减速代码。我确实记得一些 ShapeOko 人要求一种方法来保持轴在他们的机器中漂移而始终处于启用状态。我将它安装为将 step_delay_time 设置为其最大值 255。我会尝试启用它并确保步进电机不会在您的探测代码中的任何地方禁用。这可能会解决问题。祝你好运!

我应该补充的一件事是固件非常接近达到 Arduino (32kb) 和内存 (2kb) 中的最大闪存空间。因此,每当您确实准备好推送到边缘分支时,请尝试确保代码非常紧凑。不必是完美的,但在不让自己发疯的情况下尽可能紧凑。:) 我以后总是可以进来优化代码。

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

因为只要我想声称知道它们的位置,我就在任何时候对步进器断电深感不安,我对轴启用的解决方案是使用 grbl 启用信号,但修补我的驱动器盒以路由它不是启用输入,而是扭矩选择(按照中国驱动程序的习惯,它以前被设计为通过步进时钟超时自动解除扭矩)。这样我就可以两全其美——我不必担心我的步进电机在必须移动时不会“扭矩备份”(中国的超时电路有点粗略…… .),但电机不只是在不动时加热 – 它们在通电时始终保持舒适的 20% 扭矩,除非它们实际上在移动……

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192
成员

@blinkenlight : I think it really depends on the setup and the drivers. My Sherline mill has enough friction (also reduced backlash) in its leadscrews to prevent any slippage once the CNC has come to a stop. Also, I use Pololu stepper drivers that have Allegro ICs in them. From what I can tell from their datasheets, the Allegro ICs do not reset their internal circuitry when disabled, so the microstepping “should” be retained regardless. Even if the leadscrews drifted a little, as long as it’s under a step, the steppers should power back up to its last microstep location. (Not 100% sure of this, but after a year of playing with Grbl, I haven’t seen anything to prove otherwise.) So, perhaps your low-torque mode is your Chinese drivers version of what the Allegros do internally.

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

@chamnit: sure, I suppose all mills are not the same – but my mini-CNC’s ballscrew axes turn far to easily when unpowered for my comfort, so I insisted… :) Regarding the drivers – I’m not familiar with the Allegro ICs, but I do know by Toshiba 6560s keep their internal state too when disabled, the enable pin merely disables the H-bridges. I assume Allegros do the same. I just found the torque toggling arrangement more convenient…

用于(金属)高度映射的 Z 探针(例如 PCB 高度图) #192

The TIs do as well. If you want to reset them you have to hit the Home pin.

Alden

On Mar 1, 2013, at 11:30 AM, Asztalos Attila Oszkár notifications@github.com wrote:

喜欢 (0)