注释
如果您正在考虑同步所有 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 代码显示“Give status”,从属设备回复一个状态(概念上非常简单)。在您发送“做其他事情”命令或序列之前,您可以确定当前任务完成。你不能吗? 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=9 轴等)。 我也在考虑rs485。 假设我们有 2 个 grbl(s): 抱歉劫持了线程,有时间我会清理一个矮个子。(也刚搬进新房子,忙忙碌碌)。 斯科特 |
堆叠 grbl 和同步所有东西比你想象的要困难,特别是如果它们是单独的控制器。奥尔登可能可以通过他在 TinyG 上的工作来证明这一点。为了在 6 轴机器上实现完美同步,您确实需要它们在同一个控制器上,因为步骤以高频率发生,并且单独的步骤之间的通信将产生一个巨大的瓶颈。 但是,这个线程更多的是关于不需要完美同步的多个独立运动。 |
2012 年 5 月 23 日下午 12:41,Sonny Jeon 写道:
有些同步动作不需要完美 它不适用于主轴速度与 而且,你是对的,原来的线程是一个“完成后,做下一 戴夫 8{) /“政治正确是一种学说,由妄想的、 所有人注意: 转发电子邮件时,请仅对 谢谢你! |
如果我理解这个领域,“生物医学机器人”通常意味着高通量筛选和高内涵筛选线。因此,工作是加载大量 1536 孔试剂板,这些试剂板看起来像 1/4″ 厚的 3×5 索引卡,其中带有亚毫米孔。并行执行此操作可能仅意味着运行许多更简单的 3、4、5 轴控制器在“并行”中使用某种方法来管理禁区(即防止它们相互碰撞)。 这实际上是 TinyG 网络旨在解决的问题。我们需要控制器区域之间良好但不完美的协调。有趣的问题是“我们能有多接近”协调,这在公差方面意味着什么。 |
奥尔登哈特,你搞定了。 当我深入研究这个问题时,问题是可扩展性之一。我需要与 reprap 软件后端接口但允许我根据需要添加外围设备的东西。 我可以插入 5 个额外的步进电机,每个步进电机都有 indy 控制,这确实是需要的那种灵活性…… |
https://github.com/grbl/grbl/blob/master/stepper.c ^^ 这段代码是否有一个简单的抽象?
我目前正在使用 arduino AccelStepper 库……它只是不是一个非常可靠的库…… 我猜对这里使用的库的一个很好的抽象会完全把它吹走。 想法? |
卡尔克罗特 评论 on 21 Apr 2012
大家好
在 simen 的推荐下,我发布了一些关于运行 GRBL 的问题
我正在开发这台机器:
https ://github.com/delinquentme/LH002/blob/master/images/LH002_full_01.png
根据我到目前为止的工作,我可以为这台机器上的每个核心运行一个 GRBL(模型中的机器有 4 个液体处理核心)基本上我需要控制 2x 步进器、1x 线性执行器、1x串电位器和每个内核 1 个物理开关……具有多达 12 个这些内核的潜力。
所以我在想像初级微控制器>>一些协议>>12个不同的arduinos中的1个运行GRBL来控制步进器等。我认为wiki提到GRBL将在uno上运行所以我想我正在寻找建立一个其中一些: http: //www.instructables.com/id/Perfboard-Hackduino-Arduino-compatible-circuit/