开源改变世界

M206 和床身自动调平 / G92 #831

推推 grbl 3年前 (2023-02-06) 235次浏览
关闭
DerSchultze 打开了这个问题 2014 年 3 月 12 日 · 6条评论
关闭

M206 和床身自动调平 / G92#831

DerSchultze 打开了这个问题 2014 年 3 月 12 日 · 6条评论

评论

M206 和床身自动调平 / G92 #831
贡献者

不知道这是否按预期工作,和/或这是否是两个问题,但这对我来说似乎不合逻辑,并且都与如何使用 M206 的值有关。

启用自动床调平时,不使用 M206 存储的端点偏移,因此不能使用 M206 微调 Z 高度。

但是,当发出 G92 时,通过 M206 输入的停止偏移量将添加到值中。
因此,如果您发送以下内容:
M206 Z0.5
G92 Z0

M114 将报告 Z 位置为 0.5

M206 和床身自动调平 / G92 #831

我同意 M206 似乎不会影响 Z 位置
我有一个类似的偏移问题,因为 CURA 使用 G29 Zx.xx 来允许较小的 z 偏移。
然而,马林不支持这一点。
但是,通过在 Marlin_Main 的 G29 命令中插入一些代码,我已经通过在 G29 命令中输入来修改 z 探头高度。

  • 在以下代码之后插入额外代码(大约第 1550 行,您的 marlin 主代码中可能有所不同)
    (原始代码)
    //以下代码更正了 z 探针位置和热端尖端位置的 Z 高度差异。
    //归位的Z高度由Z-Probe测量,但探针离热端很远。
    // 当床不平时,必须校正此高度。
    real_z = float(st_get_position(Z_AXIS))/axis_steps_per_unit[Z_AXIS]; //得到真正的Z(因为自动调平已经在校正平面)
    x_tmp = current_position[X_AXIS] + X_PROBE_OFFSET_FROM_EXTRUDER;
    y_tmp = current_position[Y_AXIS] + Y_PROBE_OFFSET_FROM_EXTRUDER;
    z_tmp = current_position[Z_AXIS];

        apply_rotation_xyz(plan_bed_level_matrix, x_tmp, y_tmp, z_tmp);         //Apply the correction sending the probe offset
    

(添加代码)
//测试将 Z 偏移添加到 G29 //dagnall53
if(code_seen(axis_codes[Z_AXIS])) {
if(code_value_long() != 0) {
current_position[Z_AXIS]=code_value()+current_position[Z_AXIS] ;
}
}
//测试
(结束添加代码)
(原始代码继续)
current_position[Z_AXIS] = z_tmp – real_z + current_position[Z_AXIS]; //差异被添加到当前位置并发送给规划器。
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
//LCD
LCD_MESSAGEPGM(“BED PROBE COMPLETED”);
}
休息;

case 30: // G30 Single Z Probe

希望这很清楚?
达格纳尔

M206 和床身自动调平 / G92 #831
贡献者作者

将 Z 偏移作为选项添加到 G29 可能很方便,但它实际上并不能解决未使用的 M206 值。

我昨天在查看代码,它看起来像 G28 没有启用床调平,使用 M206 的值。

M206 和床身自动调平 / G92 #831

感谢您的回复,

更新的主要原因是我在尝试 Cura 时发现我的 z 偏移量比我最初在 Marlin 内部设置中设置的要多。虽然 Sli3r 有一个 z 偏移设置,可以很容易地进行校正,而无需使用修改后的偏移再次吹掉 Marlin,但 Cura 没有此功能,因此打印效果非常差。

在研究这个时,我注意到一些 Cura 代码示例在预打印 GCode(手动)设置中使用代码“G29 Zx.xx”来提供相同的功能,因此我修改了我的 Marlin 代码以在G29. 我不确定如何将其放入 Marlin 社区以进行下一次更新,因此将带有代码的评论添加到 github。我发布的模组不会影响其他任何东西(我认为!),并且只会在您使用 G29 Zx.xx 代码时添加偏移量。如果您使用不带 z 变量的 G29,它会像现在一样工作。

– 考虑一下,我还没有测试如果你使用 G29 Yx.xx 会发生什么_希望没有,但这确实需要测试。

我发表的其他评论是关于 z 偏移的一致操作,我不确定它是否会影响所有选项,但它现在对我来说肯定是一致的。

我并没有真正完全遵循代码,但我还发现,仅当我在最近的代码中将 Plan_set _position 行添加到第 1349 行的归位时,我的代码才将 Z 探针移动到 z_home 之前。与其他等效动作相比,这看起来像是错过了一条线。– 无论如何,它让我的探头升起,这就是我想要的。我已经为您复制了下面的原始代码和修改后的代码,以防它可以(?)更正(?)到下一个代码更新中。

仅供参考:我之前已经修改了探头延伸和缩回命令以在任何伺服动作之前添加有意的移动,但我现在已经修改了探头几何形状所以这不是必需的,我的旧 Z 探头实验的最终结果在这里:https:// http://www.youtube.com/watch?v=H3pVrYMAm6s

新的几何形状(一个非常简单的变化)在缩回之前不需要提升,所以我已经恢复到你的最新代码,这让我受益于多点探测。

非常感谢您为此所做的所有工作。

达格纳尔

#if Z_HOME_DIR < 0 // 如果返回 BED 最后执行 Z

    #ifndef Z_SAFE_HOMING

      if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) {

        #if defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0)

          destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1);    // Set destination away from bed

          feedrate = max_feedrate[Z_AXIS];

          plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder);

          st_synchronize();

        #endif

        HOMEAXIS(Z);

我的修改(红色):

if Z_HOME_DIR < 0 // 如果返回 BED 最后执行 Z

    #ifndef Z_SAFE_HOMING

      if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) {

        #if defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0)

          destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1);    // Set destination away from bed

        plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); //??ADDED dagnall

        feedrate = max_feedrate[Z_AXIS];

          plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder);

          st_synchronize();

        #endif

        HOMEAXIS(Z);

发件人:Ralf Schultz [ mailto:notifications@github.com ]
发送时间:2014 年 3 月 17 日 11:49
收件人:ErikZalm/Marlin
抄送:dagnall53
主题:回复:[Marlin] M206 和自动床调平/G92(#831

将 Z 偏移作为选项添加到 G29 可能很方便,但它实际上并不能解决未使用的 M206 值。

我昨天在查看代码,它看起来像 G28 没有启用床调平,使用 M206 的值。


直接回复此电子邮件或在 GitHub https://github.com/ErikZalm/Marlin/issues/831#issuecomment-37807119上查看。 https://github.com/notifications/beacon/6950560__eyJzY29wZSI6Ik5ld3NpZXM6QmVhY29uIiwiZXhwaXJlcyI6MTcxMDY3NjE2NCwiZGF0YSI6eyJpZCI6Mjc1MDU4Mjl9fQ==–72e80ee80d9441835193b7c6835e91b7c683

M206 和床身自动调平 / G92 #831
贡献者作者

我提出了一般偏移处理的拉取请求,并包含了您的 G29 Zx.xx 建议。
https://github.com/ErikZalm/Marlin/pull/848

我在这里是全新的,所以我会把所有的功劳都传递出去?

我正在关闭这个问题,我会看看是否可以对你提到的最后一个问题进行一些测试,因为我也注意到了一些奇怪的行为。