3D 打印机软件/固件如何工作

3D打印 马林鱼 DIY-3d-打印机 固件 软件
2021-05-09 01:43:10

我一直在做一个基本上是 2D 打印机(点阵类型)的打印机项目。我们使用螺线管作为执行器在纸上留下印记。我们现在正在设计定制软件。但是我们遇到的一个问题是我们不知道如何设计软件,因为我们是这个领域的一群初学者。

我们正在研究的一个想法是基于位置确认技术。在这种技术中,计算机向控制器发送 G 代码。到达代码中定义的位置后,控制器发送确认,然后计算机发送下一个信号。这是我们目前正在研究的模型。

  • 任何人都可以提出任何其他想法来完成这项工作吗?
  • 我们的方法对吗?
  • 3D 打印机是否使用相同的技术工作?
4个回答

您似乎在询问对计算机提供的 G 代码流进行速率限制,但如果不是这种情况,您的问题中的更多上下文会有所帮助。

打印机往往以两种方式工作。

  1. 从本地存储读取 G 代码作为文本文件。在这里,解析器/控制引擎处于完全控制状态。

  2. 使用“ack”握手通过串行端口流式传输 G 代码。

3D 打印中使用的 G 代码的参考是RepRap Wiki在这里,您将找到诸如ok resend和 之类的响应fatal,它们指示何时处理上一个命令并可以发送其他内容,如果上一个消息被识别为损坏,或者是否无法恢复。

这种握手方式的基本规则是,在每次主机到从机事务之后,主机必须在发送另一个事务之前等待某个响应。如果您可以将系统设计为避免或不关心从机到主机方向的溢出,则从机可以发送 ACK 响应或其他异步事务。

在设计这样的握手时,您可以考虑所有可能出现问题的方式(假设界面不完美)。您如何处理丢失的请求并且永远没有 ACK?当超时时,您是否可以发出“良性”请求以查看打印机是否仍处于连接状态等。

3D 打印机固件使用源自 CNC 的 gcode,无需确认。它们向步进电机发送运动命令,例如G1 X10 Y10将打印头沿 X 和 Y 方向移动 10 毫米。

您可以在 3D 打印板上使用现成的 3D 打印机固件,如 Marlin,并使用 X 轴或挤出机输出耦合到您的螺线管,发送G1 Z0.1G1 E0.1,这将在短时间内启动它。您甚至可以在不同的螺线管上使用 E 和 Z。

您对正确接收指令感兴趣,还是对硬件如何执行指令感兴趣?这个答案不涉及控制器板和从另一个软件/硬件平台发送指令的软件之间的软件通信(见这个答案),这个答案解决定位/移动。

当前的大多数 3D 打印机不跟踪打印头的位置。软件指示头部去某个地方,但它从不检查它是否真的到达了那个确切的位置。未检测到步进机缺少步骤或跳过皮带上的槽口等问题,打印机将继续认为它已到达该位置。

跳过皮带是一个机械问题,不应该发生(除非错过步进器步骤,否则也无法检测到),但跳过步骤是可以被某些类型的步进驱动器(trinamic)检测到的。步进器不使用反馈回路来检查最终位置。与步进器相反,伺服器使用反馈回路,因此能够按照指示到达位置,但这会增加成本,伺服器更昂贵,因此在大多数“更便宜”的 3D 打印机中找不到。

由 3D 机器的设计者来选择定位系统的电机,如果负载不高,您可以选择没有反馈回路的步进电机,或者使用更高负载的伺服电机(基本上是带有一些定位电子设备的步进电机)反馈)。如果是步进器,您希望它到达您告诉它要去的目的地,对于伺服器,您知道它到达了那个确切位置。

回到你的问题的话题上,没有关于到达位置的反馈(你称之为确认),你只需按顺序或在缓冲区中将 G 代码发送到打印机电子设备,该打印机电子设备一次执行语句(这是由固件完成的,这是机器对收到的代码的回复的答案)。您对硬件的选择实际上决定了是否按照指示执行。请注意,大多数机器负载不高(3D 打印头不是很重,通常在 Z 前进时不会在其路径上碰到任何障碍物)证明无需反馈即可使用步进器。CNC 机器,当然是较大的机器,用于定位高负载切削刀具需要这样一个反馈回路,因为定位需要非常精确。您需要考虑打孔机中的作用力,但从我的角度来看,您的机器似乎没有高负载。在这种情况下,您不需要更昂贵的定位系统,也不需要在自定义软件中处理返回/反馈信号。

CNC系统,有意简化,分为几个步骤:

  1. 获取 g 代码:这取决于平台,无论是来自 USB 闪存、网络的文件还是来自运营商的直接输入。G 代码操作需要缓冲的数量足以在程序中允许一些“前瞻”。
  2. g 代码的解析:任何形式语言的解析都基于“形式语法”理论https://en.wikipedia.org/wiki/Formal_grammar幸运的是,g 代码是乔姆斯基层次结构中最简单的语法之一。语言解析本身就是一个完整的主题,它遵循词法、句法和语义分析。
  3. 驾驶:它存在几种不同的策略:

    • 开环与闭环:在闭环 CNC 中,传感器提供来自运动的反馈,允许驾驶员修复偏差(例如,没有步数)。这些系统更昂贵,通常无法在廉价的 3D 打印机中使用。在开环 CNC 中,驱动程序发送信号并“希望”机器会跟随,这是大多数廉价 3D 打印机的情况,如果你挡住头部,它就会失去步骤。
    • 同步 vs 异步(不确定这个命名):在同步系统中,驱动程序为每个循环的每个轴发送一个单步(x、y、z、a 中的每一个向前一步,不向前一步,或向后一步。 .. 轴)。在每次迭代中,驱动程序确定需要激活哪些步骤并发送;运动的速度取决于这个循环的执行速度。在异步驱动中,回路以特定速度运行并根据需要应用步骤来校正先前/检测到的位置与预期位置之间的距离。

g 代码的获取和解析可以软实时执行,但驱动需要硬实时,其精度决定了您的 CNC 可以管理的最大速度。

伺服器/步进器通常无法管理无限加速,这就是系统需要提前读取 g 代码指令以预测闭合角度或方向变化的原因。然后它应该将指示的速度降低到允许下一条指令的速度。

我希望这可以快速介绍该主题,显然,每个方面都需要进一步阅读。