Contact me: hankecnc@gmail.com

主轴控制问题 #624

推推 grbl 3年前 (2023-01-22) 114次浏览

打开
109JB 开了这个issue 2015 年 3 月 14 日 · 11 条评论
打开

主轴控制问题#624

109JB 开了这个issue 2015 年 3 月 14 日 · 11 条评论

注释

主轴控制问题 #624

我一直在考虑缺乏主轴同步的问题,因为它与车床操作有关,我想我至少对小型车床有一个想法。我有一个 9 x 20 车床,我还有一个多余的直流电机,我打算将其用于主轴驱动。如果我要在电机上添加一个编码器并使用 Gecko G320X 等伺服驱动器驱动它,GRBL 会将电机视为另一个步进/方向电机,如步进电机。所有的编码器和伺服反馈控制都在 Gecko 驱动器内部。然后可以使用同步带驱动将电机挂到主轴上,以便电机位置可以与主轴位置相关联。由于 GRBL 只有 3 轴,普通车床的 X 轴和 Z 轴将占用两个可用轴,留下第三个可用轴通过 Gecko 驱动器控制主轴电机。由于电机将被视为只是另一个轴,因此可以进行协调运动,从而允许车床螺纹加工。问题是如何在 GRBL 中实现这一点。

例如对于车床,假设您将主轴设置为 Y 轴,距离为 1 英寸,对应于主轴旋转一圈。G1 z-1 y10 的 G91 命令将提供每英寸 10 个螺纹的移动类型。但这不是车床螺纹通常编程的方式,并且不考虑您希望主轴以设定的 rpm 连续运行的非螺纹使用。

这也可以以类似的方式应用于铣削主轴同步,允许刚性攻丝,但需要第四个“轴”。

我认为使用伺服驱动主轴可以提供一种方式来整合主轴同步,这可能比将编码器和索引脉冲安装到主轴更容易,GRBL 必须监控和调整其他轴。主轴上的伺服驱动器会进行调整以跟上速度,而不是由于主轴速度波动而必须让 GRBL 调整其他轴。

我认为应该可以让 GUI 界面处理 GRBL 的大部分繁重工作,只需通过跟踪发送给驱动程序的步进脉冲数来跟踪主轴位置。然后,GUI 可以转换任何类型的罐装将螺纹循环转化为一系列 G1 协调运动命令。例如。对于这个 G33 线程代码片段:

G90(绝对距离模式)
G0 X1 Z0.1(快速到位)
S100 M3(开始主轴车削)
G33 Z-2 K0.125(以每转 0.125 的速度将 Z 轴移动到 -2)
G0 X1.25 (快速移动工具离开工作)
Z0.1 (快速移动到起始 Z 位置)
M2 (结束程序)

gui 可以很容易地计算出 Z 轴必须总共移动 2.1 英寸,并且 K 值为 0.125,则主轴需要旋转 2.1/0.125=16.8 圈。如果设置为 1 单位 = 1 转,要从主轴中获得 300 rpm 的转速,发送到 GRBL 的进给率必须考虑 Z 轴行程。因此,发送到 GRBL 的进给率为 (300/16.8)*(16.8^2_2.1^2)^0.5=302.33 IPM,螺纹将被切割。GRBL 只会看到 G1 F302 Z-2 Y16.8,其中 Y 是主轴伺服。我使用 G33 是因为它易于说明。对于此示例,您必须在行程结束时提供螺纹退刀槽,因为在此示例中主轴将在切割结束时停止。

我唯一不确定的是,对于非螺纹命令,您将如何保持主轴转动。也许是一个简单的二进制变量,grbl 使用它来了解当时的意图是否是同步运动。或者在 GRBL 中实现 G33,它与 G01 完全相同,只是使用它告诉 GRBL 将 M3/M4 SXXX 命令转换为同步运动。然后,GUI 可以通过将 G76 命令转换为 GRBL 处理的一系列 G01、G00 和 G33 命令来处理其他固定循环,例如 G76。

只是想我会把它扔在那里作为实现主轴同步的可能更简单的方法。上面的大部分内容只是在考虑这个问题时漫无边际。这样的事情可能吗?

主轴控制问题 #624
成员

@109JB: 帖子很长,所以我可能漏掉了一些具体的要点,但是,是的,使用另一个电机绝对是一种实现主轴同步的方法。这个想法并不新鲜,但这个概念的主要问题是每次需要进行螺纹操作时都必须拆下普通主轴并连接伺服/步进器。IMO,最好有一个主轴编码器,它可以为 Grbl 提供主轴角位置和速率。Grbl 只需要按时开始运动。另外,您的主轴电机通常更强大,应该提供足够的扭矩来通过外部电机进行螺纹操作。

主轴控制问题 #624
作者

我不是在谈论主轴上有 2 个电机,而是一个伺服电机。在 2 种模式下使用电机。第一种模式作为同步运动的伺服。在所有其他时候只是一个电机,但仍然使用伺服驱动器来控制它。Grbl 只需要知道将其作为与其他轴同步的伺服驱动器来驱动,或者仅在将其用作电机时向其发送适合 rpm 的恒定脉冲流。

主轴控制问题 #624
成员

@109JB:好的,你想要一个单独的闭环 MCU 用于电机主轴,输入是 Grbl 的步进脉冲。那是可行的。如果我还记得的话,这是大多数专业 CNC 控制器在其大型机器上使用的方法。虽然成本更高,但这使主 CNC 控制器独立于各种伺服系统,其中每个伺服控制器都专门针对它负责的电机进行了调整。

闭环控制可能非常棘手,因为您必须对反馈回路进行数值调整以提高性能并避免数值谐波。这始终是一种平衡行为。要求 Grbl 处理这个在 AVR 上太过分了,但我确信可以编程一个单独的 Arduino Nano 来做这个。

长话短说,是的,你可以做到这一点。是的,这可能是对刚性攻丝等精密事物进行伺服/主轴同步支持的方式。至于使用螺纹刀具的普通螺纹加工,主轴编码器就足够了。您需要做的就是按时开始动作。

主轴控制问题 #624
作者

闭环控制将完全由 Gecko 伺服驱动器处理。这是一种可在驱动器内关闭伺服环路的市售驱动器。Grbl 会将主轴伺服视为与其他轴一样只是另一个步进驱动电机

主轴控制问题 #624

对此做了什么吗?我得到一台需要 Windows 98 PC 的小型 CNC 车床。我想摆脱旧 PC 并使用 GRBL 运行它。我知道目前的车床在主轴上有一个编码器,因为它目前可以用旧的 windows 98 PC 进行螺纹加工。

谢谢!
蒂姆

主轴控制问题 #624
作者

没有。一直在忙别的事情,连这个都没机会看。项目太多。时间太少了。

主轴控制问题 #624

我在主轴上放了一个 Nema23 (2 Nm) 步进器。使用杠杆,我可以在步进电机或原装主轴电机之间切换。这适用于螺纹,但在螺纹较大时,由于步进器的“小”扭矩,切口需要很小。
这周我在 42CrMo4 钢上做了一个 M33 螺纹,用于制作车床夹头支架。我使用“恒定体积切割”,从 0.18 毫米开始,以 0.015 毫米步长结束。它可能会切得更深一点,但我不想因为没有材料可以再试一次而损坏胎面。
如果我再做一次,我会选择更大的步进器 (4Nm),但只要踩踏是数控控制的,谁愿意等更长的时间。

主轴控制问题 #624

连续主轴运行:只需大约 5 美元,就可以获得一个以可编程速率和可编程占空比生成脉冲的模块。DPDT 开关将选择 grbl 或模块控制,使用步进和方向引线。方向通常是硬连线的“向前”运动。假设您的步进器足够坚固,能够在所需速度下提供足够的扭矩
(请记住,扭矩会随着速度迅速下降!),不需要第二个电机。此外,步进驱动器上的 24 或 36 伏电压将在步进线圈中提供更快的电流积累,并允许更高的速度扭矩。
顺便说一句,在我的第一次测试中,我遇到了 Z(纵向/托架)轴暂停和重新通电的问题。现在,我认为这是一个热切断问题,所以今天的任务是将电流调低一点,并安装一个风扇。此外,我运行
了所有 3 个微步进跳线,其中全步进将提供优于 0.1 毫米的分辨率,但可能会使用 1/2 步进以获得平滑
度。此外,在 1/32 微步时,任何时候的瞬时电流 TOTAL 都几乎是非微步的 1.5 倍。

主轴控制问题 #624

更多主轴控制想法:XY-LPWM
这是一个 5 美元的模块,具有可编程(按钮)速率和占空比,适合用作
控制步进电机驱动器的变速信号。它还具有 tx/rx 串行功能,使用 4 个字符的 ASCII 字来设置每个(速率、占空比)参数。 我的想法是在使用脉冲发生器驱动车床主轴的
同时,为 X 和 Y(托架和横向滑动)轴提供 GRBL Gcode 。
(类似于 6600 cnc 驱动器从发电机或
GRBL/CNC 防护罩获取步进信号,用一个简单的开关来选择哪个。)
对于螺纹加工,Z 轴(主轴)本质上与每个 X 轴同步纵向传球。对于非
螺纹切削,最好使用独立主轴。
我想添加一个 GRBL 函数,也许使用 M 代码,以启用主轴步进驱动器,
并将串行信号发送到脉冲发生器。指定转速。对于螺纹,我将主轴设置为 1 圈 = 1 毫米,因此速度
与毫米/分钟成正比。显然,需要一些技巧来反映加速时间,但基本的
Gcode pass 可以很容易地编程。
我无法创建将串行命令输出添加到 GRBL 的代码,因此希望得到一些
有关编程或指出问题区域的帮助或建议。非常感谢!

主轴控制问题 #624

您可以使用冷却剂或喷雾针来控制(启用)主轴步进器。

如果它只是用于线程,为什么不使用grbl-L-megagrblHAL

主轴控制问题 #624

谢谢,我试试看/mark

喜欢 (0)