开源改变世界

COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704

推推 grbl 2年前 (2023-01-22) 131次浏览

对话

COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704

在 COREXY 模式下,X 轴上的移动仅显示与?命令一起显示的好位置。
但是 Y 轴上的简单移动不会在 Y 轴上显示好的数字。也改变 Z 轴的值……
这工作正常。在 X、Y 和 Z 方向上进行测试。

COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704
成员

感谢您的错误修复。我将在今天晚些时候的下一次推送中手动将其添加到边缘分支。

COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704 chamnit 关闭了这个 2015 年 5 月 24 日
COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704
作者

我的代码中有一些铅:请使用
[B_MOTOR] - steps[A_MOTOR]更正 Y 轴的符号

COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704
成员

根据 CoreXY 公式,方程是正确的。请确保您的电机按照 corexy 图所示的正确方向旋转。

COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704
作者

好吧,如果没有这个修正,当G0X0Y40
我有一个 put a< Idle,MPos:0.000,-40.000,0.000,WPos:0.000,-40.000,0.000 >但真正的移动似乎是正确的(motor_A 和 motor_B 以相反的方向旋转)

请原谅我的英语:我是法国人…

COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704
成员

@phd0: 你有没有在 Grbl 的设置中反转任何步进方向?

COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704
作者

否:DEFAULTS_GENERIC配置;仅更改$100..$132参数的数量

COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704
成员

行。我认为其他地方有问题。您可以尝试将 planner.c 的第 280-281 行替换为:

    block->steps[A_MOTOR] = labs((target_steps[X_AXIS]-pl.position[X_AXIS]) + (target_steps[Y_AXIS]-pl.position[Y_AXIS]));
    block->steps[B_MOTOR] = labs((target_steps[X_AXIS]-pl.position[X_AXIS]) - (target_steps[Y_AXIS]-pl.position[Y_AXIS]));

和 planner.c 第 295-297 行:

        delta_mm = ((target_steps[X_AXIS]-pl.position[X_AXIS]) + (target_steps[Y_AXIS]-pl.position[Y_AXIS]))/settings.steps_per_mm[idx];
      } else if (idx == B_MOTOR) {
        delta_mm = ((target_steps[X_AXIS]-pl.position[X_AXIS]) - (target_steps[Y_AXIS]-pl.position[Y_AXIS]))/settings.steps_per_mm[idx];
COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704
作者

是的!
在 Y 移动中与良好的电机转动正常工作,并且在 G0Y40 命令中 Y 轴为正

COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704
成员

伟大的!感谢您检查。如果您有任何其他 CoreXY 问题,请告诉我。我没有一台机器来测试它,也没有收到任何其他 CoreXY 用户关于它如何工作的反馈。

COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704
作者

planner.c 第420-436行也有一些变化;它似乎有与system.c相同的错误,但我仍然没有看到任何错误的工作

void plan_sync_position()
{
  // TODO: For motor configurations not in the same coordinate frame as the machine position,
  // this function needs to be updated to accomodate the difference. 
  uint8_t idx;
  for (idx=0; idx<N_AXIS; idx++) {
    pl.position[idx] = sys.position[idx];
    #ifdef COREXY
     if (idx==A_MOTOR) { 
        pl.position[idx] = (sys.position[A_MOTOR] + sys.position[B_MOTOR])/2;
     } 
     if (idx==B_MOTOR) { 
        pl.position[idx] = (sys.position[A_MOTOR] - sys.position[B_MOTOR])/2;
     }
    #endif
  }
}
免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

成功合并此拉取请求可能会关闭这些问题。

还没有

2名参加者
COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704COREXY:对显示函数 system_convert_axis_steps_to_mpos 的修正 #704

喜欢 (0)