Marlin's Collision Sensing
This feature requires the BD sensor firmware version (which you can obtain by sending M102 S-1, not the hardware version on the sensor) to be V1.1b, greater than V1.2b, or purchased after March 2024. Otherwise, you need to use an external hardware tool (such as STlink) to flash the firmware into the BD sensor.
How It Works
- Automatically calibrates the z-axis offset when executing G28: It can be triggered after homing (when the nozzle touches the bed) — then moves slowly upward until the nozzle just leaves the bed — setting this position as the z-axis zero point.
Benefits
- Automatic z-axis offset calibration.
- You can still manually adjust the z-axis offset for different filaments.
- Overcome temperature drift.
- Temperature drift changes the z-axis offset, but does not change the range of the bed mesh height map with the BD sensor. This means that even if the temperature is different, the bed mesh remains the same.
The code for this feature is in the official Marlin GitHub pull request list: https://github.com/MarlinFirmware/Marlin/pull/27243 So please use the following Marlin code: https://github.com/markniu/MarlinPULL/tree/bugfix-2.1.x
How to Use
Enable BD_SENSOR
, and add #define BD_SENSOR_CONTACT_PROBE
in configuration.h
It should look like this:
#define BD_SENSOR
#if ENABLED(BD_SENSOR)
#define BD_SENSOR_PROBE_NO_STOP // Probe bed without stopping at each probe point
#define BD_SENSOR_CONTACT_PROBE // it uses nozzle collision sensing to probe while homing
#endif
-
Increase the probe speed in
configuration.h
. -
Sensitivity depends on speed, so you need to adjust the Z-axis speed.
-
homing_speed
(homing speed) andsecond_homing_speed
(secondary homing speed) should be in the range of 3 to 10, which is the Z-axis probe feed rate. -
For example:
#define Z_PROBE_FEEDRATE_FAST (5*60)
#define Z_PROBE_FEEDRATE_SLOW (5*60)
- Increase the homing bump of the Z-axis to more than 4 millimeters in
Configuration_adv.h
.
#define HOMING_BUMP_MM { 5, 5, 5 }
Test Homing
- Please send about 10
G28 Z
commands, or use theM48
command, to see if it is stable.