注释
如果您正在考虑同步所有 12 个控制器,我会说这将是一项艰巨的任务,但并非不可能。如您所描述的,如果您擅长编程,那么黑客 Grbl 来完成个人工作是可行的。最棘手的部分是用 Grbl 的异步运动确定操作顺序,这意味着它会同时解析命令和移动步进器。这是设计使然,以防止缓冲区饥饿与序列短而快的运动,并计划运动的最佳加速。 我认为您最好的选择是真正查看源代码并弄清楚如何将所有内容同步在一起以及如何考虑每个内核将执行的加速计划。 |
所以我不认为我希望它们同步,但我希望能够从一个主 MC 控制所有这些。 但是我认为我主要追求的是很好的打包代码,指定哪个电机移动到什么位置……像这样:http ://en.wikipedia.org/wiki/G-code#Example_program 但这具体只是 Gcode ……但是 GRBL 的优势在于它是为在 Arduino 上(快速)工作而编写的。 就代码而言……我不打算在阻塞代码中操作 12 个内核中的任何一个……所以如果我不希望两个步进器同时步进……
……我想我不认为这会是一个问题? |
听起来不像,至少在理论上是这样。虽然,我想知道您将如何通过 Grbl 使用的串行接口与单个主机的 12 个内核进行通信。我认为像这样的小问题会突然出现,但并非无法克服。 |
这基本上就是我现在正在做的事情。我正在构建其中的 2 个:http: //www.instructables.com/id/Perfboard-Hackduino-Arduino-compatible-circuit/ .. 以运行 GRBL。 这是我目前关于它如何工作的心智模型: 您能否进一步完善它并在需要的地方添加一些细节,以便我可以深入了解其工作原理? |
让我们假设 USB 启用一个从机并且 G 代码说“提供状态”,从机回复一个状态(概念上非常简单。)在发送“做其他事情”命令或序列之前,您可以确定当前任务完成。你不能吗? USB 允许大量可寻址设备,诀窍是让主人选择你想与之交谈的设备。通常对于虚拟串行设备,这是通过在 Windows 下调用它们 COM1、COM2、COM3…COM9 和在 Ubuntu(debian Linux)下调用 ttyS0-ttyS3(或更多)来完成的,我没有足够的 MAC hack 来告诉你什么苹果用的。 我在这里错过了什么吗? 好的,我不是 G 代码大师,我不知道“提供状态”命令,但 $ 词在概念上似乎相似(转储特定寄存器),并且可以以此为模型实现。 |
是的,如果您的主人是一台可以支持多个 USB 设备和连接的计算机,这将起作用。arduino 大师无法做到这一点。 Grbl 中已经有一个状态报告功能,可以编写它来提供 Grbl 正在做的事情的实时状态。它还没有完成,但基础结构已经存在。我正在购买和搬进一所房子的中间,并且在过去的几个月里一直无法像我希望的那样投入时间到 Grbl 中。 |
我突然想起 Makerbot 的电子设备使用一种方案,所有设备都可以连接到一个串行端口(RS485:http ://en.wikipedia.org/wiki/RS-485 )。你需要用一个非常便宜的特殊芯片来修改你的 arduinos(检查 makerbot 电子设备的原理图)。该方案有一些注意事项,例如总线上的所有流量都会广播到总线上的所有其他设备,因此即使是 Grbl 自身发送的数据也会被回显给它。发送时丢弃此回显信息非常重要,您需要添加一种方法来“唤醒”特定的 Grbl 并使其听取您的命令。这是可行的,你有 Makerbot 代码和原理图可供参考,而且它会非常非常便宜。比这便宜得多: |
这实际上是我对 TinyG 所做的。初始设计的一部分是使其可联网。请参阅https://www.synthetos.com/blog/what-is-tinyg-and-why/ 它上面有一个 RS-485 总线,固件可以设置为主模式或从模式。我为 485 总线使用了 makerbot RJ45 引出线,但你真的可以使用任何东西。主机接USB线,其余通过RS485接主机。您需要编写代码来解析输入字符串并将其发送到正确的从站。 |
aldenhard 你碰巧有这个项目的高分辨率图像吗? |
它在 github 上:https |
我喜欢“堆叠”grbl 的想法,以创建 n 个全部同步的 3 轴控制器。(例如 2 grbl 让我们得到 6 个同步轴,3grbl=9axis 等)。 我也在考虑rs485。 假设我们有 2 个 grbl(s): 很抱歉劫持线程,我会在有时间的时候开一个干净的矮个子。(也是刚搬进新房子,很忙)。 斯科特 |
堆叠 grbl 并同步所有内容比您想象的要困难,尤其是当它们是单独的控制器时。Alden 或许可以通过他在 TinyG 上的工作来证明这一点。为了在 6 轴机器上实现完美同步,您确实需要将它们放在同一个控制器上,因为步骤以高频发生,并且单独的步骤之间的通信会造成一个巨大的瓶颈。 但是,这个线程更多的是不需要完美同步的多个独立运动。 |
在 2012 年 5 月 23 日下午 12:41,Sonny Jeon 写道:
有不需要完美 它不适用于主轴速度与 而且,你是对的,原来的线程是一个“完成后,做下一 戴夫 8{) /“政治正确是一种学说,由妄想的、 所有人注意: 转发电子邮件时,请仅对 谢谢你! |
如果我理解这个领域,“生物医学机器人”通常意味着高通量筛选和高内涵筛选线。因此,工作是加载大量 1536 孔试剂板,这些板看起来像 1/4″ 厚的 3×5 索引卡,上面有亚毫米孔。并行执行此操作可能意味着运行许多更简单的 3、4、5 轴控制器在“并行”中使用某种方法来管理禁区(即防止它们相互碰撞)。 这实际上是 TinyG 网络旨在解决的问题。我们需要控制器区域之间良好但不完美的协调。有趣的问题是“我们能有多接近”协调,以及这在公差方面意味着什么。 |
奥尔登哈特,你做到了。 当我深入研究这个问题时,问题是可扩展性之一。我需要一些与 reprap 软件后端接口的东西,但允许我根据需要添加外围设备。 我可以插入 5 个额外的步进电机,每个步进电机都带有独立控制,这确实是需要的灵活性…… |
https://github.com/grbl/grbl/blob/master/stepper.c ^^ 这段代码是否碰巧有一个简单的抽象?
我目前正在使用 arduino AccelStepper 库……它不是一个非常可靠的库…… 我猜这里使用的 lib 的一个很好的抽象会完全把它吹走。 想法? |
大家好
在 simen 的推荐下,我发布了一些关于运行 GRBL 的问题
我正在开发这台机器:
https ://github.com/delinquentme/LH002/blob/master/images/LH002_full_01.png
根据我到目前为止的工作,我可以为这台机器上的每个核心运行一个 GRBL(模型中的机器有 4 个液体处理核心)基本上我需要控制 2x 步进器,1x 线性致动器,1x弦电位器和每个核心 1 个物理开关……这些核心中有多达 12 个的潜力。
所以我在想像 Primary MicroController >> 一些协议 >> 12 个不同的 arduino 中的 1 个运行 GRBL 来控制步进器等。我想维基提到 GRBL 会在 uno 上运行所以我想我想建立一个其中一些: http: //www.instructables.com/id/Perfboard-Hackduino-Arduino-compatible-circuit/