当前位置:首页 > 技术 > 雕刻机 > 正文内容

GRBL如何对刀

Watrt5年前 (2019-09-06)雕刻机63330

对于购买和使用入门级 CNC雕刻机的使用者来说,probing可能会让人产生许多疑问,因为入门级 CNC雕刻机的硬体和软体都未必内建 probing功能。Probing究竟是什么呢?Probing就 CNC雕刻机利用一个 probe(探针 )去探测一个工件 (workpiece)的位置。最简单的 Z轴 probing,雕刻机就可以自动探测到工件表面 (surface)的位置,并把这个位置设置成 Z轴的零。这样子 对好刀之后,你雕刻的深度才有保证。

在未有自动化的 Z-probing之前,一般人是如何对刀的呢?很多教学都会叫你拿一张纸,放在雕刻刀和工件之间,如果纸张可以自由移动,就是未够贴近,可以把雕刻刀再降低一些,直到纸张仅仅不能移动,就把这位置设成 Z轴的零 (通常雕刻机控制软体都有 Zero Z/ResetZero这样的一个按钮 )。

那 GRBL的 Z-probing是如何做到全自动的呢?GRBL把 Arduino的 A5pin专门留给 probing使用。如果是预设状态的话 ($6=0),A5pin平常处于高电位水平 (HIGH),而当 A5的讯号变为 LOW的时候 (一般而言,把 A5 接地就会变为 LOW了 ),GRBL就知道对刀动作完成了。

接线方面,一般就会把 Arduino的 GND接到刀具上,然后 A5就接到一片金属造的对刀块。开始时先把对刀块放到刀具的下方,然后启动对刀程序。刚开始时两者是没有接触的,所以没有通电。刀具会缓缓下降,直到接触到对刀块,两者通电,A5的讯号由 HIGH变为  LOW,令 GRBL知道对刀完成,程式就会把当时 Z轴的位置设成零。

使用上面这种方法对刀时,大家要特别留意一下雕刻刀导不导电。虽说我未曾遇到过唔导电的雕刻刀,但据说某些雕刻刀的 coating是不导电的。使用了不导电的雕刻刀去对刀的话,对刀程序是不会自动停止的,这样很可能会损害刀具、工件和雕刻机。

1.jpg

实际使用上,市面有一些十分便宜的接触式对刀块,只要买回来,插到 GRBLcontroller上面就能用。部分雕刻机控制软体 (Gcodesender),例如 UniversalGCodeSender(简称 UGCS),本身内建了对刀的模组,只要设定好对刀块的厚度和对刀时刀具运行的 距离和方向,就能立即使用对刀功能 

2.jpg

另外一些雕刻机控制软体,例如我最喜爱的 Candle,它的自动对刀按钮是要自行输入Gcode命令的,这时我们就要学一点点 Gcode了。对刀用的 Gcode命令就是 G38.2(probetowardworkpiece,stoponcontact)。

G90G21G38.2Z-50F100;        
G92Z1.6;        
G0Z20;

上面的三行 Gcode是我购买那个便宜对刀块时,店家给的用来对刀的 Gcode码,让我们看看它们代表什么。第一行的 G90是使用绝对座标,G21是指单位用 mm,G38.2就是对刀,其后的 Z-50指明了方向和距离,之后的 F100就是 feedrate,即 是行进的速度。这一行的命令是会进行到有接触为止 (stoponcontact)。

当第一行命令执行完成之后,刀具是会停留在接触点那个位置的,这时会执行第二行的命令。G92就是原点设定,就是一般我们按 ZeroZ时所执行的命令。其后的 Z1.6,就是指定现在的 Z位置是 1.6。那为什么不是零呢,而是 1.6呢?因为这个 1.6就 是对刀块的厚度,要减去对刀块的厚度,才会是工件的表面的位置。

最后的第三行,就是快速移动 (G0)到 Z20的位置。

3.jpg

Candle—Settings

当然,以上只是店家的建议,例如我的小型雕刻机,Z轴的行程没有那么大,所以我就改为 G0Z5。又例如我觉得用相对座标 G91比较好。

G91G21G38.2Z-50F100;        
G92Z1.6;        
G0Z5;

也有人会连续做两次对刀,第一次行得快一点 (F100),完成之后只退后一点点 (例如 2mm,G0Z2),再用慢速进行第二次对刀 (F10)。

G91G21G38.2Z-30F100;        
G92Z1.6;        
G0Z2;        
G91G21G38.2Z-10F10;        
G92Z1.6;        
G0Z20;

有人认为这样用慢速进行第二次对刀会准确一点 (当然你可以第一次就用超慢速,但可能你对一次刀要用几分钟,哈哈哈 )。但以我个人的经验,用 F100对一次就很准了。可能因为我自己以雕木为主,对准确度的要求没有那么的高。如果是雕 PCB的话,对准确度的 要求就会高一点。

既然有了 Z-probing,那有没有 X轴和 Y轴的 probing呢?当然是有的,不过 X轴和 Y轴天生有一个问题,就是不像 Z轴可以轻易的把对刀块放上去,因为工件的另外两个平面都垂直的。

4.jpg

市面上也有一些很聪明的角位对刀块,可以于在工件的角位上,以方便一次过做齐 X/Y/Z的 probing。不过这些对刀块都很难买得到,自己动手做也不那么容易。

5.jpg

于是,就有人想出了世界上最便宜的对刀块,就是可导电的胶纸。例如上面这种铜的胶纸,我淘回来也不用十块钱一卷,有 30米长,够用很久的了。(也有人会用锡纸,但钖纸本身无黏力,个人觉得比较麻烦 )

胶纸可以直接贴在工件的边缘,一般我自己会在最后接叠成一个尾巴,以方便用鳄鱼夹夹住。

6.jpg

按照上图的情况,我自己对刀用的 Gcode便会如下:

G91G21G38.2X50F100;(向 X为正的方向对刀,最多行 50mm)        
G92X-1.1; (图中单刃铣刀半径是 1mm,加上胶纸的厚度,所以是 1.1mm)        
G0X-2;(在 X轴的方向往后退一点点 )        
G0Z5;(刀具升高到我的安全距离 5mm)        
G0X0;(刀具行进到 X0的位置 )

使用 X/Y轴的 probing的时候,除了要减去对刀块的厚度 (用铜胶纸的话,就是 0.1mm),也记得要减去刀刃的半径。因为很可能你每次使用的刀具的半径都不一样,所以每次换刀之后也要注意一下要不要修改对刀用的 Gcode,或在对刀程序设定好刀具 的半径。

我用开的 Candle软体可以设定 4个 custombuttons,所以我也习惯把对刀用的 Gcode储存到 custombuttons里面。

7.jpg

使用 X/Y轴 probing的时候,必须使用圆枉体形状的刀具,例如铣刀。其他形状,例如平底尖刀,它刀尖的半径是会变化而且不规则的,对刀得出来的数据并不可靠。

做 X/Yprobing的时候,不只可以寻找边缘,其实亦可以寻中心点的。例如 SourceRabbitG-codeSender,就内建了自动寻找中心点的功能。不过,如果你不介 意自己用人手去计算的话,其实自己用 Gcode去 probe两边加埋再除二其实也很简单。

8.jpg

除了把铜胶带直接贴在工件上,我也会把它贴在定位块上。这样铜胶带可以重覆使用,也不用每次雕刻都要贴一次。而且有些工件,例如 1mm厚的木板,也不适合在边缘贴上铜胶带。

Probing其实亦唔止係找到工件的位置咁简单。许多进阶的 CAM软体,都有 autoleveling的功能,可以自动把水平的刀路 map到放置得不水平的工件上 (常用于 PCB雕刻 )。做 autoleveling时 CAM软体就会多点取样工件的表面,再 按得到的数据去重新计算刀路。

9.jpg

例如上面的这个 Estlcam软体,更可以把平面的刀路,map到滑鼠这样的曲面上呢。

自从 GRBL支援了 probing之后,probing再也不是遥不可及的了。现在差的,就是各大 Gcodesender加强对 probing的支援。

分享给朋友:

相关文章

Arduino CNC Shield V3.XX - 装配指南

Arduino CNC Shield V3.XX - 装配指南

这是一个帮助组装Arduino CNC Shield V3.XX的快速指南。我们还有一个讨论论坛:http://forum.protoneer.co.nz/viewforum.php?f = 6内容:对于Grbl v0.9和v1.1 +默认版本:(注意:Z-limit在D12上,主轴使能引脚在D11上使用硬件PWM。)对于禁用可变主轴的Grbl v0.8和v0.9 +,Z-limit移至D11,主轴启用至D12。这通常是为了在旧电路板上向后兼容。对于激光模式,使用的引脚与主轴(PIN 11)相同...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。