注释
@109JB: 这篇文章很长,所以我可能遗漏了一些具体的点,但是是的,使用另一个电机绝对是一种进行主轴同步的方法。这个想法并不新鲜,但这个概念的主要问题是,每次需要进行螺纹操作时,您都必须拆下普通主轴并连接伺服/步进器。IMO,最好有一个主轴编码器,提供 Grbl 主轴角位置和速率。Grbl 只需要按时开始运动。另外,您的主轴电机通常更强大,并且应该提供足够的扭矩来通过外部电机进行螺纹操作。 |
我不是说在主轴上有 2 个电机,而是一个伺服电机。在 2 种模式下使用电机。第一种模式作为同步运动的伺服。在所有其他时间只是一个电机,但仍然使用伺服驱动器来控制它。Grbl 只需要知道将其作为与其他轴同步的伺服驱动器来驱动,或者在它被用作电机时仅向其发送适合转速的恒定脉冲流。 |
@109JB:啊,好吧,你想为电机主轴配备一个单独的闭环 MCU,输入是 Grbl 的步进脉冲。这是可行的。如果我记得,这是大多数专业 CNC 控制器在大型机器上使用的方法。虽然更昂贵,但这使主 CNC 控制器独立于各种伺服系统,其中每个伺服控制器专门针对其负责的电机进行调整。 闭环控制可能非常棘手,因为您必须对反馈回路进行数值调整以实现性能并避免数值谐波。这始终是一种平衡行为。在 AVR 上要求 Grbl 处理这个问题太多了,但我确信可以对单独的 Arduino Nano 进行编程来执行此操作。 长话短说,是的,你可以做到这一点。是的,这可能是为刚性攻丝等精密事物提供伺服/主轴同步支持的方式。至于用螺纹刀具进行普通螺纹加工,主轴编码器应该足够了。您需要做的就是按时开始运动。 |
闭环控制将完全由 Gecko 伺服驱动器处理。这是一种商用驱动器,可关闭驱动器内的伺服回路。Grbl 将主轴伺服视为与其他轴一样的另一个步进驱动电机 |
有没有做这件事?我正在购买一台需要 Windows 98 PC 的小型 CNC 车床。我想摆脱旧 PC 并使用 GRBL 运行它。我知道目前的车床在主轴上有一个编码器,因为它目前可以与旧的 windows 98 PC 螺纹连接。 谢谢! |
没有。我一直忙于其他事情,甚至没有机会看这个。项目太多。时间太少了。 |
我在主轴上放了一个 Nema23 (2 Nm) 步进器。使用杠杆,我可以在步进电机或原装主轴电机之间切换。这适用于螺纹加工,但是当加工较大的螺纹时,由于步进器的“小”扭矩,切割需要很小。 |
连续主轴操作:只需大约 5 美元,就可以获得一个以可编程速率和可编程占空比生成脉冲的模块。DPDT 开关将使用步进和方向引线选择 grbl 或模块控制。方向通常是硬连线的“向前”运动。假设您的步进器足够强大,可以在所需的速度下提供足够的扭矩 |
更多主轴控制思想:XY-LPWM |
您可以使用冷却液或雾针来控制(启用)主轴步进。 如果只是用于线程,为什么不使用grbl-L-mega或grblHAL |
谢谢,我试试看/mark |
109JB 评论 2015 年 3 月 14 日
我一直在考虑与车床操作有关的主轴同步缺失的问题,我想我至少对小型车床有一个想法。我有一台 9 x 20 车床,还有一个多余的直流电机,打算用于主轴驱动。如果我要在电机上添加一个编码器并使用 Gecko G320X 等伺服驱动器驱动它,GRBL 会将电机视为另一个步进/方向电机,如步进电机。所有编码器和伺服反馈控制都在 Gecko 驱动器内部。然后可以用同步带驱动将电机挂在主轴上,这样电机位置就可以与主轴位置相关联。由于 GRBL 仅为 3 轴,普通车床 X 轴和 Z 轴将占用两个可用轴,而第三个轴可用于通过 Gecko 驱动器控制主轴电机。由于电机将被视为另一个轴,因此可以进行协调运动,从而实现车削螺纹。问题是如何在 GRBL 中实现这一点。
例如对于车床,假设您将主轴设置为 Y 轴,距离为 1 英寸,对应于主轴的一转。G1 z-1 y10 的 G91 命令将给出每英寸 10 螺纹的移动类型。但这不是通常对车床螺纹进行编程的方式,并且不考虑非螺纹使用,您希望主轴以设定的转速连续运行。
这也可以以类似的方式应用于铣削主轴同步,允许刚性攻丝,但需要第四个“轴”。
我认为使用伺服驱动主轴可以提供一种结合主轴同步的方式,这种方式可能比在主轴上安装编码器和索引脉冲更容易,GRBL 必须监控和调整其他轴。主轴上的伺服驱动器会调整以跟上,而不是因为主轴速度波动而不得不让 GRBL 调整其他轴。
我认为应该可以让 GUI 界面使用 GRBL 处理大部分繁重的工作,只需通过跟踪发送给驱动程序的步进脉冲数来跟踪主轴位置。然后 gui 可以转换任何类型的罐头将循环螺纹加工成一系列 G1 协调运动指令。例如。对于这个 G33 线程代码片段:
G90(绝对距离模式)
G0 X1 Z0.1(快速定位)
S100 M3(开始主轴车削)
G33 Z-2 K0.125(将 Z 轴以每转 0.125 的速度移动到 -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。
只是想我会把它扔在那里作为实现主轴同步的一种可能更简单的方法。以上大部分内容只是在考虑这一点时漫无目的。这样的事情可能吗?