开源改变世界

为生物医学机器人技术提供多个 GRBL 实例 #93

推推 grbl 2年前 (2023-01-21) 193次浏览

关闭
carlcrott 打开了这个问题 2012 年 4 月 21 日 · 16条评论
关闭

为生物医学机器人技术提供多个 GRBL 实例#93

carlcrott 打开了这个问题 2012 年 4 月 21 日 · 16条评论

注释

为生物医学机器人技术提供多个 GRBL 实例 #93

大家好

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

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

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

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

为生物医学机器人技术提供多个 GRBL 实例 #93

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

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

但这具体只是 Gcode ……但是 GRBL 的优势在于它是为在 Arduino 上(快速)工作而编写的。

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

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

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

为生物医学机器人技术提供多个 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 代码说“提供状态”,从机回复一个状态(概念上非常简单。)在发送“做其他事情”命令或序列之前,您可以确定当前任务完成。你不能吗?

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

我在这里错过了什么吗?

好的,我不是 G 代码大师,我不知道“提供状态”命令,但 $ 词在概念上似乎相似(转储特定寄存器),并且可以以此为模型实现。

为生物医学机器人技术提供多个 GRBL 实例 #93
成员

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

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

为生物医学机器人技术提供多个 GRBL 实例 #93
成员

我突然想起 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=9axis 等)。

我也在考虑rs485。

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

很抱歉劫持线程,我会在有时间的时候开一个干净的矮个子。(也是刚搬进新房子,很忙)。

斯科特

为生物医学机器人技术提供多个 GRBL 实例 #93
成员

堆叠 grbl 并同步所有内容比您想象的要困难,尤其是当它们是单独的控制器时。Alden 或许可以通过他在 TinyG 上的工作来证明这一点。为了在 6 轴机器上实现完美同步,您确实需要将它们放在同一个控制器上,因为步骤以高频发生,并且单独的步骤之间的通信会造成一个巨大的瓶颈。

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

为生物医学机器人技术提供多个 GRBL 实例 #93

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

堆叠 grbl 并同步所有内容比您想象的要困难,尤其是当它们是单独的控制器时。Alden 或许可以通过他在 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 个额外的步进电机,每个步进电机都带有独立控制,这确实是需要的灵活性……

为生物医学机器人技术提供多个 GRBL 实例 #93

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

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

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

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

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

想法?

喜欢 (0)