如何让 Ender 5 使用 BLTouch 探针进行 Z 归位?

3D打印 马林鱼 摸摸 创造者-5
2021-05-03 06:58:01

背景故事

我按照随附的指南中的说明设置了 BLTouch 模块 -包括拔下 Z 轴开关,并用来自 BLTouch 模块的一对电线替换它

我设法刻录了Creality 提供固件,但是由于 BLTouch 模块从热端偏移,因此没有偏移,而且我无法手动编辑.hex文件以添加偏移。我尝试使用 G 代码命令在 EEPROM 上更新它,但这不起作用,它总是从床的边缘探测。

然后我决定直接基于 Marlin 1.1.x 刷新新固件,因为 Youtube 上有一些关于如何执行此操作的视频。我使用 BLTouch 随附的粉红色 USB ISP 将 Arduino 引导加载程序闪存到主板,现在我可以使用 Arduino IDE 对电路板进行编程。

我上传了我配置的 Marlin 固件(见下文),但它无法正常工作。

问题

当我把打印机放回原处时,X 和 Y 停止转到开关,正确地撞击和归零。但是,当 Z 轴归位时,BLTouch 探针保持缩回状态,并开始返回原位 - 发生这种情况时,我强行关闭了打印机,因为我知道没有什么可以阻止它撞到打印头并弄坏东西。

如何配置我的固件以将 BLTouch 模块用作 Z 停止探头?

尽管当我打开打印机电源时探针会发出几次咔嗒声,但我并不完全确定它是否在工作 - 转到 BLTouch 菜单并选择Cmd: Deploy没有效果。

Z_SAFE_HOMING好的方面来说,当它到达中心时(由于),BLTouch 模块位于构建板的中心而不是热端。


配置

您可以在 Gitlab 上看到我尝试使用的 Marlin 存储库,或者直接链接到初始 Marlin 配置和我的更改之间的差异

这些是我所做的一些希望相关的配置更改:

// Configuration.h

//#define USE_XMIN_PLUG
//#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
#define USE_XMAX_PLUG
#define USE_YMAX_PLUG

#define BLTOUCH

#define X_PROBE_OFFSET_FROM_EXTRUDER -44  // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -6   // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 5.7  // Z offset: -below +above  [the nozzle]

#define Z_HOMING_HEIGHT 4

#define Z_SAFE_HOMING
// pins_MELZI_CREALITY.h

#define SERVO0_PIN 20 // Wondering if this is correct?

这些设置已保留为默认值,但它们看起来可能相关:

/**
 * Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
 *
 * Enable this option for a probe connected to the Z Min endstop pin.
 */
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

/**
 * Z_MIN_PROBE_ENDSTOP
 *
 * Enable this option for a probe connected to any pin except Z-Min.
 * (By default Marlin assumes the Z-Max endstop pin.)
 * To use a custom Z Probe pin, set Z_MIN_PROBE_PIN below.
 *
 *  - The simplest option is to use a free endstop connector.
 *  - Use 5V for powered (usually inductive) sensors.
 *
 *  - RAMPS 1.3/1.4 boards may use the 5V, GND, and Aux4->D32 pin:
 *    - For simple switches connect...
 *      - normally-closed switches to GND and D32.
 *      - normally-open switches to 5V and D32.
 *
 * WARNING: Setting the wrong pin may have unexpected and potentially
 * disastrous consequences. Use with caution and do your homework.
 *
 */
//#define Z_MIN_PROBE_ENDSTOP

/**
 * Number of servos
 *
 * For some servo-related options NUM_SERVOS will be set automatically.
 * Set this manually if there are extra servos needing manual control.
 * Leave undefined or set to 0 to entirely disable the servo subsystem.
 */
//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1个回答

我现在已经解决了这个问题。这是问题所在:

// pin_MELZI_CREALITY.h

#define SERVO0_PIN 20 // 想知道这是否正确?

有趣的是,这是不正确的。引脚 20 是Z MIN中定义引脚,pins_MELZI_CREALITY.h不是BLTouch 模块使用的伺服引脚。

这个 youtube 视频的8:04 处,他说该值应该设置为 27,“如果我们使用的是 27 针板或拼接针”。

我试过了,BLTouch 模块现在有响应,归位工作正常!

对于遇到此问题的任何其他人(奇怪的是很难在网上找到),添加以下代码:

#define BLTOUCH
#if ENABLED(BLTOUCH)
  #define SERVO0_PIN 27
  //#define BLTOUCH_DELAY 375   // (ms) Enable and increase if needed
#endif