其他小组作业请前往小组作业页面。
这次作业完全是我一个人做的,因为今年我是 Algarve FabFarm 唯一的学生。
设计文件和 G-code 文件 @ GitLab Fabcloud 上的项目仓库

我给它取名 Frankenlaser,因为它的很多零件来自我以前设计并制作、后来退役的机器。它又是一台机器,和我的数控机床(CNC)一样,是用我手边闲置的零件和商用零件做成的。
我用 SolidWorks 设计了这台机器,并用我自己设计的大型 CNC 切割碳纤维和定向刨花板(OSB)零件。

机械设计完成后,我开始准备各种零碎零件。

我用的是 30x30 铝型材;它们买来时是 3 米长的条料,需要按尺寸切割。

我能找到的最精确的型材切割方法是用木工锯。我知道它是用来锯木头的,但我也知道只要慢慢切,就能锯铝。然后我把锯片相对于台锯台面调到 90 度。

切得很完美。

接着我开始处理导轨;它们非常脏,所以我先做清洁。

像变魔术一样,它们干净了。我先从滑块上取下导轨,放到一边。我用 WD40、Scotch-Brite 海绵处理锈迹,用丙酮清除油污和灰尘。最后给它们上了机油。

现在轮到滑块……同样很脏。我拆下塑料盖,把轴承滚珠倒进一个容器里。

滑块拆开后,我用和之前相同的产品做了同样的清洁步骤。

我用纸巾把所有东西擦干。

又一次像变魔术一样,它们像新的一样。

为了大致看看最终成品,我把零件叠放在一起。不错!

另一个视角。

这是 ArtCam 里的视图。

接着我开始切碳纤维。它在我的 CNC 上很容易切,但我当时赶时间,不想用双面胶,也不想之后清理胶水。这个决定会有后果;看接下来的视频就知道了。

这里我钻孔。
在这个视频里我切了很多轮廓。因为我没有用双面胶,也没有留连接筋,零件会从板材上跳起来,一旦被铣刀碰到就可能报废。所以机器把零件甩出来时,我就把它们拿走。
所有零件都切好了,可以装配了。
我用数字角度尺确保零件是直角。

这是另一侧的支架。

这是装好的激光头支架。

现在装好了。

激光头也装上了。等激光准备好后,激光头会固定聚焦透镜。

移动 X 轴。
再移动一次。
整个装配完成了。

现在我用手测试所有轴,第一部分就完成了。
机器在说话了,它用还不成熟的声音说出了“Hello World”。
我是怎么走到这一步的?看看这些步骤:
我用 SolidWorks 设计了框架,用的是我在计算机辅助设计和计算机控制加工这两周里已经讲过的技术。
设计文件在这里。

接下来,我用软件 Mach3 开始加工。所用材料是 19 mm 厚的 OSB。铣刀是 3.175 mm 的,选刀时我把刀具偏移了 -0.1 mm,以补偿瑕疵并让装配更容易,正如小组作业中计算机控制加工里讲的那样。
我把铣削分成两个任务:一个打孔任务和一个轮廓任务。进给速度最大为 2500 mm/min。G-code 在这里和这里。
所有连接件都有对应的孔,这些孔也用作压紧点。这样我就能确定不会发生碰撞,因为我只会在打孔任务之后、轮廓任务之前把它们装上去。
铣削完成后,我和儿子开始打磨侧面和表面,以获得更好的配合和表面质量。
这里全部打磨好了。

装配很顺利,我们只用了橡胶锤和螺丝刀。

框架非常结实!我们对结果非常满意。

轴是用“T”型槽螺母固定的;我不确定这个名字对不对。

现在一团乱,因为我用了更多工具,比如卡尺、数字水平仪和直角尺,好让机器是方的。

激光管只是临时装在这里,看看各部件是否配合良好。

这是机器的全貌,快完成了。

这次作业我用的板子是 Arduino Uno。下面是 UNO 与 GRBL 的接线图。

我测试了 3 种烧录 GRBL 固件的方法。第一种方法用了非常实用的软件 AVRDUDESS;它是 AVRDUDE 的图形界面版本。
用法很简单。把编程器或 USB 直接插到 Arduino 上。然后选择编程器,我这里是 USBasp,或者选 Arduino 作为 USB。接着选择从 GRBL 仓库下载的 hex 文件,按右边的按钮检测 MCU,然后按 Go 开始烧录固件。

我试的第二种方法是用软件 LaserGRBL:点击 Tools、Flash GRBL Firmware,然后……

会弹出一个对话框,可以选择目标板(我这里是 Arduino Uno)、固件版本、端口和波特率。然后……

屏幕会显示成功完成。

我试的第三种方法是使用 Arduino IDE 编译并烧录固件。这个方法我按照 Gnea/GRBL 的维基页面的说明操作。首先我改了两行配置,想为 Y 轴启用双电机。到目前为止没有成功,因为没时间,我最后没有用它。不管怎样,我还是把方法记录在这里,因为以后有时间我会再试。
另一个关于让双轴自动找正龙门架正常工作的参考在 Protoneer Product Forum,不过还是那句话,以后我会再研究。
先下载 GRBL 固件,然后把它作为库添加到 Arduino IDE。

打开 Arduino 示例文件 GrblUpload,然后按照嵌入式编程周里描述的方法编译并上传,把 MCU 改成 Arduino UNO 板。

这里我测试电机、它的力量和温度(用手摸,也用温度计)。我这样做是为了正确设置 DIP 开关。
测试后我决定用 2 A。电机额定电流是 1.5 A,但在所有测试中电机从未超过 1 A,温度也一直低于 45 度。

设置通过选择 DIP 开关完成:4 - ON(向下),5 - OFF(向上),6 - OFF(向上)。

这里我第一次用电脑试着移动电机。X 轴动得很好,但 Y 轴不动。我以为是接线问题,所以又把所有接线检查了一遍。最后我禁用了 Y 轴的双电机功能(文档很少),把 Y 轴的两个电机并联起来。
这里我测量了实际移动量与指令移动量的对比。我记下来,然后用三数法则,基本上就是 a/b=c/d。
其中,在我的测试里,a=118.8(实际移动量),b=25(期望移动量),c=250(当前每毫米步数),d=X。
算完后我得到结果 52.609,把它填入 GRBL 的 $100 和 $101 设置。

下面是我目前给机器用的设置的截图。这个维基页面列出了 Gnea/GRBL 的所有配置项。

因为这次作业要求我展示对自己做的机器的控制,所以我在这里做一个“Hello World”。我快没时间了。我很想以后回到这份文档,把激光切割机做完,但现在我得专注于其他作业。所以目前就是用胶带绑着一支 Sharpie。
机器还没完成。它会在本周期结束前变成一台激光切割机。我会在这里更新它的进展。目前我还有以下问题要解决:
戴上安全眼镜,确认你知道灭火器在哪里以及怎么使用,绝不要让激光无人看管!
激光切割机是一台总想把自己点着的机器。如果一切正常,它不会着火,但一旦出现故障、激光停在同一个位置,或者辅助吹气(air assist)停止工作,火灾风险就很高。因此,绝不要让激光无人看管。


激光束能在纳秒内让你失明或烧伤皮肤。因此,绝不要在打开盖子时操作,并且始终佩戴适合你所使用激光类型的安全眼镜。

CO2 激光切割机通常波长为 10600 nm;在我们实验室,这些就是正确的眼镜。

二极管激光切割机通常在 200-550 nm 波长范围内;在我们实验室,这些就是正确的眼镜。

机器周已经完成了我机器的驱动和自动化,达到了评估页面里本周的要求,但这不会阻止我把机器变成激光切割机!我只是没法同时做到这一点,又完成其他到期作业。
不过,这不会阻止我在任何有空的时候改进机器。

我在这个 GRBL issue 页面上找到了这些信息:
至于激光管本身,我找到了一张漂亮的图,链接在这里,我把它复制在下面。

我也画了自己的图。

这里展示我把阳极线焊到鳄鱼夹连接器上。激光管的端子不应该焊接,因为温差可能会让 CO2 激光管开裂。

这张照片显示了接到端子上的阳极线,以及冷却液出口处的水管。

这里我把水保护传感器开关装到激光电源上。这会防止激光在没有冷却液时出光。

为了让激光管保持低温,我在一个装满汽车防冻液的塑料容器里装了一个小水泵。以前我用纯水,但细菌滋生一直让我很烦。以后我希望把它做成带汽车散热器的封闭系统。
在这个视频里可以看到激光管正在注入防冻液,抱歉画面会倒过来……至少能看到冷却液在流动。
这里我测试水保护。当我拔掉水泵的电源插头时,激光电源上的 LED 会熄灭。
这个测试里我不用反射镜,直接把激光束打在木头上。它工作了,真是力量的展示!
反射镜对准是最棘手的部分。
我以前就有激光对准的经验,但这里有几个不错的教程,讲怎么做:
我自己的做法记录在下面。
第一个问题是 Y 轴停止移动,原因我到现在也没弄明白。我换了一个步进电机驱动器测试,也重新接了所有线,以便调试。
最后我认定不是接线问题,于是像前面说的那样重新编译 GRBL,在文件 cpu_map.h 里把 Y 方向位(引脚)从 6 改成 7,然后就好了。我不确定真正的原因是什么。

下一个问题是 X 轴的比例完全不对。我做了一个简单的 10 mm 正方形去切,结果却切出一个长矩形。
我解决这个问题的方法很简单:把每毫米步数重新写入 GRBL 控制器的 EEPROM,它就开始正常工作了,正如这些照片所示。
正方形内侧测量结果是 10.2 mm。

正方形外侧测量结果是 9.9 mm。

根据内外测量结果计算,切缝宽度是 0.15 mm,对第一次测试来说还不错,但通过更好的对焦还能改进。不过这个我留到计算机控制切割周再说。