COREXY 跳过步骤 gremlin #385

推推 grbl 3年前 (2023-02-05) 411次浏览
关闭
crispy1066 打开了这个问题 2013 年 2 月 8 日 · 8条评论
关闭

COREXY 跳过步骤 gremlin#385

crispy1066 打开了这个问题 2013 年 2 月 8 日 · 8条评论

评论

COREXY 跳过步骤 gremlin #385

具有大量段的打印层(例如具有圆形横截面的多个对象),这些层的偏移量约为。每层 0.1mm,朝向 XY 原点。这是在电缆驱动的 h-bot 上启用 COREXY 的情况。众所周知,此问题也会影响 kamermaker。

广泛的测试证明这不是硬件问题 – 每层打印段较少的对象可以正常打印。在禁用 COREXY 的情况下,麻烦的打印结果也很好。改变电缆张力、电机电流和加速/加加速度设置没有任何区别。

在 IRC 上与 Evdz 讨论该问题后,我们同意 COREXY 功能应从 stepper.cpp 移至 motion_control.cpp。这有望纠正步骤错误并使其更易于调试。

COREXY 跳过步骤 gremlin #385
作者

我尝试过的简短测试日志在这里: http: //pastebin.com/7290NEbh

我目前的假设:
在绕着圆圈导航时的某个时刻,其中一个电机被命令朝错误的方向迈出一步或多步。在皮带驱动的机器人上,这将导致跳过步骤。在我的机器人上,电缆反而打滑了。但最终结果是一样的——每一层都非常轻微的错位。

COREXY 跳过步骤 gremlin #385
作者

Evdz,根据您对 M114 信息的请求…
之前:X:0.00Y:0.00Z:0.00E:0.00 计数 X:0.00Y:0.00Z:0.00
之后:X:0.00Y:200.00Z:26.00E:-4.00计数 X:0.00Y:200.00Z26.00
期间:X:98.27Y:156.76Z:15.75 计数 X:98.74Y:144.87Z:15.75

如果我在打印期间发出 M114,最后一个是典型的输出。坐标和计数不匹配。

我的开始 gcode 在打印开始之前使打印机归位,因此这些数字为 0。
我的结束 gcode 在打印完成后将打印头移动到 X=0 和 Y=200,并在缩回期间重置 E 计数。

COREXY 跳过步骤 gremlin #385
作者

这可能是完全错误的,但看看 motion_control 和 planner 中的代码,这对我来说似乎是有意义的……

在 planner.cpp 的第 546 行,有一段代码定义了每个电机需要移动的步数。我认为在这个块应该去之前:

#ifdef COREXY
// 这些方程遵循http://www.corexy.com/theory.html
上 dA 和 dB 方程的形式 block->steps_x = labs((target[X_AXIS]-position[X_AXIS]) + (目标[Y_AXIS]-位置[Y_AXIS]));
block->steps_y = labs((target[X_AXIS]-position[X_AXIS]) – (target[Y_AXIS]-position[Y_AXIS]));
#万一

#ifndef COREXY
// 这段代码与现在存在的代码没有变化
block->steps_x = labs(target[X_AXIS]-position[X_AXIS]);
block->steps_y = labs(目标[Y_AXIS]-位置[Y_AXIS]);
#万一

// 其他轴的其余“块”命令
block->steps_z = labs(target[Z_AXIS]-position[Z_AXIS]);
block->steps_e = labs(目标[E_AXIS]-位置[E_AXIS]);
… ETC

COREXY 跳过步骤 gremlin #385

我觉得你说得对。你有没有试过实施这个?我认为它也可以解决步进器启用问题。

不久之后在 planner.cpp(第 584 行)中:

//启用活动轴
if(block->steps_x != 0) enable_x();
如果(块->steps_y!= 0)enable_y();

由于将从 dA 和 dB 为 steps_x 和 steps_y 生成步骤,因此它应该启用两个步进器。

COREXY 跳过步骤 gremlin #385
作者

stepper.cpp 的 71-73。但仔细观察它似乎没有任何变化,但 git 已将其标记为更改。

我检查了 M119,所有的止动器都正确报告打开/关闭。我正在运行测试打印以验证运动学修复,但在完成之后我可以进一步研究停止问题。

COREXY 跳过步骤 gremlin #385

这个问题的拉取请求是否合并过?看来我应该能够在 KamerMaker 打印完那栋房子之前至少向 Marlin 提交至少一个 LCD 面板支持拉取请求。

COREXY 跳过步骤 gremlin #385
贡献者

看起来这个已经合并了。