1. 主页
  2. 文档
  3. ESP32_GRBL文档
  4. 基础运动学

基础运动学

基础运动学

概述

Grbl_ESP32 支持线(G0,G1)和弧(G2,G3)的 gcode,但实际上,Grbl_ESP32 用很多非常短的线段代替弧来生成弧。许多 CAM 程序做同样的事情。这是完全可以接受的,因为规划器非常高效,并且此方法的默认公差为 0.002 毫米。

基本运动学使用相同的原理从默认笛卡尔坐标系更改为机器的系统要求。它分解的动作足够小,以至于看不到非线性影响。

例子

极地过山车就是一个很好的例子。它使用一根直线运动轴和一根旋转运动轴。查看polar_coaster.h机器定义文件。

执行

在普通函数前面放置了一个额外的函数来画一条线。它寻找#define KINEMATICS。如果没有定义,就会调用普通的线路函数。如果定义了,它会调用一个名为inverse_kinematics(…)的函数。该文件必须由用户添加。它会将那条线分成许多更小的线,将它们转换为新的坐标系并调用mc_line(…)函数

处理进给率

当您转换到新系统时,该工具仍在真实世界 XYZ 中移动通过材料,无论实现这一点所需的运动学如何。转换后的线的总步数中的距离可能与原始线的步数不同。为了对此进行补偿,您应该计算这两个距离并将该比率应用于原始进给率。

位置报告

通常在新系统中报告位置。例如,在极坐标机器上,它将报告当前的半径和度数。这可能会让一些人感到困惑。如果他们将其发送到 X10、Y10,它将报告 X14.14 Y 45。为了解决这个问题,可以添加正向运动学功能。放入您的机器定义文件并在放置反向运动学函数的同一文件中#define FWD_KINEMATICS_REPORTING定义一个函数。有关示例,void forward_kinematics(float *position)请参见polar_coaster.cpp 。这目前仅适用于 WPos 报告。设置 $10=2 以获得该报告模式。

核心XY

基础运动学

CoreXY 是一​​种机器,其中 2 个电机协作在 XY 平面上产生运动。这样做通常是为了简化机器,并且可以将重型电机从运动部件上移开以提高性能。

传统的 Grbl 将此内置到主代码中。它这样做是因为它是它支持的唯一奇异运动类型,而 CoreXY 的实现相对简单。当 Grbl_ESP32 添加了添加任何类型运动学的功能时,在主代码中保留一个是没有意义的。

限制

  • 只有 XY 并且可以使用 CoreXY
  • 最多 3 个轴(无 ABC 轴)
  • 您不能在一个归位循环中放置多个轴
  • 您不能有任何双电机(联动)轴。

机器定义

将以下行添加到您的机器定义中

#define CUSTOM_CODE_FILENAME    "../Custom/CoreXY.cpp"

#define USE_KINEMATICS      // there are kinematic equations for this machine
#define USE_FWD_KINEMATICS  // report in cartesian
#define USE_MACHINE_INIT    // There is some custom initialization for this machine
#define USE_CUSTOM_HOMING

如果您使用的是 midTbot 样式的机器,也请添加此行。

#define MIDTBOT             // applies the geometry correction to the kinematics 

设置电机

CoreXY 协调 2 个电机以在 XY 方向移动末端执行器。即使仅在 X 方向上移动也需要两个电机都移动。这是通过一些运动学方程式完成的。在内部 Grbl_ESP32 将诸如分辨率和方向之类的东西应用于各个电机。

如果需要更正方向,您需要牢记这一点。应遵循以下过程以使方向正常工作。

完全构建 XY 组件。用手固定一个电机不动,用手顺时针方向转动另一个电机。找到使末端执行器同时沿正 X 和正 Y 方向移动而另一个保持不动的电机。该电机将连接到控制器上的 X 电机驱动器。另一个将连接到控制器上的 Y 电机。

下一步是检查电机是否在正确的方向上移动。用?检查当前模式 命令。如果它处于警报模式,请通过发送$X将其清除。然后发送G91G0。这将使 Grbl 进入增量模式,因此很容易移动。发送$Stepper/DirInvert=清除任何方向反转。

检查 X 电机。

发送X5Y5。X 电机应顺时针旋转,末端执行器应沿正 X 和 Y 方向移动。如果需要,您可以多次执行此操作。如果它没有朝正确的方向移动,请发送$Stepper/DirInvert=X。这应该反转 X 轴。再次发送 X5Y5 进行测试。电机和轴不应朝正确的方向移动。

检查 Y 电机。

发送X5Y-5。Y 电机应顺时针旋转。如果它没有将 Y 轴添加到$Stepper/DirInvert=。因此,如果两者都需要反转或=Y仅更改 Y,则为=XY 。

这篇文章对您有用吗?

我们要如何帮助您?