Contact me: hankecnc@gmail.com

更多轴? #117

推推 grbl 3年前 (2023-01-21) 213次浏览
关闭
droftarts 打开了这个问题 2012 年 9 月 11 日 · 30条评论
关闭

更多轴?#117

droftarts 打开了这个问题 2012 年 9 月 11 日 · 30条评论

注释

更多轴? #117

我知道 grbl 是为 3 轴、非旋转轴 CNC 机器设计的,但是添加第 4 轴和/或第 5 轴有多难?我也很欣赏它是为在低端 Arduino 上运行而设计的,但实际上人们还在使用 AVR328 来运行 CNC 铣床吗?644 有足够的引脚和更多的计算能力来支持更多的轴。我有一个 reprap RAMPS 板,它有 5 轴和 6 个端点。该板的一个更简单的变体,带有主轴控制而不是加热床/热端控制,非常适合运行由 NEMA17 或 23 电机驱动的 4 轴或 5 轴泡沫塑料/轻木切割机。此类机器的刀具路径可以在开源软件中生成,例如 Gmax http://www.turbosquid.com/gmax和 CNC 工具包http://www.cnc-toolkit.com/
想象一下能够用这样的设置切割光滑的船体!

基于 grbl 的 Marlin 固件添加了第 4 轴,并且能够将工具更改为第 5 轴。还需要与轴无关的每毫米步数和加速度,这在 Marlin 中已经存在。此外,还可以支持其他形式的机器人技术,例如机器人手臂——这是我不可告人的动机。请参阅http://forums.reprap.org/read.php?146,153660

不幸的是,我不是程序员,所以我真的不知道该怎么做。除非其他人已经这样做了?

更多轴? #117
成员

我制作了一个控制 scara 手臂的 Grbl 叉子,但它并不是真正可以有意义地集成到 Grbl 中的东西——它必须是一个单独的项目。Grbl 将始终专注于笛卡尔设置。就目前而言,将第四个轴添加到 Grbl 非常简单,因为这是一个笛卡尔轴,无论它需要什么——我怀疑这个轴在 Marlin 中是塑料进给?将旋转添加到混合中将需要对 grbl 中的前瞻规划器进行复杂的返工,我认为目前在任何人的路线图中都没有。

如果我要更新 Grbl 以使用更现代的处理器,我个人会选择基于 ARM 的设置。我仍在等待一些电路板像 Arduino 一样无处不在,让这样的努力变得有价值。

更多轴? #117
作者

嗨 Simen,感谢您的快速回复。目前,我在使用 Marlin 时通过校准它以在每个轴上移动角度而不是毫米来捏造 gcode;即我按度定位每个手臂部分。这实际上使得计算实际位置的数学计算并不太糟糕,但这可能不是专业人士的做法!我的手臂的优点是手臂的任何部分都不依赖另一个,所以如果我改变下臂的角度,上臂与地面保持相同的角度。我认为这与 SCARA 布局有很大不同,不确定您的其他叉子是否会帮助我。

考虑到更多令人兴奋的硬件即将出现,我理解您对 grbl 投入更多工作的沉默。然而,我确实认为 Arduino 还剩下很多生命——它很容易编程,可用性和可扩展性将使它在未来几年内继续存在。我没有想过正确的旋转轴会如何影响规划器,但我现在明白这会很棘手。但是您始终可以将其定义为仅移动 360 度且不再移动的轴,或者 360 度之后的下一个增量为 1。但是我不是程序员,我敢肯定它涉及的远不止于此!

我可能会坚持使用 Marlin,看看我能否让第 4 轴和第 5 轴独立工作。也许我最终不得不切换到 LinuxCNC,这感觉像是一个倒退的步骤,但至少内置了 arm control。

更多轴? #117
成员

我并不是说我对按原样维护 Grbl 不感兴趣,我只是说我看不到将它升级到具有相同处理能力的不同 atmega 的意义,只需要一些额外的引脚,因为你很快就会用完处理能力试图让所有这些额外的引脚都充满行动。然而,我确实理解为什么 RepRap 装置会这样做,因为它们在加热器和进料器以及你有什么方面有更多的进展。对于铣削,香草 Arduino 上的 Grbl 仍然只是我个人的门票。

更多轴? #117
成员

我完全同意西门。对于旋转的 ABC 轴,数学会开始变得复杂,并且需要更多的计算能力。比简单的 328p atmegas 可以真正强大地做更多一点。内存也有问题。Grbl 被拉伸到最大,为 3 轴提供最小但一致的功能。所以这主要是一个复杂的问题,你添加的越多,你需要的内存和计算能力就越大。

就个人而言,我认为第四轴是可行的,如果对 Arduino 非常小心的话。我不认为数学与我们在规划器中已有的有太大不同,但我认为可能需要做出一些妥协才能使其稳健地工作,因为计算该额外轴需要更多的周期。(我们还必须将加速度更改为与轴无关,这在我的路线图中。)我希望在不久的将来的某个时候看到这发生,也许作为一个不同的开发分支。

另一个注意事项:TinyG/grblshield 的 Alden Hart 一直在研究基于 atmega mega 芯片的 6 轴控制器。不确定他现在在他的项目中的什么位置,但从我上次看到的情况来看,它工作得很好。不过他只支持自己的 TinyG 特定硬件。

更多轴? #117
成员

@chamnit考虑如何使用旋转轴管理有效的进给率让我很头疼。有效进给率不会是笛卡尔运动和旋转运动的结果,必须考虑工具与在给定时间点移动的每个旋转轴的距离。我同意在 atmega 架构的约束下可以管理单个旋转轴,但是三个?我必须检查一下@aldenhart取决于。如果他能够做到这一点,听起来真的很不可思议,但话又说回来,他还是相当聪明的!

更多轴? #117
成员

是的,有点头疼。您必须在每个时间点独立考虑每个轴的加速度和速度,但我认为可能有一个简单的解决方案来处理它们。我认为诀窍在于您必须将每个运动限制为最大轴的加速度。我还没有在纸上解决它,但它应该可以在不杀死 Arduino 的情况下实现。

对于有效的进给率,这些应该由 CAM 软件或后处理器处理。这是使 6 轴机器如此困难的众多问题之一。大多数时候,机械师必须自己编写特定于机器的后处理器。我们有一台工作中的 5 轴,它太不稳定了,以至于机械师不得不三重检查他们的代码,以确保在他们开始切割时没有任何损坏。特别是当刀具退出时以及工件移动并旋转到新位置时。

更多轴? #117
成员

@simen:我一直在考虑更多关于有效进给率的问题,并且我一直在与机械师 Mike 讨论这个问题。这是我们的机械师的一些说明。

因此,主要问题是当您同时进行旋转和平移,它们会使用两个不同的单位,即英寸和度数。要解决这个问题,您必须使用反时限 (G93)。这会强制旋转和平移通过使用一个 feed 参数而不是两个来同步移动。如果您使用两个单独的 feed 参数进行旋转和平移,每个小的简单错误都会影响同步,其中一个会先于另一个到达目的地。

在这一点上,我不确定这对 Grbl 到底意味着什么,但我想我们必须更新反时限代码才能正确转换轴进给率。它可能是可行的……总之,需要考虑的事情。

更多轴? #117

常识免责声明:如果以 CNC 加工为生的人不同意我的文字,他们可能是对的。如果我的文字不同意这本书(Peter Smid 的 CNC 编程手册),那本书肯定是对的

关于这个问题,我有以下几点要说:

  1. 业界推荐的做法是不要在指定线性运动的同时指定旋转运动,特别是因为人类很难做到这一点,而且控制器供应商也很难保证控制器能够做到这一点。对于配备分度头、旋转台或两者组合的机器,移动通常在输入中分为 (X, Y, Z) 和 (A, B, C) 块。
    1之二。话虽如此,有些机器可以进行编排的 4 轴和 5 轴运动,包括线性轴和旋转轴,同时遵守给定的进给速率(从刀尖的角度来看!)。它们的售价往往至少达到 6 位数(以美元计),并且通常不是由人工编程,而是由专门的 CAM 软件输出。
  2. 业内推荐的做法是在进行线性旋转组合移动时使用反时限进给率,同样是因为这样更容易让人类正确地完成它。任何支持以这种方式组合移动的机器(实际上将在生产中积极使用)都支持(每分钟长度单位和反时限)进给率规格,而不会损失任何精度。的,这涉及控制器中的大量数学运算和机芯中最先进的机电工程,但这就是它们昂贵的原因。在任何行业中,做到正确通常都很难(因此也很昂贵)。
  3. 至于旋转轴,它们以 360 度包裹(361 与 1 在同一位置)。不同的机器使用不同的机械装置,因此其中一些机器实际上会在收到命令时连续旋转,而另一些机器会定期放松以保持在其机械范围内。后一种情况涉及人为方面的额外计划,这是特定于机器的,在像 grbl 这样的通用固件的情况下无法解决。

关于旋转轴问题的简短结论:

  • 如果我们谈论的是分度/分度头或旋转台(即您偶尔想要移动的设备,只是为了将零件设置到新的 [固定] 位置,然后在其上恢复加工,然后将其添加到grbl 是微不足道的
  • 如果我们谈论的是旋转、倾斜甚至章动的加工头(主轴),我们希望连续控制并执行精心设计的动作,那么它会变得丑陋,ATmega328P 根本无法应对我们的速度需要运行数学以跟上请求的进给率。

希望能帮助到你。

更多轴? #117
成员

@csdexter: 同意你所说的大部分,如果不是全部的话。

  1. 在与我工作场所的机械师交谈时,他表示 95% 的时间都使用“点对点”旋转和平移(或独立)运动,即使机械师可以使用 6 轴机器。主要原因:即使有 MasterCam ($$$$$) 的帮助,也很难协调运动。他们只在绝对需要或用于展示和讲述时才使用协调动作。
  2. 同意,但我觉得编程不会像你说的那么难。(我可能最终会食言。)在大多数情况下,困难的事情是由 CAM 或后处理器处理的,而不是 CNC 控制器。只要你有位置和反时限,控制器,即 Grbl,只需要解析命令并同步运动,就像它只在 3 轴上运动一样。诀窍是针对每个轴的不同加速度限制调整加速度规划器。(@jgeisler以前研究过这个,它看起来很简单。)
    我读过很多与高速 CNC 控制相关的期刊文章,以及我们正在尝试做的和在这里讨论的内容,大约二十年前在 CPU 上完成的是可能与 Arduino 328(或 Mega)相当。高速加工是昂贵的。这些算法试图最大限度地提高速度并确保整个切削过程中的进给率。我们只做一个简单的交流/减速斜坡。我将不得不研究完全实现这一点意味着什么,但我认为这是可能的(最终)。
  3. 在这种情况下很常见,机械师通常会根据机器和控制器的限制进行调整并在其中工作。如果我们选择一种通用的操作方式,它应该适用于大多数人。

所以,如果这完全可能的话,我认为研究仅使用第 4 轴的同步旋转和平移是值得的。相关的更改应该是独立于平台的,我们可以稍后使用功能更强大的硬件添加此功能,也就是说,如果我们发现小 Arduino 无法处理它。从那里开始,使用 ARM CPU,我们应该很容易添加额外的两个 BC 轴以实现完整的 6 轴运动。

我同意 Radu 的观点,对于 CNC 加工,6 轴受到可以对其进行编程的免费/廉价软件的可用性的限制,但 Grbl 不仅仅是加工。我们已经看到许多其他简洁有趣的应用程序,用于艺术装置和其他东西的简单移动,所以我认为,如果我们能做到,那就去做吧。

更多轴? #117

你好

我在这里的第一篇文章,希望不是最后一篇,因为我正在尝试
使用 grbl 启动和运行我的数控机床。目前正在
使用 QT 和 OpenGL 编写用 python 编写的 GUI,用于 gcode 的 3D 渲染。工作有点
慢,同时进行的项目太多。

关于更多轴所需的硬件:
Arduino WiFi shield,http ://arduino.cc/en/Main/ArduinoWiFiShield ,
可能是一个选项,但不确定它是否可以让您访问
所需的所有引脚(我希望这个董事会会更加灵活)。
至少可以调查一下。
Arduino Due(ARM 设备)也是一个不错的选择。我听说
它会在不久的将来上市。

否则,我已经基于 UC3 设备创建了自己的电路板,
除了 IO 电压外,该电路板应该与 Arduino 非常兼容。
至少应该能够提供额外的处理能力和
内存。http://uvolts.blogspot.no/p/uc3duino.html
我粗略设计的一些问题(仅在第一次修订时),但
对于任何想要创建
与当前兼容的电路板的人来说,这可能是一个起点我猜是 grbl 的盾牌。

问候
托尔·埃里克

更多轴? #117

我将权衡一下 TinyG 是如何做到的。所有代码都可以在 github (Synthetos/tinyg) 上找到,以供审查、使用和重用。

所有 6 个轴都是协调的,并且它们是受速率限制的。这是通过将所有运动转换为固件内部的时间单位来完成的——不管它们在 Gcode 中是如何指定的。Kramer RS274v3 NIST 规范中有一个密集的部分,内容涉及在进行涉及两个域中的运动的非反时限模式协调运动时,线性轴和旋转轴应如何关联。我读了很多很多次,希望我没看错。

在内部,所有运动规划都是作为标量值完成的,该标量值通过 6 轴单位矢量转换为运动。第一个操作是在给定轴的物理限制的情况下,将移动速率限制为移动所需的最短时间。请注意,轴都有最大速度、加加速度和转弯加速度的独立参数(TinyG 使用加加速度控制加速度 – 因此加速度不是常数)

是的,它现在只能为 Atmel Xmega 芯片编译。有人愿意和我一起开发 ARM 端口吗?

更多轴? #117
作者

哇,这引发了讨论!感谢所有的头脑风暴。aldenhart,TinyG 看起来真的很有趣,而且看起来绝对是接管复杂机器控制的有力竞争者。假设您可以获得足够的 I/O,您绝对应该将其移植到 ARM。我希望我能帮上忙,但我真的是一名平面设计师——也许我可以给它上色!

对于我目前的特定问题(机器人手臂)来说,这可能有点过头了,而且我只有一个 Arduino Mega 2560,而不是更强大的 Xmega,所以我什至不能尝试它。我想我可以扩展 Marlin 以容纳额外的轴。从 XYZ 到旋转坐标的转换必须由主机完成(可能最终在控制器上完成),但这应该不会太糟糕;如果我想翻译一系列 XYZ gcode 命令(比如,如果我用 XYZ reprap 切割一些东西用于 3D 挤压,我想使用 arm 重现),我应该能够编写一个 python 脚本来给我相同的 gcode在我的 4 个旋转轴上 – 我想!类似于极谱绘图机器人的工作方式,这对我来说实际上是一个很好的起点。进给率可能是个问题,但与旋转+平移系统的方式不同。抱歉,我也只是从我要解决的问题考虑这些,而不是针对所有 CNC 系统 – 请原谅我的短视观点!

更多轴? #117
贡献者

在 2012 年 9 月 12 日上午 06:31,Alden Hart 写道:

是的,它现在只能为 Atmel Xmega 芯片编译。有人愿意
和我一起开发 ARM 端口吗?

我愿意帮忙!

我确实参加了 Teensy 3.0 的 Kickstarter(还有
10 个小时,或者您可以在下个月订购)……它不是开源的
,但价格便宜(22 美元),而且创建者 Paul Stoffregen 也是
Arduino 的定期贡献者。我从来没有用 ARM 做过任何事情(我确实
有 Android 手机和桌子以及 Raspberry Pi,但这只是 Java 或
Linux 编程)。我认为 Paul 确保为
Teensy 3.0 提供了一个非常好的开源工具链(据我所知,这将
适用于 Arduino 和 GCC),这就是我得到一个的原因。

您认为使用过的飞思卡尔“Kinetis”K 系列 PK20DX128VLH5 /
MK20DX128VLH5 芯片是否适合用于 ARM Grbl 端口?

或者等待 Arduino Due 会更好吗?
或者您想到的任何其他 ARM ?

我不属于这家公司,如果他
卖这些板我也不会赚钱,这里有更多关于 Teensy 3.0 的信息

http://www.kickstarter.com/projects/paulstoffregen/teensy-30-32-bit-arm-cortex-m4-usable-in-arduino-a

技术规格:

32 位 ARM Cortex-M4 48 MHz CPU(M4 = DSP 扩展)
128K 闪存、16K RAM、2K EEPROM
14* 高分辨率模拟输入(13 位可用,16 位硬件)
34* 数字 I/O 引脚(10 与共享模拟)
10 个 PWM 输出
8 个用于间隔/延迟的定时器,与 PWM 分开
USB 具有专用 DMA 内存传输
3 个 UART(串行端口)
SPI、I2C、I2S、IR 调制器
I2S(用于高质量音频接口)
实时时钟(带有用户-添加了 32.768 晶体和电池)
4 个通用 DMA 通道(与 USB 分开)
触摸传感器输入

所有引脚都具有中断能力。

  • 14 个纯数字引脚和 10 个模拟/数字引脚可在
    Teensy 3.0 的外部使用,并且在面包板上使用时可用。 在内部和底部焊盘上可以访问另外10
    个仅数字引脚和另外 4 个仅模拟引脚
更多轴? #117

几周前,我从 kickstarter 订购了一些 Teensy 3,只是为了试用一下。嵌入式系统面临的挑战之一是找到一个 ARM,它可以满足这些用途(大约 5 美元,+/-),可用(不会永远缺货),具有足够好的免费或便宜的开发链(支持模拟或在-circuit trace/debug),并且拥有不繁琐的库许可并支持开源项目(所以 TI 已经出局 – 或者当我们与他们交谈时)。哦,我想要很多 IO 引脚来处理很多事情。

我也同意 Simen 关于等待“Arm Arduino”的看法。具有讽刺意味的是,Pi 和 Beaglebone 对于这些用途来说太强大了(复杂,恕我直言),因为您会尝试从非实时操作系统中尝试运行实时系统的所有复杂性,而且引出线是谋杀。

我们一直在研究所有这些因素,并且认为 NXP1758 系列是迄今为止最好的。第 1 步是准备好工具链,可能还有 FreeRTOS。

更多轴? #117

我还支持 Teensy 3 项目,主要是因为我很感兴趣将它用作新 RepRap 控制器的基础。将 grbl 移植到它上面似乎是这样做的良好开端,因此我也有兴趣帮助进行 ARM 移植。

如果一切都按照我的计划进行,我将在几周内获得几份用于容纳 teensy 和 pololu 步进驱动器的电路板的备用副本。如果有帮助,我很乐意发送其中一些…

更多轴? #117

我也在将 grbl 移植到 ARM,更准确地说是移植到 Cortex-M3 和 Cortex-M4F(基本上相同的代码使用不同的 -march 选项编译两次)。
使用的板(用于开发和原型制作)是 STM32VL-Discovery 和 STM32F-Discovery,两者的价格都大大低于 Arduino Uno。没有成本,也没有与工具链相关的问题,因为 GCC 已经瞄准 ARM 很长一段时间了——它只是工作。没有成本,也没有与调试相关的问题,因为我们在 Github 上有 texane 的 STLink,它可以很好地完成这项工作。没有成本,也没有与库相关的问题,因为我们有 libopencm3 用于所有特定于 CPU 的细节——而 libc 可以处理其余部分。
也许我是瞎子,但我真的看不出人们谈论 ARM 的所有痛苦是从哪里来的 :-)
当然,有更好和更差的选择,但多样性如此之高,你真的不必关心那些要价 10 美元的人或在他们给你看芯片之前要你签署保密协议。

事情仍在不断变化,最终产品设计可能最终会在“One Man Orchestra”解决方案中使用 ARM,并使用类似于 Olimex 的 STM32-H152 的电路板,或者它可能会沿着我目前正在开发的路线发展其中涉及使用 ATtinys 执行所有硬件低级任务,使用一个 ATmega328P(在 Pro Mini 上)执行管理、G 代码解析和数学运算。

更多轴? #117
成员

并不是说移植到 ARM 特别困难,但它更多的是
为任何人创建入门级 CNC 固件,风险很小并且
可行。几乎任何进入微控制器的人都有一个
Arduino 并将 Grbl 上传到它几乎没有风险,因为
如果用户发现 CNC 不适合他们,他们可以使用该板做许多其他事情。 据我所知,除了一些待定的次要功能
外,固件非常坚固。

如果我们开始为多个平台开发,那么
固件的质量可能会有所降低,这将需要更多的时间和
精力来确保每次更新后一切正常。此外,如果它开始
需要专门的/不成熟的硬件,那么它就会开始放弃
使用/试用 Grbl 的想法,而成本风险很小。如果我们这样做,那么我们将拥有
有限的高级用户群。

Simen 所说的和我支持的,在没有
通用的标准 ARM 板之前,没有太多理由去开发一个,至少对于
Grbl 的精神是什么。

我个人认为 Grbl 还有很多工作要做。我们还可以使用一些
循环来使 Grbl 更全面地用作 CNC
控制器,尤其是人们一直
在为它制作的一些很棒的 GUI。我认为在 Arduino 的限制范围内工作是值得的
,它迫使我们创建非常紧凑、模块化和
高效的代码,人们可以轻松地将其用作其他
应用程序的基础。

2012 年 9 月 16 日下午 3:37,Radu – Eosif Mihailescu <
notifications@github.com > 写道:

我也在将 grbl 移植到 ARM,更准确地说是移植到Cortex-M3 和 Cortex-M4F(基本上相同的代码使用 不同的 -march 选项
编译两次)。 使用的板(用于开发和原型制作)是 STM32VL-Discovery 和 STM32F-Discovery,两者的价格都大大低于 Arduino Uno。 没有成本,也没有与工具链相关的问题,因为 GCC 已经瞄准 ARM 很长一段时间了——它只是工作。没有 成本,也没有与调试相关的问题,因为我们 在 Github 上有 texane 的 STLink,它可以很好地完成这项工作。没有成本,也没有 与库相关的问题,因为我们有所有的 libopencm3

特定于 CPU 的——而 libc 可以处理其余的事情。
也许我是盲人,但我真的看不出人们
谈论的 ARM 的所有痛苦来自哪里 :-)
当然,有更好和更差的选择,但多样性是如此之
高,你真的没有关心那些要价 10 美元或
希望你在给你看芯片之前签署保密协议的人。

事情仍在不断变化,最终产品设计可能最终会在“One Man Orchestra”解决方案中使用
ARM,并使用类似于
Olimex 的 STM32-H152 的电路板,或者它可能会沿着我目前正在开发的路线
发展其中涉及使用 ATtinys 执行所有硬件低级任务,使用
一个 ATmega328P(在 Pro Mini 上)执行管理、G 代码解析和数学运算。


直接回复此电子邮件或在 GitHub 上查看它
https://github.com/ /issues/117 #issuecomment-8599935。

更多轴? #117

我已经关注了一段时间,我想插话。为什么不只是第 4 轴,现有硬件上的一些简单和基本的东西?它不一定是完美的,人们会找到解决问题的新方法。你可以建立一个只有 4 轴的传输……

更多轴? #117

或许:

#define MM_PER_INCH 25.4
#define X_STEPS_PER_INCH 6400
#define Y_STEPS_PER_INCH 20000
#define Z_STEPS_PER_INCH 42850
#define E_STEPS_PER_INCH 50.0

#define FAST_XY_FEEDRATE_INCH 50.0
#define FAST_Z_FEEDRATE_INCH 100.0
#define FAST_E_FEEDRATE_INCH 25.0

#define CURVE_SECTION_MM 0.5

// 限制

#define SENSORS_INVERTING 0

// 喷嘴加热器的电阻电流

#define HEATER_CURRENT 100

// 引脚 Mega2560

#define SERIAL_RX_PIN 0
#define SERIAL_TX_PIN 1

#define X_ENABLE_PIN 2
#define Y_ENABLE_PIN 3
#define Z_ENABLE_PIN 4
#define E_ENABLE_PIN 5
#define X_STEP_PIN 6
#define X_DIR_PIN 7
#define X_MIN_PIN 8
#define X_MAX_PIN 9
#define Y_STEP_PIN 10
#define Y_DIR_PIN 11
#define Y_MIN_PIN 12
#define Y_MAX_PIN 13
#define HEARTBEAT_PIN 14

喜欢 (0)