208932| 202
|
【燃烧吧 切割机】 自制微型激光切割 |
自从苹果的原装键盘罢工之后,就入了机械键盘的大坑,无奈除了少数几个牌子有for Mac版本的之外,大多数键盘都是for PC,甚至套装键帽也没有苹果版的,command键、option键没有怎么能忍受,于是想试试自己能不能烧制几个,想起来半年前看到 Instructable 上有人用旧光驱做出了微型激光雕刻机,于是准备制作自己的激光雕刻机。 仔细看了几篇文章,最后选择了SilverJimny的The MicroSlice的方案作为这次的主要参考,因为这个方案完成度很高,尤其是SilverJimny给出了完整的机架CAD图纸,而且做得很漂亮。不过制作说明写得还有一些含糊,制作的过程中基本也是一边尝试一边摸索,也走了些弯路,我会尝试在这篇帖子中讲清楚。 最终完成品功能: 大于50mm X 50mm 的工作区域; 能够切割纸张、雕刻塑料、木头; 所用到软硬件都是开源的;(Arduino + Grbl 0.9) 花最少的钱办最多的事; 可扩展,比如用树莓派,或者增加第三轴用于调焦; !!第一处注意点: arduino不论新旧(我用的Duemilanove,你也可以用Uno)不过烧录Grbl控制程序(0.8版本以上)对容量有要求,我们要使用328P的芯片; Grbl官方build的版本可能无法直接用(原因后面会说明),需要改源代码重新编译或者使用我编译好的版本; Step1:准备材料 (这里列出原清单,逐一说明,链接全部改为某宝) 1 x Arduino板 (uno/ Duemilanove都行 328P芯片) 1 x X 轴马达; 1 x Y 轴马达; 1 x 两路继电器 (我买的继电器低电平吸合,高电平释放,这和Grbl里面的设定刚好是反的,因此后面要改源代码); 2 x Easydriver板 (这货比较贵,买国产的就行,其实也不一定非用easyDriver,比如我后来发现sparkfun的 auto driver板子更牛逼,多达128微步,不过换其他板子需要改机架安装孔位,8微步是必须的,如果考虑更便宜的国产板要把这个要素考虑在内); 2 x 5v 稳压模块 2 x 散热片 (散热片没有现成尺寸的,需要自行切割,后面会说明) 1 x 45x45x10 风扇 (12v) (45X45的风扇已经比较难少见了,我建议是买50X50的,改一下机架) 4 x 微动开关 (带钢片) 9 x 铷磁铁棒 (这个用处不大,可以忽略) 4 x 橡胶脚垫 (可以忽略,或者用别的垫片自行切割) 5 x M3机箱手拧螺丝 1 x 激光二极管 (我用的是三菱ML101F27,研究了很久,这是我能找到的最便宜的,功率也够大的激光二极管) 1 x 激光模组 45mm 1 x 激光驱动板 1 x 激光镜头 (一般模组自带的是塑料镜头,不够好) 1 x 4mm 铝管(内径3mm, 长度100mm就足够用了) 2 x 3mm x 150mm 钢棒 1 x 3mm x 100mm 钢棒 (这个一定要很直很光,我建议买回来自己用手锯切割,因为代割不准) 17 x M3 花牙压板螺母(SilverJimny用的那种国内没的卖,找的替代品,感叹一下国产紧固件落后人几十年) 6 x M2 沉头螺丝 (6mm) (沉头螺丝用来装光驱步进电机) 6 x M2 螺母 20 x M3 螺母 6 x M2 平头螺丝 (6mm) (用来装钢棒两端的固定木片) 8 x M2 平头螺丝 (8mm) (平头螺丝装微动开关) 4 x M3 尼龙螺丝 (6mm) (用来固定easydriver等板子) 4 x M3 50mm 铜柱 7 x M3 内六角螺丝 (8mm) 8 x M3 3mm 尼龙隔离柱 2 x 机架激光切割加工 另外我补充一下SilverJimny没列出来但是必要的零件,工具: 快干白乳胶; 220V转12V变压器(输出电流最好能在1A以上,因为arduino的5V电压是拖不动步进电机的,需要通过DC Jack额外供电) 4 x M3 16mm螺丝(用于安装风扇)铝箔(淘宝可以买到带背胶的,一定要光面,越光洁对激光的反射越强); 杜邦线、杜邦头(公母都要); 杜邦头塑料壳(1P、2P、3P、4P都需要一些,当然你也可以只用1P,只是到时候接线更乱些); 单排、双排插针都需要一些(焊在easydriver上,有些店家有送,不过仍然需要一些额外的双排插针); 1.0mm的4P插座(用来接步进电机,不用的话焊线会很考验手工); 尼龙扎带几根; 3M导热胶(用来粘散热片); 一个5mw的激光头(这个用来测试的时候用,因为大功率的激光很危险,必须确定一切妥当之后再安装,你也可以用led代替,不过需要串接个降压电阻); 激光防护眼镜(便宜的那种只能说聊胜于无,300左右的我没买,最后家里找了副Speedo泳镜(银闪闪带反射镀膜那种)+ 绿色墨镜(吸收红光)= 双重防护 ,基本OK了,调焦的时候需要直视激光,完了只要不看就可以了,实在不想买,也可以用相机或摄像头来间接观察激光,切记不可以用眼睛直接观察激光,伤害非常大,会造成白内障!!!) 工具: 水口钳、剥线钳、压线钳(压杜邦头)、钢锯、电烙铁、电钻、微型虎台钳(最大开口要5cm以上,要夹在桌子上的那种,不要吸盘式的) 模型用强力夹(20只是必须的,如果有几个F夹更好); 这里写得比较啰嗦,后面有不明白的地方可以回过头来再看看,你会觉得有用的; Step2:少年,来拼模型吧 加工好的机架木片,3mm航空椴木,其实到手就可以拼装了,但是...等等…这白白的木色怎么能够衬托出某屌的高大上,喷个漆再说。 喷漆选了亚光黑,对手艺要求低效果也好,右边这种喷罐需要两听,喷一遍—晾干,双面来回三遍;记得喷的时候背面用胶带贴好,免得零件翻面时候掉出来,完美控也可以先拼好再上色; 从最简单的地方下手吧,先把上面的部分找出来拼好,用胶水固定,注意除了主体4片,还有两小片粘在下方背面,如下图所示。 接下来拼装龙门架,因为有些步骤漏掉没拍,所以借用一下SilverJimny的图 这里有两点需要注意: 第一:安装光驱步进电机的那两颗沉头螺丝,安装好以后一定不能凸出来,否则滑块容易被卡住,解决的办法:买个沉头钻,把沉头孔打深一点,不够再把螺丝磨平一点; 第二:看到龙门下部的那两个圆孔了么?铝管就是装在这里的,果断插入,铝管一定要能够顺滑的在钢棒上滑动,如果内孔不够光滑,可以上一点油,套在钢棒上打磨几下,打到光滑为止; Step3:上部工作台 这部分没有太多需要说明的,注意一下中间两片梁的方向就可以了; 到这已经可以把上半部分拼起来看一下效果了,注意不要忘记安装档片; Step4:切割台 切割台最简单也最烦,两片用胶水黏住就好了,要覆盖上一层铝箔用来反射激光,防止激光把机架烧断,这里蜂窝状的结构有点麻烦,只能用小刀一点点刻出来,建议先贴好铝箔,再黏合两片板,这样刻的时候方便点。嫌麻烦的可以不割,优点是保护性其实更好,缺点是不够拉风; 上了土豪金是不是立刻高大上了很多; Step5:稳压模块和散热片 注意模块插针要自行焊接的,焊好以后把背面多出来的引脚用水口钳剪掉,并且用锉刀打平以便粘散热片; 单耳散热片没有现成的买,基于花最少的钱办最多的事原则,买了两片45mmX45mm的金色散热片,用手锯锯成合适的大小,电钻打一个M3大小的眼,用3M导热胶带粘在了模块背面;(粘之前务必和板子对一下孔位) Step6:风扇 风扇比较简单 螺丝上好,电源线缠一下用困扎带固定,接线端火线做一个杜邦公头,零线一个杜邦母 Step7:底座 底座做好是分离的两个部件,如图所示,然后通过下图的铜柱拧合在一起 首先把小圆环全部理出来, 按孔大小分好类,一共是4种,其中4个刚好可以嵌入压板螺母孔径最小的圆环拿出4个放到旁边(备用品),其余的分成4组 剩下的压板螺母全部嵌到板子里,这些螺母是用来固定电路板模块的 看一下数量的分配 小圆环胶合的时候可以用我们的钢棒套一下来辅助定位,这样粘的准一点 把风扇支架插上去试一下,如果刚好能卡进去那就对了 再对一下,最后完成的是这样分开的两块板,注意上面那块板上有4个圆环,刚好铜柱可以通过去,这4个环之起到美化作用,没有结构意义 Step8:接线(这部分大多数贴都没讲清楚,加上一些非常规的接法,导致我走了不少弯路,我会尽量讲细一点) 以上接线图只看一下效果,没有什么实质性的意义,拍再多也讲不清楚,我下面会画一个原理图,不过首先让我们明确一下几个要点: 1. 我们买到的步进电机额定电压是4~6V,但是!!我们给easyDriver驱动板供电是接12V,你没看错,有人说这样接不会烧电机么?是的,如果电机不走的情况下直接12V会很烫并且容易烧毁,但是easyDriver有个enable针脚,可以控制只在运行的情况下供电,算是超频使用了,如果你非要接5V供电,结果就是装好后无法拖动机架,很容易卡住、失速;(不过切记测试板子的时候不要接12V,除非你已经接好enable针脚) 2. 风扇额定电压是12V,但是我们是接到5V的稳压模块上的,也就是降频使用,很奇怪吧,不过不要怀疑,就是这么接的,因为风扇全速会把纸吹跑,我们只要一点点风降温就够了; 3. 两个稳压模块的输入端都是接12V,降压到5V使用,这样做的原因是为了获得更大的输出电流,激光头和风扇马达在这个项目里也算是大功率设备; 4. 总结一下, 除了继电器的输入电压是5V,其他所有负载接的都是12V(风扇,激光接的是12V降压后的5V),12V电压如何获得?arduino外接变压器,Vin针脚输出是12V; 最后说明一下easyDriver的8微步,easyDrive通过MS1,MS2的高低电平来细分步进电机的微步,8微步也就是将原来的一步细分为8步,获得更精确的控制,比如我们用的电机一转20步,现在变成一转160步。幸运的是,easyDriver板子默认就是8微步,我们不需要再进行额外的设置,如果有兴趣的可以看一下easyDriver官网的说明,低的细分会获得更高的扭矩(电机力气更大,不过这个项目中我们已经通过接12V超频使用来获得更大扭矩了)。 Step9:设置软件 这台机器,我们使用Grbl v0.8来做控制(烧进Arduino)。 还需要一个配套的客户端软件,通过串口向Grbl发送G-code代码。 最后我们还需要用一套工具来画图,并且把图转为G-code代码。 整个的流程是这样: 矢量图——> 转为G-code——> 通过串口发送到Arduino——>Grbl解析代码并且控制机器切割 接下来我们一步步讲解: 1. 将Grbl烧录进Arduino: 我这里用的0.8c版本,截至写稿时最新的是0.9Beta,也OK(0.9主要优化了弧线的绘制),只不过参数稍有不同 要烧录Arduino,需要用到Arduino IDE, 各位应该都装了,没有的请去官网下载 烧录之前,确保激光头已经断开(我的建议是大家一直使用5mw的低功率激光头,等最后全部搞好没有问题了再换成大功率的) Grbl wiki 详细说明了如何烧录预编译好的头文件 树莓派的使用者可以参考Zapmaker的在树莓派上安装Grbl 之前提到过,官方预编译的头文件在我们这个项目不好用,需要改源码,附件中我提供了改好的头文件 2. 客户端工具有两个,我们实际使用Universal GcodeSender,不过GrblController有一个不错的参数面板,另外spindle on可以简单的控制激光开关,我们测试和设置的时候用这个(可惜这个软体有bug,Gcode的速度代码认不出,总之我们只用它来调试) GrblController连上aduino后,点Advanced——>Grbl Setting 我们可以看到Grbl的初始化参数如下: $0=755.906 (x, step/mm) $1=755.906 (y, step/mm) $2=755.906 (z, step/mm) $3=30 (step pulse, usec) $4=500.000 (default feed, mm/min) $5=500.000 (default seek, mm/min) $6=28 (step port invert mask, int:00011100) $7=25 (step idle delay, msec) $8=50.000 (acceleration, mm/sec^2) $9=0.050 (junction deviation, mm) $10=0.100 (arc, mm/segment) $11=25 (n-arc correction, int) $12=3 (n-decimals, int) $13=0 (report inches, bool) $14=1 (auto start, bool) $15=0 (invert step enable, bool) $16=0 (hard limits, bool) $17=0 (homing cycle, bool) $18=0 (homing dir invert mask, int:00000000) $19=25.000 (homing feed, mm/min) $20=250.000 (homing seek, mm/min) $21=100 (homing debounce, msec) $22=1.000 (homing pull-off, mm) 我们最关注的两个参数是 $0 和 $1 这两个参数决定X和Y轴的每mm步长,如果设置不正确,那我们烧出来的图片就和设定尺寸不一致 这两个参数如何计算? 步数 = 每转步数 X 微步数 / 蜗杆螺距 比如我们的电机是20步每转,微步数是8,螺距是3mm,那么: 20 X 8 / 3 = 53.33333333 就是我们得到的结果; 其他的设置主要是空行程时候的速度,各项功能的开关及掩码等等不一一赘述,有兴趣深入的同学可以去Grbl wiki 进一步了解,总之将参数设置如下: $0=53.333 (x, step/mm) $1=53.333 (y, step/mm) $2=53.330 (z, step/mm) $3=10 (step pulse, usec) $4=2000.000 (default feed, mm/min) $5=500.000 (default seek, mm/min) $6=28 (step port invert mask, int:00011100) $7=25 (step idle delay, msec) $8=10.000 (acceleration, mm/sec^2) $9=0.050 (junction deviation, mm) $10=0.100 (arc, mm/segment) $11=25 (n-arc correction, int) $12=3 (n-decimals, int) $13=0 (report inches, bool) $14=1 (auto start, bool) $15=0 (invert step enable, bool) $16=1 (hard limits, bool) $17=1 (homing cycle, bool) $18=0 (homing dir invert mask, int:00000000) $19=25.000 (homing feed, mm/min) $20=200.000 (homing seek, mm/min) $21=100 (homing debounce, msec) $22=2.000 (homing pull-off, mm) 3.要画图并生成G-code,最好的工具是inkspace+laserengraver插件(件附件),画图你可以用任何矢量软件,只要能存为SVG就好了,然后在inkspace里面输出,附件里我给了一个转好的样例文件供下载; 4.修改Grbl源代码 2.解压 3.用你喜欢的文本编辑器打开config.h文件 4. 找到以下代码: #define HOMING_SEARCH_CYCLE_0 (1<<Z_AXIS) #define HOMING_SEARCH_CYCLE_1 ((1<<X_AXIS)|(1<<Y_AXIS)) 改为: // #define HOMING_SEARCH_CYCLE_0 (1<<Z_AXIS) #define HOMING_SEARCH_CYCLE_0 ((1<<X_AXIS)|(1<<Y_AXIS)) 5. 找到一下代码: #define HOMING_LOCATE_CYCLE ((1<<X_AXIS)|(1<<Y_AXIS)|(1<<Z_AXIS)) 改为: #define HOMING_LOCATE_CYCLE ((1<<X_AXIS)|(1<<Y_AXIS)) 6. 保存 第二处需要修改的部分取决于你用的继电器,我买到的继电器是低电平触发,这和Grbl配置相反, 有的人想,只要接线改接到常闭就好了呗?答案是不行,如果这样接的话,我们设想一下,arduino通电前,因为整个系统没有电,激光不亮,通电瞬间,因为磁吸是有延时的,激光先亮,然后继电器吸合了,常闭端变成开路,激光灭。 也就是说插上usb口的瞬间,激光会亮一下,这一下足以把你的纸烧个洞,完美控当然不能忍; 废话不多说还是改代码: 1. 文本编辑器打开 spindle_control.c文件 2. 把所有出现 1<<SPINDLE_ENABLE_BIT 和 ~(1<<SPINDLE_ENABLE_BIT) 的地方相互交换一下; 3.保存 将改好的源代码重新编译 Step10. 最后补充一下激光头的安装 要测一下激光二极管正负极,这个用2节5号电池实际接一下就可以了,如果你和我使用的是同一型号,那么正负极如图所示 二极管可能不太好压进管内,正确的压法是这样,所以你看到虎台钳的必要性了 接线和焊接,注意你买的模组长度要能够容纳下驱动板 如果所有步骤都正确,到这里,所有的工作就都完成了,享受烧纸、刻木头的乐趣吧!! 有问题在这里回答:(占位) |
9.37 KB, 阅读权限: 10, 下载次数: 6450
Gcode范例文件
39.9 KB, 阅读权限: 10, 下载次数: 4612
laserengraver插件
26.06 KB, 阅读权限: 10, 下载次数: 4852
修改好的Grbl头文件
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed