我想找到一个不使用 arduino 直接与 RAMPS 板(或任何其他 3D 打印机驱动程序)通信的开源软件......
只要它是开源的,它是在 Windows 还是 linux 上运行都没有关系。另外,我不担心这种通信是如何完成的(USB、串行端口、并行端口)......
有没有人听说过这样的项目?
我想找到一个不使用 arduino 直接与 RAMPS 板(或任何其他 3D 打印机驱动程序)通信的开源软件......
只要它是开源的,它是在 Windows 还是 linux 上运行都没有关系。另外,我不担心这种通信是如何完成的(USB、串行端口、并行端口)......
有没有人听说过这样的项目?
不,不存在这样的软件。您无法与 RAMPs 板通信,因为 RAMPs 板没有内置逻辑;它只是一个愚蠢的分线板,将 Arduino Mega 连接到您的打印机组件(例如步进驱动器、用于控制加热器的 MOSFET、限位器等)。
如果您想将 RAMPs 板“直接”连接到您的计算机,您需要一种方法让您的计算机生成 Arduino 通常生成的脉冲。您可能会为此使用并行端口,但您需要的输出比单个并行端口所能提供的多得多,并且您需要找到一种方法来进行热敏电阻所需的模数转换。
它只是不太可行(考虑到如今拥有并行端口的计算机很少)。
关键问题不在于是否真的有这样的软件,而是这样的软件是否可能,或者它是否能很好地工作。
虽然打印机不仅仅是步进电机,但它们是最棘手的部分之一,因此主要关注它是有道理的。
回到个人计算的旧时代,从个人计算机的 CPU 生成步进电机信号并不少见,在任一专用接口上使用可单独设置的位(实际上,软盘驱动器中的磁头基本上就是这样)通常移动)或借用另一个可用的接口,例如并行打印机端口。
但随后发生了两件事:计算机变得更快,但与世界更加隔绝,常用的操作系统在允许的范围内变得更加严格。
要以合适的速度移动高分辨率步进器,您需要以相当高的速率生成步进脉冲或绕组激活信号。并且要在负载下加速和减速电机,您需要精细地改变它们的时序。当 I/O 端口直接挂在处理器总线上时,操作系统无法阻止程序加速系统硬件计时器以快速运行步进例程,这在一定程度上起作用了。但今天:
大多数 PC 级处理器几乎没有直接耦合的 I/O(如果有的话)——尤其是当您开箱即用时。像 USB 这样的接口非常适合在单位时间内传输大量数据,但对于完成一项具有精确、频繁计时的琐碎任务来说绝对是可怕的——它是一列货运列车,而不是自行车快递。许多让处理器在内部快速运行的东西特别是通过将它与通常无法跟上的外部世界解耦来工作 - 内存缓存、总线交换单元等。如果你今天找到了一个并行端口,它很可能是至少是 PCI 总线桥的远端,并且具有与传统接口不同的低级接口。
现代操作系统有一个时间片调度器,它“拥有”CPU 并将小块处理时间分配给普通程序。这些程序通常运行得足够频繁以显示对用户的响应,但不足以准确驱动步进电机。已经尝试了各种方案,例如创建一个拥有处理器的“硬实时”调度程序,并允许电机控制任务注册精确需要的时间片 - 然后,无论剩下多少时间,Linux 或允许Windows或类似内核运行,并通过其调度规则在普通程序之间分配剩余时间。当然,每次使用的传统操作系统有新的主要版本时,往往需要修改这样的方案。
虽然有一些方法可以解决这些问题,但它们往往需要非典型的硬件和对操作系统安装的深入更改 - 使它们既不便宜,也不容易为最终用户设置。
相反,将嵌入式处理器放在外部电路板上通常更简单、更具成本效益(如今甚至不到 10 美元),并让它充当代表主机处理器执行精确定时任务的代理。从最初读取打孔纸带的工业 CNC 机器的想法有所扩展,后来更新为普通计算机通过串行端口“滴送”G 代码命令的方案,现代 3D 打印机倾向于提供 G 代码(或其他)在需要时提前一点命令数据,因此 USB 或串行连接的延迟并不重要。通常,打印机上缓冲了足够的数据以使其继续运行,但即使没有,它也只会在传输的完整移动之间短暂暂停,
至于为什么使用 Arduino - 可能主要是谁制造了开启发烧友打印趋势的机器的历史。如果来自工业背景的人的任务是构建像 FDM 打印机或具有类似运动需求的机器之类的东西,他们很可能最终会得到一个 ARM 处理器,它会更快、更灵活、资源更多,而且可能花费更少。但在实际历史中,早期的廉价机器是由制造商社区中的那些人制造的,他们已经熟悉 Arduino 的可用性,并愿意运用一些聪明才智来摆脱其局限性。特别是 RAMPS 似乎被设计成一个粗间距通孔桥,业余爱好者可以自己建造,然后购买稍微复杂一些的以 Arduino Mega 和步进驱动模块形式预组装的表面贴装处理器和电机驱动芯片。即使是相当合适的机器也保留了这些基本的零件选择,这可能表明了不“重新发明轮子”的效用——如果你想开发一台打印机,你可以从可用的组件开始,然后根据你的选择逐一定制它们,而不是在您获得设计和制造的工作电路板,开发工作软件基础等之前无法运行您的开发原型。