注释
将任务拆分为多个 MCU 会使您陷入同步的困境,因此除非您绝对不能以任何其他方式做到这一点,否则不要这样做。几美元就能让你拥有一个带有 FPU 的 ARM,以及 10 倍于 AVR 的性能和内存 |
@BassMatiFreecad Trinamic TMC429可能很有趣,但我不知道使用这种芯片会如何影响兔子洞的深度。或者如果它完全可用… |
同步:好点!我必须考虑一下。可以使用良好的石英振荡器和系统节拍来解决,分配给斜坡发生器以保持定时器同步。或者更好:驱动所有计时器的系统时钟。 TMC429:从单个定时器生成 3 个斜坡。这与我当时更喜欢的当前 Grbl 没有什么不同。没有同步问题,但只有 64 微步。不可扩展到超过 3 个轴。 TMC5160 https://www.trinamic.com/products/integrated-circuits/details/tmc5160/:具有 6 点斜坡发生器和外部 MOSFET 驱动器的单轴步进驱动器。漂亮的功能,但不能运行 S 加速曲线。但是原型设计和/或可行性研究的候选者。 |
再次同步:也许从中央 MCU 为所有轴生成 step/dir 信号并分发它们更容易……为此,我必须先查看 Grbl ARM 源代码,并了解它是如何工作的引擎盖。另一方面:如果可以上下调整系统时钟频率,例如由主轴控制,我们将具有螺纹攻丝和车床螺纹切削的同步功能…… 有人可以提供代码结构的简短概述吗?那真的会有很大帮助! |
@BassMatiFreecad 此描述可能正是您要查找的内容。 如果您指的是主处理器时钟,那么您不想调整系统时钟,IMO 很可能是一个额外的兔子洞,让您自己摆脱困境。步进器子系统当前由提供给相关定时器的时钟驱动。这可以是系统时钟的预分频版本,也可以由外部提供(从未见过)。如果在内部提供,那么您就不走运了,因为据我所知,这不可能以细粒度的方式进行调整。 主轴同步可以通过不同的方式实现,我目前正在修补使用 PID 循环来调整步进器段的时间,这用于车床螺纹。将步进电机用于主轴是另一种方法。 |
@terjeio:“系统时钟”是指系统生成的(其中“系统”是运动规划器 CPU)时钟信号,它驱动轴斜坡发生器上的所有计时器。当然,他们必须为此目的提供外部时钟输入。我确定我已经看到了(TI 控制器?)有时定时器被称为“事件计数器”,带有相关的比较/捕获单元。 所以这一带全是平原大草原,没有兔子洞。 带主轴步进器的车床螺纹:Youtube 上的老托尼就是这样做的。强烈推荐,看他总是很有趣!虽然他用的是Mach3… |
@BassMatiFreecad好吧,时钟命名术语是多种多样的——这就是我问的原因。 仅供参考,我使用过的大多数处理器(如果不是全部)都有可以在外部计时的定时器。 但是,我不太确定大草原上是否没有任何兔子洞 – 所以期待看到您对主轴同步的实施或想法。IMO 最好不需要步进主轴电机。我正在为我的车床使用 MSP432,并且可能愿意尝试你想出的任何东西,因为它必须与带索引脉冲的 120 PPR 编码器一起使用。 |
MSP432 听起来很熟悉,我应该在某个地方放一个。 对于主轴同步,第一个想法: 橙色:运动规划器 MCU 中的功能。 有两个轴时钟信号,#1是固定频率,#2是可变频率。#2频率由进入向上/向下缩放器的旋转编码器刻度决定——如果在数字域中完成,这将是概念中的一个棘手部分。关键字可能是“时钟合成器”…… 不确定是否真的需要 AxisClock1 … 比例因子决定了编码器刻度和线性轴刻度之间的比率。选择它是为了使结果成为所需的螺纹角度,而不管主轴速度的变化。我想,这就是机械车床的工作方式,只是频率上/下缩放器是一组齿轮组合在一起,使得主轴转速与 X 轴速度成固定关系。 |
顺便说一下:指向 Super-Gerbil 文档的链接确实帮了大忙。在 G 代码解释器的末尾是一个类似于“运动块队列”的东西。这将必须移动到轴控制器。 我猜这个队列也减轻了运动规划器的实时要求。虽然这个队列后面的一切都是“硬实时”,但我认为即使在“更高”的步进脉冲率下也很容易实现。 |
如果将运动块数据发送到所有轴控制器,则可以相当容易地将轴运动同步在一起。使用 bresenham,只有一个轴是“主”轴,所有其他轴都是该主轴的从属轴。随着主轴的每个脉冲输出,从轴可以读取该脉冲,并且在读取 N 个计数后,第一个从轴将步进,然后是下一个,依此类推。我永远无法克服的问题是主控(可以是任何轴)仍然必须通过所有相同的数学运算来确定其加速度、转弯和分段附件。所以这是可能的,但我真的找不到有价值的优势。 |
大家好!
经过一段时间寻找“完美”的 CNC 控制器板后,我决定 ARM 上的 Grbl 是可行的方法,但我并没有爱上特定的硬件。我已经阅读了第 67期的讨论,这引发了以下关于新项目的想法。核心问题是:
为每个轴分离 Grbl 运动规划和步进/方向/运动曲线生成是否可行,以便它们可以在不同(分离的)MCU 上运行?
核心思想是将多个廉价的机械可堆叠“Grbl 轴驱动器”连接到某种高速通信总线(例如 SPI),由 Grbl n 轴运动控制器驱动,如图 1 所示:
运动控制器(橙色)可能是“非实时”ARM,可能带有 FPU 和足够的 RAM 来完成工作,可能是 Teensy 4 中使用的 i.MX RT1050 或 i.MX RT1060。 – 单独使用,或作为 Arduino、RasPi 等的防护罩。
单轴运动配置文件控制器(绿色)可以是非常便宜、小巧但速度快的 ARM(或其他),负责生成无抖动的步进/方向脉冲定时,结合选择的步进驱动器 IC,集成或外部 MOSFET。与步进驱动器防护板不同,但增加了 MCU。
可以使用 FPGA 或 CPLD 代替 MCU,但正如您在此处的另一个问题中所述,这超出了 Grbl 的范围。该系统应该易于构建和编程。
模块级别上更完整的系统将如图 2 所示
应用处理器(Arduino、RasPi 等)提供前端、用户界面和连接(以太网、USB、WiFi),并充当 G 代码发送器(或文件提供器)。应用程序处理器不在本项目的范围之内。
运动规划器的唯一目的是规划轴的运动,作为高级命令发送到轴控制器。另一方面,如果安全地满足整个系统的实时约束,那么将前端在某种程度上集成到运动控制器中也不是不可能的。但是,如前所述,这超出了范围。
优点
○ 成本低:与大型一体式多层板相比,小尺寸 PCB 非常便宜(最好低于 20 美元,越低越好)。
○ 通过关注点分离实现模块化 ○ 易于
调试:运动规划器的输出可以路由到文件或 UART 而不是轴控制器。轴运动曲线生成器可以具有内置的自检功能。
○ 组合调试:使用两个SPI,可以在单个开发系统上运行和调试运动规划器和轮廓生成器软件。有助于查找通信问题。
○ 低 EMI 和高稳定性,因为高频信号被限制在轴驱动器上的一个小区域。
○ 轴数易于扩展(在运动规划软件的能力范围内)。用户可以从两个或三个开始,然后在需要时添加更多轴。
○ 驱动器功能(电压、电流、步进频率)可根据轴需求和/或用户预算进行调整。
○ 简单、干净的接线概念。
○ 清洁和分离步进驱动器的高电流路径。
○ 一切都可以与现有硬件(MCU 开发板、步进驱动器屏蔽)一起插入。
当然,也有一些…
缺点
○ 可能必须设计和制造 PCB 以使其对最终用户即插即用。应该没什么大问题。
风险
○ 缺乏 CNC 经验
○ 缺乏扎实的 G 代码知识
○ 缺乏关于 Grbl 内部工作原理的知识
○ 缺乏关于将处理器集成到 Arduino IDE 中的知识。
所以,我的问题是:我可以希望在这里得到一些支持吗?讨论一下就好了!
问候
BassMati