注释
|
你说的是伺服电机。有许多伺服电机控制器在电机控制器处关闭编码器回路,并像步进器一样获取步进和方向信号。Gecko 伺服驱动器就是这种方式,并且可以像现在这样与 Grbl 一起正常工作。不过还有很多很多 |
|
仅仅因为某些事情可以在硬件中完成并不意味着它不应该在软件中完成,因为软件要便宜得多。 |
|
仅仅因为某些事情可以在软件中完成并不意味着它应该在软件中完成。 即使您将编码器反馈和 PID 回路合并到 Grbl 中,您仍然需要一个“驱动程序”来为电机供电,因为 Grbl 本身无法做到这一点。对于小型电机,一个简单的 L298 H 桥就像您的链接显示就足够了,但是当您使用更大的伺服系统时,L298 就无法切断它,这就是像 Geckos 这样的驱动器进来的地方(高达约 2 马力)。然后考虑,无论电机驱动如何,每个编码器都需要额外的 2 个输入引脚,每个 PID 回路和每个引脚中断都会占用其他任务的时间,例如运动规划、解析代码等。最重要的是,这是一个很大的问题与 step/dir 信号相比,控制伺服位置的不同任务。这将意味着大量的编码时间和测试。对于 328p 驱动的 Grbl 版本,有 3 个交易杀手。首先,没有足够的引脚可用。其次,没有足够的可用计算能力。第三,没有足够的可用程序内存。对于正在工作的 Arm 版本,这是可能的,但我个人认为在 Grbl 中这样做并没有真正的好处。 那么到底哪个便宜呢?花所有时间在 Grbl 中实施是否更便宜,或者只花几美元购买预制外部驱动器或自己制作一个更好的途径。您发布的链接是针对基于 arduino 的外部伺服控制的,根据描述,部件(不包括电机和编码器)每轴不到 5 美元,即使合并到 Grbl 中也必须花费 2 美元。因此,我们谈论的是外部驱动器每轴 3 美元左右,或 3 轴机器 9 美元。如果您算上在 Grbl 中执行此操作所需的时间,每小时 0.10 美元以上,我会说您链接的外部驱动器的价格为 9 美元,是最便宜的路线。 是的,在 Grbl 内闭环进行伺服控制会很好。尽管 Arm 版本可以执行此操作,但我个人更愿意看到在此之前在 Grbl 中实现许多其他功能。例如:主轴同步、间隙补偿、固定循环实施、刀具半径补偿、独立操作(即:显示器和 SD 卡)、更好的激光支持、更多标准 g 代码的实施等等。如果我负责 Grbl 开发,我会把它添加到长期列表中,但它会远远低于许多其他东西。 |
|
@109JB: 同意。 |
|
那么这个讨论是否意味着在 grbl 中不需要支持这个的代码?或者只是它不适合 328? o-drive 是一个“廉价”板的示例,它可以支持 KW 级 BLDC 电机/编码器(包括电机驱动器)并将它们作为 step-dir 接口呈现,但两个电机的价格 > 100 美元。 我可以很容易地理解它不适合 328 的论点,但是随着 ARM 选项变得越来越多,您是否愿意添加这种支持? 在 grbl 内部执行此操作而不是模拟步进器的一个优点是系统将能够检测到它没有跟上所需的位置/加速度,并且能够进行调整以进行补偿(或向用户返回错误消息)而不是一刀切错。 获得反馈的能力开辟了新的可能性。 |
|
@davidelang: 我同意。 |
|
@davidelang:伺服/闭环支持一直在长期待办事项列表中。我最近所做的大部分工作是分解和重构代码,以便其他贡献者可以更轻松地添加内容,而不会破坏当前紧密交织的代码(这是使其适合并有效运行所必需的在 328p 上)。转到 ARM 可以让您对此类事情采取一些代码效率惩罚。328p 对 Grbl 来说还不够快。它能做到这一点真是一个奇迹。 |
|
@chamnit谢谢,我认为它在您的长期列表中,但我不确定回复的方式。 我同意 328p 的限制。在机器的情况下@CptanPanic 我正在看,它限制在 ~40ipm,现在使用 arduino 作为控制器,但没有加速计划。我们希望能够为这个项目利用 grbl 的功能,但它需要伺服支持(然后还需要一些运动学变化)。 我热切期待 ARM 选项可用。使用 highfive 还是由于与移动到 ARM 板相同的问题? 是否有 grbl 开发人员参与的“错误赏金”类型的系统,我可以使用它来鼓励开发特定功能? |
|
事实是,使用廉价的微处理器更容易像使用手臂一样制作闭环直流电机。存在一些具有 3 个正交输入的微处理器,放宽了对实时的需求,Microchip(Atmel)具有 M4 内核,Ti 具有 Arm9 芯片。否则便宜的 avr 可以处理具有 100khz 脉冲和 5000 ppr 编码器的单轴。这是 62.5 RPS 最大值(200 步,相当于 8 倍微步)。但是有两个问题。直流电机需要不同的加速曲线。如果任何电机触发 ADC 电流传感器限制或误差太大,则必须进一步降低速度。分布式系统的要求是2到10ms,在grbl上,不要删除step/dir的代码,而是使用全局步进位置计数器进行闭环pid,mcu封装通常有很多引脚。 2018-04- 25 23:23 GMT+02:00,全桑尼 <
|
|
同意应用程序 ARM 很难实现闭环的实时需求。特别适用于多轴等并行计算任务。然而,有很多硬件解决方案可以将正交输出馈送到硬件计数器,这将使子采样成为一种可行的方法。不过,这会增加每轴的一些成本。 |
|
grbl 是一个实时应用程序,它在裸机上运行,它与您所获得的一样实时:-) 如果它延迟并在发送脉冲的时间上关闭,它(充其量)会使机器颤抖,并且可能使其跳过跳跃步骤。 我不清楚运行 PID 循环是否会更糟。根据速度,您实际上运行循环的频率可能比您想象的要低得多。您必须确保检测到编码器脉冲“足够快”,但“足够快”是在下一个编码器脉冲进入之前,以及在您根据该脉冲做出决定之前(尽管,这取决于您瞄准的分辨率因为,这可能无关紧要) 这个库 ( https://www.pjrc.com/teensy/td_libs_Encoder.html ) 以相当高的速率很好地处理读取编码器。 在现有的马斯洛代码中,它以 20 rpm 的速度处理两个 8K 脉冲/转的电机,每 50 毫秒左右运行一次 PID 环路以调整速度。我们没有看到由错过的脉冲引起的各种错误。 现在,这还没有加速计划等,但它是一个可以在 8MHz arduino 上完成的真实示例。 |
|
无意开始争论…… |
|
我应该在 144 引脚设备上为 ATSAM4E16E 配备 6 轴控制器,该设备来自 0.9 代码库,该代码库源自斜坡代码库,其中前 3 个电机可以由伺服器或步进器驱动。使用 atmel eeprom 仿真库和 arduino 后端 (CMSIS) 编译。100pin 设备只允许连接一个编码器,144 pin 允许连接 3 个编码器。没有 USB 或以太网连接,因为我使用的是隔离的 rs232。只是最低限度的添加,例如额外的 io 引脚,支持外部 i2c attiny(45 或 85)用作 G54 的 pwm 和 eeprom 存储以及外部 wdt 电路。2018-04-26 11:11 GMT+02:00,aprospero <notifications@github.com>:
|
|
我认为没有人说在 Grbl 中拥有闭环伺服功能不是很好。我知道您对此有强烈的愿望,但没有多少人这样做,尤其是考虑到有低成本的硬件解决方法。在我看来,功能的优先级应该放在最有利于大多数用户的功能上,以及那些没有可接受的变通方法的功能上。我个人的看法是,Grbl 做得很好,无论是它的本质还是它的目的。增加功能方面的改变是好的、预期的和受欢迎的,但需要根据本质上的成本效益关系进行权衡。如果仅满足少数用户的成本是很多小时,尤其是当存在替代方法时,那么该特定功能可能不是一个好主意。 至于位置跟随误差跟踪,允许控制器 (Grbl) 在命令位置偏离更允许的情况下停止运动,即使使用外部硬件和 Grbl 的单个数字输入也可以轻松实现。大多数商用外部伺服驱动器都具有内部跟随误差跟踪功能,并且能够向控制它的任何系统发送错误/故障信号。有时伺服驱动器上的这个引脚被连接起来,有时没有。如果连接上,运动控制软件可以在任何驱动器发送错误信号时关闭所有轴上的运动。Grbl 现在基本上可以做到这一点,并且已经讨论过了。驱动器的错误输出可以发送到 arduino 上的复位引脚或进给保持引脚以停止运动。 我使用安装在双轴步进电机和独立 Arduino 上的旋转编码器在我的步进驱动机器上进行了自我测试。单独的 arduino 使用一个中断来嗅探来自 Grbl 的步进脉冲,一个数字引脚从 Grbl 获取方向信息,第二个中断和一个用于编码器的数字引脚。当嗅探到步进脉冲时,轮询方向引脚并且内部“步进计数”变量适当增加。编码器中断导致类似的“编码器计数”变量递增。任何时候中断都会触发比较例程,将步数与编码器计数进行比较,同时考虑编码器 PPR 和步进器微步,以查看电机是否偏离指令超过一定数量。测试进行得很顺利,我认为一个轴的成本约为 15 美元,包括编码器和 Arduino 的价格。只要有时间,我就计划使用 Grbl 的复位引脚在我的机器上完全实现它。这是在 Grbl 内部拥有的东西会很好,但我现在绝对不会要求它,因为其他功能对我自己和其他人更有好处。 话虽如此,Grbl 是开源的,许多人出于自己的愿望和目的对 Grbl 进行了分叉。其中一些已经回到了 Grbl 核心。如果我没记错的话,coreXY 运动学、伺服控制(模型 RC 伺服系统)和一堆激光的东西就是这样开始的。 |
|
我一直在这里推动的原因不是要求核心团队实现这个(如果你这样做会很棒),而是要了解反对这个功能的阻力是成本/收益/太忙还是如果它是“我们认为这个特性不符合项目的目标,并且会拒绝实现它的 PR” 一些早期的回复似乎暗示您根本不需要该功能。想要它,但它的优先级不够高,无法出现在任何人的待办事项清单上,这是非常不同的事情。 是的,我非常想要它,但不幸的是我没有时间(并且可能没有技能)自己实施它,这就是为什么我询问了“漏洞赏金”类型的计划,我可以鼓励人们花时间在带现金的功能。我宁愿付钱给已经参与项目的人,而不是仅仅去外部错误赏金网站,因为已经参与项目的人更有可能得到其他人可以接受的结果项目(这是奖励已经做出贡献的人的一种方式) 感谢您花时间解释您的立场,我期待 ARM 分支稳定下来,因为这将使实现这些新功能中的许多变得更加容易。 |
|
我已经在我的 grbl 的 STM32F4 端口上把它一起破解了,尽管我还没有试过,实际的机器只是桌子上的电机。GRBL 像正常一样运行,但不会切换任何引脚,它只是为每个轴维护一个位置变量。每个轴的 PID 循环使用定时器硬件正交解码跟踪位置 |
|
@aprospero它不在 github 上,我只得到了两个带编码器的电机在桌子上运行 |
|
@davidelang我看看能不能把它从泥土帝国里挖出来 |
|
@langwadt你有没有成功地挖掘代码? |


我想将 grbl 用于一个 cnc 项目,该项目使用带编码器的直流电机而不是步进电机。首先你认为这是可能的,如果是的话,这会有多困难?可能已经有一些 arduino 库可以实现这种闭环操作,例如https://github.com/misan/dcservo但我不确定它是否可以作为一个库等使用,但也许可以使用其中的一些代码。我也许可以做这个开发,所以让我知道。