在 Marlin 中为双线性调平定义网格的位置

3D打印 马林鱼 平床
2021-05-02 19:32:36

我在 Anet A8 打印机上使用固件 Marlin 2.0.3。我正在使用 Roko SN04-N NPN 平床。我已经设法设置了 3 点的床调平,但我想尝试双线性调平。

问题是,在调平过程中,传感器稍微脱离铝床,导致打印头撞到床上。

我在哪里可以在配置文件中为双线性调平设置网格?我没有在文件中找到该选项,这次谷歌也没有任何帮助。

1个回答

如果您已设法设置 3 点调平,则应该能够在固件中启用双线性调平。

Marlin 固件configuration.h文件中,您可以找到以下选项:

/**
 * 选择以下选项之一以启用 G29 床位调平。参数
 * 和 G29 的行为将根据您的选择而改变。
 *
 * 如果使用探针进行 Z 归位,还要启用 Z_SAFE_HOMING!
 *
 * - AUTO_BED_LEVELING_3POINT
 * 探测床上的 3 个任意点(不共线)
 * 您指定所有 3 个点的 XY 坐标。
 * 结果是一个倾斜的平面。最适合平床。
 *
 * - AUTO_BED_LEVELING_LINEAR
 * 探测网格中的几个点。
 * 您指定矩形和采样点的密度。
 * 结果是一个倾斜的平面。最适合平床。
 *
 * - AUTO_BED_LEVELING_BILINEAR
 * 探测网格中的几个点。
 * 您指定矩形和采样点的密度。
 * 结果是网格,最适合大床或不平整的床。
 *
 * - AUTO_BED_LEVELING_UBL(统一床位调平)
 * 一个综合性的床调平系统,结合了功能和优点
 * 其他系统。UBL 还包括集成的 Mesh Generation、Mesh
 * 验证和网格编辑系统。
 *
 * - MESH_BED_LEVELING
 * 手动探测网格
 * 结果是网格,适用于大床或不平整的床。(见双线性。)
 * 对于没有探头的机器,Mesh Bed Leveling 提供了一种方法来执行
 * 逐步调平,因此您可以在每个网格点手动调整 Z 高度。
 * 使用 LCD 控制器可逐步指导该过程。
 */
//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
//#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING

如果您使用的是 3 点调平,您可以AUTO_BED_LEVELING_3POINT通过删除注释字符 ( //) 来启用常量

#define AUTO_BED_LEVELING_3POINT

要启用双线性调平,您应该删除常量之前的注释字符#define AUTO_BED_LEVELING_BILINEAR

#define AUTO_BED_LEVELING_BILINEAR

网格的定义是通过使用常量GRID_MAX_POINTS_X指定您想要拥有的点数来完成的GRID_MAX_POINTS_Y

#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)

  // 设置每个维度的网格点数。
  #define GRID_MAX_POINTS_X 3
  #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

上面的代码显示了 9 点 (3 x 3) 网格的默认定义。

请注意,只有正确定义了传感器可安全到达的区域,这才会有效。如果传感器缺少构建板,则您没有正确定义传感器的限制。问题“使用自动平床时如何在固件中设置 Z-probe 边界限制?” 有一个公认的答案,描述了如何定义传感器可能到达的板上的区域(这个问题的答案也讨论了 Marlin 2.x)。


在 OP 的特定情况下(发布配置文件后)


从发布的配置文件中可以获得您的探针位置:

#define NOZZLE_TO_PROBE_OFFSET { 25, 55, 0 }

因此,当您面对打印机时,您的探头位于右后方。还可以获得您的床区尝试(评论)和当前活动床区:

#if PROBE_SELECTED && !IS_KINEMATIC
  //#define MIN_PROBE_EDGE_LEFT 5
  //#define MIN_PROBE_EDGE_RIGHT 200
  //#define MIN_PROBE_EDGE_FRONT 55
  //#define MIN_PROBE_EDGE_BACK 200
  #define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_RIGHT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_FRONT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_BACK MIN_PROBE_EDGE
#万一

从这些摘录中可以清楚地看出,床位限制的定义不正确。

根据这个答案的理论,探头只允许访问以下(深红色)区域:

右后探针 Marlin 2.0.x 的探针区域

该区域定义为:

  #define MIN_PROBE_EDGE_LEFT (PROBE_OFFSET_X_FROM_EXTRUDER + MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_RIGHT (MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_FRONT (PROBE_OFFSET_Y_FROM_EXTRUDER + MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_BACK (MIN_PROBE_EDGE)

翻译成:

  #define MIN_PROBE_EDGE_LEFT (25 + MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_RIGHT (MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_FRONT (55 + MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_BACK (MIN_PROBE_EDGE)

如注释//#define MIN_PROBE_EDGE_LEFT 5和未注释#define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE(等于 10)左探头限制所示,您至少分别短 20 或 15 毫米,因此传感器不在左侧的板上。