开源改变世界

PWM 主轴用 #196

推推 grbl 3年前 (2023-01-21) 83次浏览

关闭
ewidance 打开了这个问题 2013 年 3 月 8 日 · 18条评论
关闭

PWM 主轴用#196

ewidance 打开了这个问题 2013 年 3 月 8 日 · 18条评论

注释

PWM 主轴用 #196

我看到之前的一个请求没有得到很好的论证,因此关闭了。

有许多中国 400Hz 主轴(从 800W 到 2.5KW),配备 VFD 转换器。这些转换器可以接受设置速度和开/关:

  • RS485,带有特殊命令(应该可以通过引脚 12/13 上的软串口实现
  • 引脚 12(主轴)上的 10 Hz PWM。困难但并非不可能…
  • 模拟输出 0> 10V。可以用 10Hz PWM 生成(使用过滤硬件)

所有的东西都在转换器内完成,所以不需要“闭环”……只有 PWM。

M3 Fxxxx (xxx=speed..) 的 Gcode 支持也应该被实现。但是有足够的地方吗…

PWM 主轴用 #196

额外的想法:由于速度不必改变得太快,I2C DAC 应该足以驱动 VFD 上的 0-10V 输入。

所有形式的 PWM 都需要一个额外的定时器,IIRC,我们没有留下。

另外,我确定您指的是“S”而不是“F”(F 是进给,S 是速度);-)

PWM 主轴用 #196
成员

我不确定你所说的论据充分是什么意思。如果您谈论的是雕刻机和主轴同步线程,他的问题是将每个主轴脉冲与一定数量的步数同步。这很难,但是可以为您的特定机器执行您所说的内容。

所有需要做的就是在 spindle_control.c 中设置 Arduino (Timer1) 中的最后可用时间作为 CTC 倒数计时器。每当启用主轴时,计时器就会开始计时,以所需的速率倒计时。每次触发时,它都会翻转所需的主轴速率引脚(主轴方向对此可以正常工作)。你基本上有脉宽调制。唯一的问题是这不应该有高 PWM 频率。它可能会导致步进算法出现故障,正如 Simen 在尝试添加 PWM 主轴速度时提到的那样,但在您的 10Hz 下它应该没问题。

PWM 主轴用 #196
贡献者

这是我如何为 ppm 做的一个例子:https ://github.com/tmpvar/grbl/blob/ppm-spindle/spindle_control.c

PWM 主轴用 #196
成员

很酷@tmpvar. 当我有时间时,我必须将它添加到 Grbl 中,可能作为编译时选项。看起来很有效。

PWM 主轴用 #196
贡献者

@chamnit谢谢你!

我认为将常量移出#defines 会很有用,因为每个 ESC/电机组合的行为似乎都会发生变化。在说代码“好”之前,我在邮件中还有几个 ESC 需要测试。这里证明它在某种程度上以其当前形式起作用:http ://www.youtube.com/watch?v=9G4d3_g5bys

PWM 主轴用 #196

如果 timer1 可用并且主轴使能可以移动到输出比较引脚之一,(我相信 PB1/PB2)
它几乎没有开销,只需设置 pwm 即可运行

PWM 主轴用 #196
成员

我想尝试硬件 PWM 没有问题。我不知道 Simen 在尝试安装 PWM 以控制主轴速度时遇到的确切问题是什么。我很好奇这是否有效。我们必须按照你所说的那样交换一些接线,以适应你所说的引脚 9 和 10。我们可能需要保持对旧引出线的向后兼容性,并将其作为编译时选项执行,如果它有效.

PWM 主轴用 #196

很抱歉提出这个愚蠢的问题,但是您的工作是否有分支或使用 PWM 进行主轴的其他开发?

除了适用于 XYZ 轴的步进器之外,我们的工具头是一个便宜的小型 RC 伺服电机(沿轴移动螺栓),我很乐意重用一些比我自己的更熟练的代码 :)

PWM 主轴用 #196
成员

@maldex: 不确定你在和谁说话,但我会看看@tmpvarGrbl 的叉子。特别是他的主轴控制代码。安装用于使用 Timer1 进行主轴控制的硬件 PWM 在待办事项列表中。当我有时间的时候,我会把它安装到主仓库中,但鉴于在可预见的未来我的时间为零,我不会等我。

PWM 主轴用 #196

感谢您的提示,tmpvar 似乎使用了 0.7fork,我不确定他的意图到底是什么,但看起来也像方向引脚上的脉冲。我们的伺服电机需要 50hz 左右的 1ms – 2ms 脉冲(0 – 180° 运动)。因此,我想根据最后一个 M0/M3 命令设置 Timer1 来发送脉冲将适合我们的需要。因为我刚刚接触 C++,你能提示我在哪里最好地查看当前分支吗?

PWM 主轴用 #196
贡献者

@maldex我的意图是将 bldc 用于遥控直升机作为主轴。我的代码基于 master(在 0.9)并与 hobbyking esc 一起工作。

PWM 主轴用 #196

@tmpvar:听起来很有前途,因为我不仅是 CNC 菜鸟,而且还是 github 的新手,我想我看错地方了……你能快速发帖告诉我在哪里可以找到你的叉子吗?嘿酷,非常感谢

PWM 主轴用 #196
贡献者

@maldex分支的根可以在这里找到:https ://github.com/tmpvar/grbl/tree/ppm-spindle ,但大部分更改是在https://github.com/tmpvar/grbl/blob中完成的/ppm-主轴/主轴控制.c

PWM 主轴用 #196
贡献者

考虑了一会儿之后……是否值得实施 I2C 来扩展 GRBL 的功能?

我做了一个快速测试,我使用了我的 Arduino IDE 库并将 Wire 库包含在其中。它编译了它,使用的总空间刚好超过 29K。这只是一个编译和大小测试,但它似乎是可行的。

我最初的想法是有一个 ATTiny84 屏蔽,它通过 I2C 引脚(A5-6)连接到主 GRBL 板,然后从 GRBL 获取命令来控制主轴或您想要添加的任何设备。

阁楼有几个 PWM 引脚,可以很好地与 HobbyKing.com 的 ESC 一起使用(它们在 7-14V 上运行)http://www.hobbyking.com/hobbyking/store/uh_viewitem.asp?idproduct=3731&aff=784150

和像这样的主轴电机:http:
//www.hobbyking.com/hobbyking/store/uh_viewitem.asp? idproduct=15190&aff=784150

你们有什么感想?如果有人有兴趣,我可以在这样的盾牌上工作……(当我开始下一个项目时,我迟早要这样做)

PWM 主轴用 #196
贡献者

再加上 I2C,我认为您最多可以连接 32 个设备……;)

LOL 一个 30+ 核心 (MCU) GRBL 系统…?

PWM 主轴用 #196

如果您忽略供应商特定的地址保留,我认为最多 127 个。但 I2c 真的很花哨,因为已经有大量半导体实现了 DA 和 AD 以及其他电子转换器。请记住,不带信号放大器的 I2c 仅限于半米电缆,而不是更长。

PWM 主轴用 #196
成员

我认为这是值得的,尤其是当我们转向 ARM 时。从我的角度来看,唯一担心的是我们是否有足够的空间在 328p 上使用它。不仅是编译的 i2c 代码,而且与 Grbl 接口的支持代码将占用最多的空间。

我们可能需要开始考虑创建编译时选项的方法,以便为用户想要的特定内容腾出空间。这意味着如果有人不打算使用诸如硬限制或物理引出线之类的东西来启动周期,他们可以注释掉该选项并为 i2c 东西释放空间。像这样分解是一项艰巨的任务,但当事情继续发展时可能是必要的。我们希望尽可能地模块化代码。

PWM 主轴用 #196
贡献者

是的……模块是要走的路。

使用“接口”也很好。这样我们就可以设置基本方法
签名,例如:void SpindleSpeed(int speed)

界面的用户然后编写代码以适应他的主轴硬件
,我们只使用 grbl 中的方法来运行用户定义的代码。

这也会将一些负载转移给硬件设计人员来
为他们的硬件实现代码。
2013 年 5 月 19 日凌晨 3:48,“Sonny Jeon” notifications@github.com写道:

我认为这是值得的,尤其是当我们转向
ARM 时。从我的角度来看,唯一担心的是我们是否有足够的
空间在 328p 上使用它。不仅是
编译的 i2c 代码,而且与 Grbl 接口的支持代码将占用
最多的空间。

我们可能需要开始考虑创建编译时选项的方法,以便
为用户想要的特定内容腾出空间。这意味着如果
有人不打算使用诸如硬限制或物理
引出线之类的东西来启动周期,他们可以注释掉该选项并
为 i2c 东西释放空间。像这样分解是一项艰巨的
任务,但当事情继续发展时可能是必要的。我们希望尽可能地
模块化代码。


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

喜欢 (0)