Arduino数控泡沫切割机
在本教程中,我们将学习如何构建 Arduino CNC 泡沫切割机。这是一台典型的 DIY CNC 机器,因为它由简单而廉价的材料、一些 3D 打印部件制成,并且有一个 Arduino 作为控制器。
您可以观看以下视频或阅读下面的书面教程。
这台机器的主要工具不是钻头或激光,而是热线,或一种特殊类型的电阻丝,当电流流过它时会变得非常热。热线通过时会熔化或蒸发泡沫,因此我们可以精确轻松地获得所需的任何形状。
我说得很轻松,因为制造一台 CNC 机床实际上并不难。如果您是初学者并正在考虑构建您的第一台 DIY 数控机床,请继续关注,因为我将解释一切是如何工作的。我将向您展示构建它的整个过程,从设计机器开始,连接电子元件,对 Arduino 进行编程,并解释如何使用免费的开源程序准备形状、制作 G 代码和控制机器。那么,让我们深入研究一下吧。
首先,这是这台机器的 3D 模型。您可以下载下面的3D模型。
您可以找到并下载此 3D 模型,也可以在 Thangs 上的浏览器中进行探索。
在 Thangs 下载装配 3D 模型。
用于 3D 打印的 STL 文件:
底座结构由 20x20mm T 型槽铝型材制成。我选择这些型材是因为它们易于使用,我们在组装时无需钻孔或其他东西,而且它们可重复使用,我们可以轻松拆卸并将它们用于其他项目。每个轴的运动是通过使用在 10mm 光滑杆上滑动的直线轴承来实现的。我为每个轴使用了两个杆。
滑块可能看起来有点奇怪,但它们的设计方式可以很容易地 3D 打印为单个部件,同时具有多种功能。因此,例如,X 滑块容纳两个直线轴承,它固定 Y 轴杆,它固定 Y 轴皮带的滑轮,以及用于连接 X 轴皮带的把手。
为了驱动滑块,我们使用 NEMA 17 步进电机。使用联轴器、一根简单的螺纹杆、两个滑轮和两条皮带,我们可以同时均匀地驱动每个导轨上的两个滑块。
在这里我们还可以注意到,我们有第三个步进电机,它使机器能够制作 2.5D 形状,我们将在稍后的视频中解释它是如何工作的。
总体而言,在结构和刚性方面,设计可能不是那么好,但我的观点是用尽可能少的零件制作功能机器,并且仍然能够完成工作。
对于零件的 3D 打印,我使用了我的 Creality CR-10 3D 打印机,这是一款价格合理的非常好的 3D 打印机。
需要注意的是部分3D打印的部件需要进行一些后期处理,或者使用前需要去除支撑材料。
在某些情况下,我还不得不使用锉刀去除多余的材料,我猜是因为切片软件中的支持设置不好。
无论如何,现在我已经准备好所有材料,可以开始组装机器了。
这是这台 CNC 机床中使用的所有主要部件的列表。电子元件列表可以在文章的电路图部分找到。
我的 T 型槽铝型材长 60 厘米,因此根据 3D 模型,我使用金属手锯将它们切割成合适的尺寸。然后使用角支架,我组装了基础框架。接下来,我正在安装 X 轴的轴夹。你看,使用 T 型槽型材非常简单,我们只需要一些 M5 螺栓和 T 型槽螺母就可以将各种东西连接到它们上。
接下来,我将轴杆穿过夹子。在插入一半的同时,我们还需要添加 X 轴滑块。我们只需将两个轴承放入其中,然后将它们插入轴上。现在我们可以将轴滑到另一侧,并使用 M4 螺栓和螺母将轴拧紧到位。我也对对方重复了这个过程。
接下来,我们需要安装 Y 轴。为此,首先我们需要将杆插入 X 轴滑块中,将它们与零件底部齐平放置,并使用 M4 螺母和螺栓将它们固定。然后我们可以插入Y轴滑块。这些滑块只使用一个直线轴承。
在 Y 轴杆的顶部,我们需要连接安装支架,它将两个 Y 轴杆与顶部的 T 形槽型材连接起来。同样,我们使用相同的方法将它们固定到杆上。为了将 T 型槽型材连接到安装支架,我首先在其上添加了 3 个 M5 螺栓和 T 型槽螺母。然后我只是将型材滑入,并拧紧螺栓。
所以,有了这个,我们已经构建了主体结构,我们可以在 X 和 Y 轴上自由移动。
接下来,我将腿连接到基础框架上。同样,使用 T 型槽配置文件非常简单。固定腿后,我将插入 X 轴的第一个步进电机。在这种情况下,我使用 20mm 间隔螺母来拉开电机轴的距离,以便稍后在腿附近放置一个皮带轮。
好的,接下来我有一个简单的 6 毫米螺纹杆,它将同时驱动两条皮带。所以首先我将它切割成合适的尺寸,在步进器的另一条腿上放置一个内径为 6 毫米的轴承,然后将螺杆穿过它。然后我插入了一个用于将杆固定到轴承上的螺母和两个用于皮带的带齿滑轮。
为了将螺纹杆连接到步进电机,我 3D 打印了一个轴耦合器,在步进器侧有一个 5 mm 的孔,在杆侧有一个 6 mm 的孔。轴耦合器有用于插入 M3 螺母的插槽,然后使用 M3 螺栓或平头螺钉,我们可以轻松地将其固定到电机轴和螺杆上。接下来,我们需要将滑轮与滑块手柄对齐并用平头螺钉固定。
在机器的另一侧,我们可以插入两个惰轮。为此,我使用了一些 M5 螺栓和螺母。
好的,现在我们准备为 X 轴安装 GT2 皮带。首先,我在拉链的帮助下将皮带插入并固定到滑块上。然后我将皮带绕过齿轮,另一侧绕过惰轮,将其切割成合适的尺寸,并再次使用扎带将其固定在滑块的另一侧。
我也对另一方重复了这个过程。在固定另一侧时,我们必须确保两个滑块在 X 轴上的相同位置。为此,我们可以简单地将它们移动到导轨的末端,这样我们就可以收紧皮带并用扎带固定它。这样X轴滑动机构就完成了。
相关:带自动换刀器的 DIY 笔式绘图仪 |数控拉丝机
接下来,我们将使用相同的方法组装 Y 轴机构。为了将皮带再次固定到滑块上,我们使用拉链。这里的滑块只有一个把手,为了固定腰带,首先我用拉链系住腰带的一端,然后我把腰带拉得足够紧,用另一个拉链系住腰带的两端。现在我可以取下之前的拉链并剪掉多余的腰带。如前所述,在固定另一侧的皮带时,我们必须确保两个滑块在 Y 轴上的位置相同。这样Y轴机构也完成了。
接下来,我将在 X 轴上再附加一个 T 型槽轮廓。该配置文件将用于将第三个步进电机连接到其上以及将泡沫件放置在其上。有了第 3 个步进电机,我们可以用这台机器制作 2.5D 或实际上是 3D 的形状,例如棋子。
好的,接下来我们需要安装电阻丝。该电线需要能够承受高温,同时在其长度上保持均匀的温度。这通常是镍铬合金线或不锈钢钓鱼线,它们实际上既便宜又容易获得。为了正常工作,需要在两个塔或滑块之间拉紧电线,这就是我的做法。我在两个滑块上安装了 M5 螺栓,并在上面添加了小拉伸弹簧。
然后我简单地将电线连接到弹簧上。我在弹簧允许的范围内拉紧了电线。电线需要像这样用弹簧拉紧,因为当它变热时,它也会延长它的长度,因此弹簧将能够补偿这一点。
好的,接下来我们可以将电阻丝与电线连接起来。我们将使用直流电源,因此极性无关紧要,重要的是电流流过电线以使其变热。在这里确保您的电线足够滴答以支持大约 3 到 5 安培的电流消耗。就我而言,我使用的是 22 号线,但我肯定会建议使用 20 或 18 号线。
最初我将电线连接在两个螺母之间,因此电流可以通过线圈到达电阻丝。这实际上并没有很好地工作,我会在一分钟内告诉你为什么。我将电线穿过滑块的把手,以保持整洁并远离热线。
接下来,我们需要安装 CNC 机床限位器或限位开关。这些微型限位开关有 3 个连接,接地、常开和常闭连接。最初我将它们连接到常开连接,但在 con
进行了一些测试,我切换到常闭连接,因为这样机器工作更稳定。
问题是数控机床工作时产生的电噪声,会像按下开关一样误触发开关,导致机床停止工作。
接下来,我们可以连接步进电机的电缆,然后看看如何连接所有电子元件。这是所有需要如何连接的电路图。
当然,这台数控机床的大脑是一块 Arduino 板。除此之外,我们还需要一个 Arduino CNC Shield、三个 A4988 步进驱动器和一个用于控制热线温度的 DC 到 DC 转换器。
您可以通过以下链接获取本项目所需的组件:
我 3D 打印了一个电子元件支架,将其固定在 T 形槽型材的一侧。我首先使用 M3 螺栓将 Arduino 板固定到支架上,然后将 Arduino CNC 防护罩插入其顶部。
接下来,我们需要选择步进驱动器使用一些跳线驱动电机的分辨率。在我的例子中,我选择了 16 步分辨率,为每个驱动器添加了三个跳线,因此步进器的运动会更顺畅。
在放置驱动器时确保它们的方向正确,小电位器可以作为一个指示器,指示应该朝向屏蔽的底部。
我继续将直流转换器固定到位。然后,我将三个步进电机连接到 Arduino CNC 扩展板,并将两个限位开关连接到 X+ 和 Y+ 末端停止销。为机器供电,我将使用 12V 6A 直流电源。 Arduino CNC shield 实际上可以在 12 到 36 伏之间工作,而且我使用的特定直流转换器也可以在相同的电压下工作。在直流转换器的输入上,我添加了一个开关,这样我就可以单独打开和关闭热线。在直流转换器的输出上,我只需将电阻线两端的两条线连接起来。最后,我们可以通过USB端口连接Arduino并为其供电,并通过DC电源插头为Arduino CNC shield和步进电机供电。
好的,现在是时候测试机器是否正常工作了,我将从热线开始。您可以在这里看到直流转换器输入端的电压为 0 伏,打开开关后,输入端的电压为 12V。然后再次在直流转换器的输出上,我们有零伏,但是当我们开始转动电位器时,我们可以将输出电压从 0 调节到 12V,这样电流就会流过热线,它的温度不合时宜。
测试应该设置直流转换器输出的电压的最佳方法是尝试切开一些泡沫片。热线应该能够在没有太大阻力和弯曲的情况下穿过泡沫。
但是,经过初步测试,您可以看到我的热线发生了什么。由于热量和应该补偿的弹簧没有发挥作用,它延长了。
实际上,弹簧由于过热而失去了功能,因为在这种配置下,电流也流过它们。
所以,我用新的弹簧替换了旧的弹簧,现在我通过一些鳄鱼夹将电线直接连接到电阻丝来绕过弹簧。
好的,现在是时候让这台机器成为真正的 CNC 机器了。
为此,首先我们需要将固件上传到控制机器运动的 Arduino。 DIY CNC 机床最受欢迎的选择是 GRBL 固件。
它是开源的,我们可以从 GitHub.com 下载它。将其下载为 zip 文件后,我们可以将其解压缩,复制“grbl”文件夹并将其粘贴到 Arduino 库目录中。然后我们可以打开 Arduino IDE 并从 File> Examples> grbl 选择 grblUpload 示例。现在我们需要选择我们正在使用的 Arduino 板,Arduino UNO,并选择我们的 Arduino 连接到的 COM 端口,最后将此草图上传到 Arduino。上传后,Arduino 就知道如何读取 G 代码以及如何根据这些代码控制机器了。
接下来,我们需要某种接口或控制器来进行通信并告诉 Arduino 做什么。同样,我为此选择了一个开源程序,那就是 Universal G-Code Sender。
我下载了2.0平台版本。要运行该程序,我们需要解压缩 zip 文件,进入“bin”文件夹并打开任何可执行的 ugsplatfrom 文件。这实际上是一个 JAVA 程序,所以为了能够运行这个程序首先我们需要安装 JAVA Runtime Environment。我们也可以从其官网免费下载。
因此,一旦我们首先打开 Universal G-Code Sender 程序,我们需要运行设置向导来配置机器。
在这里,我们只需要选择正确的端口并将程序连接到 Arduino。建立连接后,我们可以通过单击按钮检查电机的移动方向。如果需要,我们可以反转方向。我选择了正向运动,从限位开关所在的起始位置移动到另一侧。
接下来,我们需要校准电机的步数,以实现正确准确的运动。因为我们选择了 16
th
驱动器的步进分辨率,电机有 200 个物理步,这意味着电机需要 3200 步才能完成 360 度全方位运动。现在取决于传动类型,或者在这种情况下是皮带轮的尺寸,我们需要计算电机移动 1 毫米所需的步数。此处的默认值设置为每毫米 250 步。因此,一旦我们单击其中一个移动按钮,电机就会移动 250 步。
现在实际上,我们使用尺子测量机器的实际运动,然后在程序中输入该数字。据此,程序将计算并告诉我们应该更改和更新 steps/mm 参数的值。在我的情况下,这是 83 步/毫米。至于Z轴,我设置为400步/mm,也就是说Z轴1mm的值会旋转45度。
接下来,我们需要检查限位开关是否正常工作。根据我们是否将它们连接为 NO 或 NC,我们也可以在此处反转它们。就像我之前说的,NC 连接对我来说效果更好。无论如何,这里我们需要注意,我们需要关闭 Z 轴限位开关,因为我们的机器中没有。如果我们不关闭它,我们将无法归位机器。为此,我们需要进入 Arduino 库中的 grbl 文件夹,并编辑 config.h 文件。
在这里,我们需要找到归位循环线并注释 3 轴 CNC 机床的默认设置并取消注释 2 轴机床的设置。现在我们需要保存文件并将 grblUpload 示例重新上传到 Arduino。请注意,您可能应该再次重新启动程序以使一切正常运行。
好的,接下来我们可以尝试使用“尝试归位”按钮来归位机器。单击时,机器应开始向 X 限位开关移动,一旦按下,它将开始移动 Y 轴。如果需要,我们可以更改限位开关方向。在设置向导结束时,我们可以设置软限制,它实际上限制了机器在每个方向上可以行驶的最大距离。在我的例子中是 45x45cm。
好的,现在程序已经准备好工作了。在每次使用之前,您应该始终将机器归位,然后您可以做任何您想做的事情。首先,我建议玩一下并测试 Jog 控制器或手动移动机器。此外,此时您应该尝试切割一些泡沫块,以找出最适合您的进给速率或移动速度。
因此,您应该同时考虑热丝温度和进给速率,以便找出最干净、最精确的泡沫片切割方式。
最后,这个视频剩下的就是看看如何准备图纸,以便 CNC 机器可以制作出它们的形状。为此,我们需要一个矢量图形软件,我再次选择了一个开源软件,那就是 Inkscape。您可以从其官网免费下载。
我将向您展示如何使用 Inkscape 为 Arduino CNC 机器准备 G 代码的两个示例。所以首先我们应该将页面大小设置为我们工作区域的大小,即 45x45cm。对于第一个示例,我下载了 Arduino 徽标的图像并导入到程序中。使用 Trace Bitmap 功能,我们需要将图像转换为矢量格式。
现在为了能够用热线切割这个形状,我们需要让这个形状成为一条连续的路径。这是因为热线始终存在于工作区域中,在从一个字母或形状移动到另一个字母或形状时,它不能像一点点升高或在激光的情况下关闭。因此,我使用简单的正方形将所有单独的部分连接在一起。我们通过选择碎片然后使用联合功能来做到这一点。另一方面,内部的闭环需要打开,我们使用Difference函数。
因此,一旦我们准备好绘图,我们就可以使用 Gcodetools 扩展来生成 G 代码。首先,我们需要生成方向点。
然后我们可以将模型缩放到所需的大小。接下来,我们需要转到工具库,并以此定义我们用于 Arduino CNC 机器的工具。我们可以选择圆柱体,因为线材显然具有圆柱形状。在这里我们可以更改刀具直径等参数,我将其设置为 1mm,以及进给速度。其他参数此时并不重要。最后,现在我们可以使用 Path to Gcode 函数为这个形状生成 G 代码了。
G 代码只是 GRBL 或 Arduino 可以理解并根据它们驱动步进电机的一组指令。所以现在,我们可以在Universal G-code sender程序中打开Gcode,通过Visualizer窗口我们可以看到机器应该经过的路径。
但是,我们可以注意到这里的黄线代表空旅行,或者在使用钻头或激光的情况下通过空气旅行。正如我之前提到的,在这种情况下,热线不能在这些行程中移动,因为线会切穿材料并破坏形状。在这里,我们实际上可以注意到整个形状没有单一路径,因为我们忘记在徽标内打开封闭区域。因此,我们可以简单地回到绘图,将这些封闭区域打开,然后再次生成 G 代码。
还要提一提的是,通过双击形状选择自己的起点是个好主意,选择一个节点并选择在选定节点处断开路径。现在如果我们打开新的 G 代码,我们可以看到路径从后面的 A 开始,穿过整个形状,最后回到 A 字母。
为了将泡沫件固定到 CNC 机器上,我制作了这些简单的支架,这些支架有 M3 螺栓,可以穿透泡沫并将其固定到位。
好的,现在我将向您展示如何制作 3D 形状的另一个示例。我们将制作一个方柱形状,需要在四个边上相互切割成 90 度。
我使用前面显示的 Trace Bitmap 方法得到了柱子形状。现在我们可以画一个和柱子一样大的简单矩形,我们将从矩形中减去柱子。我们将删除其中一侧,因为我们只需要一个柱子的轮廓路径。所以,这就是 CNC 机器应该走的实际路径,并且每次经过后,我们需要旋转 3
rd
步进90度。
为了在创建方向点时做到这一点,我们需要将 Z 深度设置为 -8mm。然后在工具参数中,我们需要将深度步长设置为 2mm。现在生成 G 代码后,我们可以在 G 代码发送器中打开它,我们可以看到机器将以 2 毫米的深度差执行 4 遍相同路径。在 CNC 路由器的情况下,这意味着每次钻头将深入 2 毫米以切割材料,但如前所述,我们将 Z 轴设置为每毫米旋转 45 度或 90 度旋转 2 毫米 Z 步进电机行程.
无论如何,这里我们还需要稍微修改一下 G 代码。默认情况下,每次通过后生成的 G 代码将 Z 轴移动到 1mm 的值,这在 CNC 路由器的情况下意味着它在需要空行程时升高位。
实际上,我们可以不修改 G 代码,但它会造成 Z 轴不必要的移动,或者无缘无故地旋转泡沫。因此,在代码的每次迭代之后,我们只需要修改 Z 轴值以保持在同一位置,而无需移回 1mm 的值。
为了安装泡沫片以制作 3D 形状,我们使用这个平台,其中包含一些 M3 螺栓,这些螺栓堆叠在泡沫片中并在成型时固定住它。
在运行 G 代码之前,我们需要手动将热线放在泡沫片附近。从中心到热线的距离应该与我们想要的形状一样多。或者如果我们想要图纸中的精确尺寸,我们需要测量从原点到图纸形状中心的距离。
然后我们需要点击控制器中的 Reset Zero 按钮,以告诉程序它应该从这里开始,而不是从起始位置开始。就是这样,现在我们只需点击播放按钮,Arduino CNC 机器就会制作 3D 形状。
您可以在这里下载所有示例的 G 代码文件和 Inkscape 文件:
这就是本教程的所有内容。我希望解释足够清楚,并且您将能够制作自己的 CNC 机床。随时在下面的评论部分提出任何问题,并查看我的 Arduino 项目收藏。概览
Arduino CNC 泡沫切割机 3D 模型
组装CNC
Arduino CNC 泡沫切割机电路图
Arduino CNC 机床软件
为 CNC 机床生成 G 代码
制造工艺