开源改变世界

为生物医学机器人的多个 GRBL 实例提供动力 #93

推推 grbl 3年前 (2022-10-31) 246次浏览 0个评论
关闭
carlcrott 打开了这个问题 on 21 Apr 2012 · 16 条评论

注释

为生物医学机器人的多个 GRBL 实例提供动力 #93

大家好

在 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/

  1. GRBL 有能力做到这一点吗?
  2. 是否可以对其进行修改以控制 3 针线性执行器?
  3. 如何检查传感器的反馈?
为生物医学机器人的多个 GRBL 实例提供动力 #93
成员

尚尼特 评论 on 21 Apr 2012

如果您正在考虑同步所有 12 个控制器,我会说这将是一项艰巨的任务,但并非不可能。正如您所描述的,如果您擅长编程,那么破解 Grbl 来完成个人工作是可行的。最棘手的部分是使用 Grbl 的异步运动来计算操作顺序,这意味着它会同时解析命令并移动步进器。其设计目的是防止按顺序短而快速的运动导致缓冲区不足,并计划运动的最佳加速度。

我认为您最好的选择是真正研究源代码并弄清楚如何将所有内容同步在一起以及如何考虑每个内核将执行的加速计划。

为生物医学机器人的多个 GRBL 实例提供动力 #93

所以我不认为我希望它们同步,但是我希望能够从单个主 MC 控制所有这些。

但是我认为我主要追求的是漂亮的打包代码,指定哪个电机移动到哪个位置……就像这样:http ://en.wikipedia.org/wiki/G-code#Example_program

但这只是 Gcode ……但 GRBL 的优势在于它可以(快速)在 Arduino 上运行。

就代码而言……我不打算在阻塞代码中操作 12 个内核中的任何一个……所以如果我不想让两个步进器同时步进……

  1. 选择步进单个电机(例如向上移动以从孔中取出移液器)
  2. 循环遍历所有其他寄存器
  3. 检查步进器是否已到
  4. 如果真正运行同步步骤以移动多个步进器(将头部定位在另一个板上)

…我想我不认为这会是一个问题?

为生物医学机器人的多个 GRBL 实例提供动力 #93

听起来不像,至少理论上是这样。不过,我想知道您如何通过 Grbl 使用的串行接口从单个主控器与 12 个内核进行通信。我认为这样的小问题会出现,但并非无法克服。

为生物医学机器人的多个 GRBL 实例提供动力 #93

这基本上就是我现在正在做的事情。我正在构建其中的 2 个:http: //www.instructables.com/id/Perfboard-Hackduino-Arduino-compatible-circuit/ .. 运行 GRBL。

这是我目前对其工作原理的心智模型:
一些目标文件 >> gcode 解释器 >> 流数据 >> CNC 微控制器 >> GRBL / 一些 gcode 阅读软件 >> 步进器/执行器 >> 东西被切割

您能否进一步完善它并在需要的地方添加一些细节,以便我可以深入了解它是如何工作的?

为生物医学机器人的多个 GRBL 实例提供动力 #93

假设 USB 启用了从属设备,并且 G 代码显示“Give status”,从属设备回复一个状态(概念上非常简单)。在您发送“做其他事情”命令或序列之前,您可以确定当前任务完成。你不能吗?

USB 允许大量可寻址设备,诀窍是让主设备选择您要与之交谈的设备。通常对于虚拟串行设备,这是通过在 Windows 下调用它们 COM1、COM2、COM3…COM9 和在 Ubuntu(debian Linux)下调用 ttyS0-ttyS3(或更多)来完成的,我没有足够的 MAC hack 来告诉你什么苹果使用。

我在这里错过了什么吗?

好吧,我不是 G 代码专家,也不知道“给予状态”命令,但 $ 字在概念上似乎相似(转储特定寄存器),并且可以以此为模型实现。

为生物医学机器人的多个 GRBL 实例提供动力 #93

是的,如果您的主机是可以支持多个 USB 设备和连接的计算机,这将起作用。一个 arduino 大师将无法做到这一点。

Grbl 中已经有一个状态报告功能,可以编写它来提供 Grbl 正在执行的实时状态。它还没有完成,但基础结构在那里。我正在购买和搬进一所房子,并且在过去的几个月里一直没能像我希望的那样把时间投入到 Grbl 上。

为生物医学机器人的多个 GRBL 实例提供动力 #93
成员

四门 评论 2012 年 5 月 8 日

我突然想起 Makerbot 的电子设备使用一种方案,所有设备都可以连接到一个串行端口(RS485:http ://en.wikipedia.org/wiki/RS-485 )。你需要用一个特别便宜的芯片来修改你的 arduinos(检查 makerbot 电子设备的原理图)。该方案有一些注意事项,例如总线上的所有流量都广播到总线上的所有其他设备,因此即使是 Grbl 自身发送的数据也会被回显给它。在发送时丢弃这些回显信息非常重要,并且您需要添加一种方法来“唤醒”特定的 Grbl 并使其监听您的命令。这是可行的,您有 Makerbot 代码和原理图可供参考,而且非常便宜。比这便宜得多:

http://www.usbgear.com/USB-16COM-RM.html

为生物医学机器人的多个 GRBL 实例提供动力 #93

这实际上是我对 TinyG 所做的。最初设计的一部分是使其可联网。见https://www.synthetos.com/blog/what-is-tinyg-and-why/

它上面有一个 RS-485 总线,固件可以设置为主或从模式。我为 485 总线使用了 makerbot RJ45 引脚,但你真的可以使用任何东西。主机连接到 USB 线,其余所有通过 RS485 连接到主机。您需要编写代码来解析输入字符串并将其发送到正确的从站。

为生物医学机器人的多个 GRBL 实例提供动力 #93

aldenhard 你碰巧有这个项目的高分辨率图像吗?

为生物医学机器人的多个 GRBL 实例提供动力 #93

它在 github 上:https
://github.com/synthetos/TinyG ,这里有一个 wiki:https ://www.synthetos.com/wiki/index.php?title=Projects:TinyG

为生物医学机器人的多个 GRBL 实例提供动力 #93

我喜欢“堆叠” grbl 以创建 n 个全部同步的 3 轴控制器的想法。(例如 2 grbl 让我们获得 6 个同步轴,3grbl=9 轴等)。

我也在考虑rs485。

假设我们有 2 个 grbl(s):
我们可以用 X,Y,Z,I,J,K,n7,n8,n9,… 广播 gcode,并让 grbl 单元忽略任何不是它们的轴的东西?虽然我在想真正的解决方案不是那么简单,但它是一个开始?有没有其他人花时间在这件事上?我们是否需要在单元之间连接几条数字线以进行同步?我会做一些功课!

抱歉劫持了线程,有时间我会清理一个矮个子。(也刚搬进新房子,忙忙碌碌)。

斯科特

为生物医学机器人的多个 GRBL 实例提供动力 #93

堆叠 grbl 和同步所有东西比你想象的要困难,特别是如果它们是单独的控制器。奥尔登可能可以通过他在 TinyG 上的工作来证明这一点。为了在 6 轴机器上实现完美同步,您确实需要它们在同一个控制器上,因为步骤以高频率发生,并且单独的步骤之间的通信将产生一个巨大的瓶颈。

但是,这个线程更多的是关于不需要完美同步的多个独立运动。

为生物医学机器人的多个 GRBL 实例提供动力 #93

2012 年 5 月 23 日下午 12:41,Sonny Jeon 写道:

堆叠 grbl 和同步所有东西比你想象的要困难,特别是如果它们是单独的控制器。奥尔登可能可以通过他在 TinyG 上的工作来证明这一点。为了在 6 轴机器上实现完美同步,您确实需要它们在同一个控制器上,因为步骤以高频率发生,并且单独的步骤之间的通信将产生一个巨大的瓶颈。

但是,这个线程更多的是关于不需要完美同步的多个独立运动。

有些同步动作不需要完美
同步。例如,该命令只需要一个“我们到了吗?” 或者一个中断来告诉
同步换刀运动开始,两个轴组彼此
异步,但在它们自己的控制器内同步。

它不适用于主轴速度与
运动速度相关的 XYZABC 机器,但这并不常见。

而且,你是对的,原来的线程是一个“完成后,做下一
组”类型的多控制器系统,不需要
所有轴上的同步运动,只是一些智能编程。

戴夫 8{)

/“政治正确是一种学说,由妄想的、
不合逻辑的少数人培育,并由无良的主流
媒体疯狂宣传,提出了完全有可能
捡到屎的命题。”/
(引自http ://www.wattflyer.com/forums/showthread.php?t=30060 )

所有人注意:

转发电子邮件时,请仅对
所有收件人使用“密件抄送”或“密件抄送”。请“删除”或“突出显示并剪切”任何
包含我的电子邮件地址的转发历史记录!
这是对我和其他可能不希望将他们的电子邮件地址发送到世界各地的人的礼貌
!清除历史记录有助于防止垃圾邮件发送者挖掘地址
和传播病毒。

谢谢你!

为生物医学机器人的多个 GRBL 实例提供动力 #93

如果我理解这个领域,“生物医学机器人”通常意味着高通量筛选和高内涵筛选线。因此,工作是加载大量 1536 孔试剂板,这些试剂板看起来像 1/4″ 厚的 3×5 索引卡,其中带有亚毫米孔。并行执行此操作可能仅意味着运行许多更简单的 3、4、5 轴控制器在“并行”中使用某种方法来管理禁区(即防止它们相互碰撞)。

这实际上是 TinyG 网络旨在解决的问题。我们需要控制器区域之间良好但不完美的协调。有趣的问题是“我们能有多接近”协调,这在公差方面意味着什么。

为生物医学机器人的多个 GRBL 实例提供动力 #93

奥尔登哈特,你搞定了。

当我深入研究这个问题时,问题是可扩展性之一。我需要与 reprap 软件后端接口但允许我根据需要添加外围设备的东西。

我可以插入 5 个额外的步进电机,每个步进电机都有 indy 控制,这确实是需要的那种灵活性……

为生物医学机器人的多个 GRBL 实例提供动力 #93

https://github.com/grbl/grbl/blob/master/stepper.c

^^ 这段代码是否有一个简单的抽象?

  1. 设置加速/减速参数
  2. 一旦达到最大速度……旋转
  3. 检查针是否旋转… if ( pin == HIGH ){ // 继续旋转 } else { 减速 }

我目前正在使用 arduino AccelStepper 库……它只是不是一个非常可靠的库……

我猜对这里使用的库的一个很好的抽象会完全把它吹走。

想法?

喜欢 (0)

您必须 登录 才能发表评论!