|
|
小哥常玩的是电子和电脑,雕刻机用来用去也只有雕刻PCB最多。但PCB这东西实际雕刻起来最麻烦的是工件加工平面的不平整,一个原因是雕刻机本身的载物台不平,另一个是PCB很难装夹平整。论坛上常用的解决思路有:1、调校载物台至尽量平整,阿莫那边说是能调校到0.01mm精度。2、在软性载物台上铣一个绝对平面。以上两种方法只能有效解决第一个原因所致的加工平面不平问题,而难以应对第二个原因。因为PCB的装夹常用机械压夹或者不干胶大法,我这样初学者实际用起来很难有效保障精度,特别是比较薄的PCB变形非常严重,使用手上唯一测量工具卡尺不严谨的测量过,我这台机器因本身的载物台不平所带来的误差也就0.1mm左右,但PCB的变形在加工范围内经常高达0.5-1.0mm也不足为奇,相对PCB板下刀深度仅为0.1-0.2mm而言,这样大的误差直接导致手上重金购置的雕刻机无法雕刻出合格的PCB电路板。
相信很多初学者有跟我一样的困扰,如何解决因加工平面不平问题?小哥不擅长机械,所以只得从软的方面去琢磨,得到了一个使用算法补偿修正的方法,经过试用,方法简单、普适及有效,不敢独享,全盘奉献给各位同好。
二、原理
PCB工件平面的变形各式各样,不遵守严格的规律。但从微分的角度上看,在指定加工精度(比如0.1-0.2mm)情况下,我们可以认为在一个足够小(比如5mm*5mm)的加工范围,PCB的工件平面的变形仅是一个简单的平面倾斜。换而言之,在这个足够小的加工范围内,PCB工件平面各点处处共面,只不过这个平面相对加工的绝对平面有一定的倾斜。这个结论针对不是绝对柔性的工件而言是显然的。
从上面结论出发,我们只需要在需要加工的范围内取样足够数量的加工平面样本点Si (xi,yi,zi),针对一个加工点A(x,y,z),找到距离该点最近的3个样本点Si ,使用这3个样本点构制一个平面(三点确定一个平面),得到该平面的方程,因为认为加工点A就落在这个平面上,所以将加工点A的xy轴坐标代入所得到的平面方程,就能得到一个新的z轴坐标值z`,接下来修正加工点A的实际加工坐标点为(x,y,z`),也就是说,让雕刻机在x,y位置上实际下刀深度为z`,最后雕刻出来的效果即会有一个深度为原来的需求值z的刀路。
三、实现
雕刻PCB,我采用的是用protel99se输出dxf文件,使用ArtCAM导入矢量后产生刀路(前后要删去几行关于相对坐标设置等代码,论坛中有介绍),再通过Mach3控制雕刻机完成加工。要实现上述补偿修正方法,我的步骤是:
1、装夹好PCB板,连接好对刀线路,对刀线路两个端子一端在刀头,一端在PCB铜箔。在加工零点处进行z轴对刀;
2、我在林大夫的Mach3对刀界面上增加了z轴校零功能(界面及代码文件见附件1),在该Mach3界面上相应输入框内设置z轴校零范围,该范围要稍大于实际加工范围,比如设置x最大为100mm,y最大为120mm,步长为5mm(见图1. Mach3校零界面示意所示);
这里是图片,粘不过来,大家可以仔细看下mach3界面里的对刀按键右下方有个z轴校零的按键,就是它!
图1. Mach3校零界面示意.jpg
3、此时保持对刀线路工作正常,点击z校零按钮后,雕刻机会在x从0至100mm,y从0至120mm的范围内,每隔5mm步长抬刀、落刀进行z平面零点的取样。注意:只能指定x和y的最大值,x和y的最小值默认为0,不能修改。这只是个人使用习惯问题,并不会影响雕刻的实现;
4、耐心等到所有取样完成后,刀头会退回到加工零点,Mach3界面上会提示所有样本数据已经保存到CNCZ0fix.z0f文件中。CNCZ0fix.z0f在Mach3安装目录下,比如C:\Mach3,实在找不到就搜索一下。
5、启动程序Z0Fix.exe(程序见附件2,附图见图2),该程序的功能是根据之前的取样数据,读取并修改加工源文件G代码坐标数据,补偿其中的z轴下刀深度,并为了保证精度,还会对水平加工距离较长(暂时设置为大于二分之一个取样点步长的距离)的G1代码进行加工点插值,修正后的刀路会存在新文件中(不会对源文件进行任何写操作)。
这里的图片就不好描述了,看大家自己的造化吧,直接点击Z0FIX.EXE应该会出来的。
本来想把原贴网址粘过来,但又怕被版主认为是为他人作宣传,呵呵 。。算了。。个人认为确实是好文,费劲的粘贴吧。乐学且有信念的人总会看到原贴的。
图2. Z0Fix界面.jpg
Z0Fix.exe的使用步骤是:(1)手工输入或打开步骤4生成的CNCZ0fix.z0f文件,并点击导入,确认界面上提示的x最大值、y最大值、步长及样本点数无误;(2)打开加工源文件,我使用的是ArtCAM导入dxf矢量后产生刀路*.nc文件;(3)手工输入或打开新文件*.nc;(4)点击“修正”按钮,修正结果会出现在界面上。
6、在Mach3中加载步骤5中生成的新刀路文件,确认刀头的x,y坐标回位到加工零点,建议此次再做一次z轴对刀,确认需要加工的范围在做z轴零点校准步骤中所指定的范围内,本例中为:x从0至100mm,y从0至120mm。接下来按正常操作进行加工即可,会看到z轴实际走刀深度在各处有深有浅,这是针对每处工件平面的具体情况补偿后的结果,加工出来的实际效果应当是符合原期望的。
四、说明
1、除了Z0Fix.exe外,其余思路、方法、代码针对任何刀路产生程序都是通用的,而Z0Fix.exe只针对使用ArtCAM导入Protel99se的dxf矢量后产生nc刀路(前后要删去几行代码)环境下使用过(因为软件编制的初衷仅仅是满足我个人使用需求,如果要考虑其他各种情况,那就太麻烦了),其他软件产生的刀路不一定能兼容。事实上我认为,如果能保证两个简单条件:(1)源文件每行G代码的各个字符之间连着写,不要有空格;(2)坐标定义不一定要xyz齐全,但一定要保证次序,即x一定要在y和z之前,y一定要在z之前。比如如下的各个例子都不会有问题。
N70G0X0.000Y0.000S8000M3
G0X5.588Y0.679Z3.000
N90G1Z-0.200F120.0
G1X5.233Y1.034F300.0
2、z校零范围只能指定x和y的最大值,x和y的最小值默认为0,不能修改。实际加工范围必须在z校零范围之内。
3、Mach3的界面和代码要更改成附件1提供的文件,否则没有校零功能,具体方法请参考林大夫的帖子:http://bbs.5imx.com/bbs/viewthre ... D4%B5%B6&page=1
4、回馈论坛,完全公开,附件3和4是 Z0Fix.exe的CBuilder6源代码及相应功能的Matlab代码(事实上最早只是写成了Matlab代码给自己用的,为方便大家才重新用C++做了.exe文件),供有兴趣同好们的参考。如果 Z0Fix.exe在使用中不便,大家也可自行修改代码。
5、只要保持PCB装夹固定不变,保持加工原点(x=0,y=0)不变,原理上z轴校零产生的CNCZ0fix.z0f数据文件可以反复使用,比如雕刻PCB的线路和钻孔刀路,都可以用同一个CNCZ0fix.z0f数据文件补偿。如果要换刀,须在加工原点(x=0,y=0)再做一次z轴对刀。如果相关环境改变,或者间隔时间较长或者操作频繁,使工件表面相对状态变化了,都需要再次做z轴校零,形成新的CNCZ0fix.z0f。
6、附图3中是一个雕刻实例,在同一块1mm厚,平整度很差PCB板上,保持相关环境不变,使用0.2mm深度雕刻同一线路;左下为不补偿的雕刻结果,可以看到很多地方因为加工平面形变完全不着刀或只有很浅的划痕,导致雕刻无法继续下去; 右上为补偿修正过的刀路雕刻结果,同一块板子上各处下刀深度均匀,补偿是有效的。
这个图片只是雕刻的图片,无所谓了。
图3. PCB效果图.jpg
7、本文为个人经验,如有不妥或需要改进的地方请各位不吝指出,目标是给坛友造福,大家共同学习进步。本文原创首发至CDLE.net及5imx.com,这两个论坛对我帮助很大。至于x莫那里就不发了,他喜欢当自己是上帝,但我恰是无神论者。
只是看了,具体怎么操作,还没试,但个人认为,这贴开启了一个曲面雕刻的窗口(个人认为意味着随形雕刻的开始),大家各自发挥吧。
|
|