Skip to main content

Install BDsensor-m-m

Connect the sensor cable to the EXP1 interface on the motherboard

  • If the sensor cable is not long enough, you can use the extension cable included in the package.

  • The CLK and SDA lines of BDsensor-m-m can be connected to any GPIO pin on the board. You can also directly connect the BD sensor cable to the BLtouch port, for example:

    BLtouch    |    BDsensor-m
    5V --> 5V
    GND --> GND
    S --> CLK/SCL (Input)
    GND --> GND
    Zmin --> SDA (Input/Output)
  • Some pins in the motherboard connector may not be directly connected to the GPIOs of the MCU (for example, they may have filter capacitors or are isolated through MOSFETs, diodes, or optocouplers, but they can still be used if they are isolated through resistors or resistor pull-ups/downs). These pins cannot be used with BDsensor-m. The firmware will report a connection error. For example:

  • Fan and heater connectors are isolated through MOSFETs,

  • Some boards use connectors for temperature thermistors and endstops/probes, which are usually connected to GND through filter capacitors,

  1. As shown in the image below, install the BD sensor near the hotend. STL of mount, STL_mount_VzBot_Goliath short

Install the patch to Marlin firmware

The BD sensor has been integrated into Marlin2.1.x (since 2022.8.27),

You can download the release version. However, it is now recommended to download the latest bug-fix version: https://github.com/MarlinFirmware/Marlin

What you need to do is modify the configuration file and the pin file.

Edit Configuration.h

  1. Enable BD_SENSOR

Uncomment the following lines:

#define BD_SENSOR
#define Z_SAFE_HOMING
#define BD_SENSOR_PROBE_NO_STOP //adding this new line for fast bed leveling without nozzle stop,

Only BD_SENSOR_PROBE_NO_STOP

Latest Marlin bug fixes: https://github.com/MarlinFirmware/Marlin

Description: https://github.com/MarlinFirmware/Marlin/pull/25847

  1. Homing with probe

Ensure that Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN is disabled, and enable USE_PROBE_FOR_Z_HOMING as shown below:

//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
// Force the use of the probe for Z-axis homing
#define USE_PROBE_FOR_Z_HOMING
  1. Slow down the second homing Z speed

    #define Z_PROBE_FEEDRATE_SLOW (Z_PROBE_FEEDRATE_FAST / 16)

    Here, we must slow down the bump homing speed and Z homing speed because the stop detected from the BDsensor-m process is not as real-time as a normal stop.

Edit Configuration_adv.h

Enable #define BABYSTEPPING to enable the real-time leveling function

#define HOMING_BUMP_DIVISOR { 2, 2, 8 }       // Re-Bump Speed Divisor (Divides the Homing Feedrate)

Edit pins_boardname.h

Configure the SDA and SCL pins of BDsensor-m in the pin file pins_boardname.h by adding the following 3 lines (e.g.): pins_PANDA_PI_V29.h

#define  I2C_BD_SDA_PIN    PC6   // Please change to the actual number which the SDA wire is connected to your mainboard
#define I2C_BD_SCL_PIN PB2 // Please change to the actual number which the SLK wire is connected to your mainboard
#define I2C_BD_DELAY 20 // default value is 20, should be in the range [20,50].

If you want to perform automatic bed leveling probe (G29) before printing like a regular BLtouch, uncomment

#define AUTO_BED_LEVELING_BILINEAR

And edit the following values as shown:

#define Z_CLEARANCE_DEPLOY_PROBE   0 // Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES 1 // Z Clearance between probe points
#define Z_CLEARANCE_MULTI_PROBE 1 // Z Clearance between multiple probes

Display BD sensor value on LCD screen

  • For printers with status display (supporting gcode M117), such as LCD12864 or some UART screens, like Ender3V2 ...

Calibration

  1. Clean the nozzle, then move the Z-axis via the console until the nozzle just touches the bed (BDsensor-m will use this position as the 0 point, so no z_offset is needed; we set the value to 0).

  2. Send the gcode command M102 S-6, the printer will slowly move the Z-axis up by 0.1mm until reaching 4mm. Do not run M102 S-6 before installing the sensor, and do not power off the printer during calibration, or the old calibration data will be deleted. If this happens, just recalibrate.

  3. You can send M102 S-5 to check whether the BD sensor has been successfully calibrated. This will return the raw calibration data stored in the BD sensor.

There is also a calibration tool available for this: https://github.com/markniu/Bed_Distance_sensor/raw/new/marlin/BD_Config_Tool_Marlin.zip img

Note: A data value of 1015 or >1010 indicates that it is out of the sensor range. If the first five points (0~0.5mm) or more values are within the range of 0 to 1000, and the increasing delta value is >=10, the calibration is successful. Just like the chart shown above.

If the first raw calibration data returned by M102 S-5 is greater than 400, it means the sensor is installed too high and needs to be reinstalled closer to the bed. Also, ensure the second data value is at least 10 more than the first.

Testing and Printing

Menu Bed

Auto Bed Leveling

There are two ways to auto-level the bed:

1. Use M102 for real-time leveling of the first few layers

We can easily enable or disable this auto-leveling by sending a gcode command or adding gcode to a gcode file.

To enable bed leveling in Cura, add the M102 G-code right below the G28 (Home all axes) G-code in the "Start G-code" section of the printer machine settings. For example, after G28, this means it will only perform bed leveling for Z heights below 0.2mm. M102 S2

Sending or using M102 S0 will disable bed leveling with the BD sensor. By the way, it is disabled by default. G28 M18

M102   S-1     //Read sensor information, and we can use this for connection checking.
M102 S-2 //Read current distance value
M102 S-5 //Read raw Calibrate data
M102 S-6 //Start Calibrate, before that make sure the nozzle is just touched the bed, and then the printer restarted. don't home z axis before this.
M102 S4 //Set the adjustable Z height value, e.g. M102 S4 means it will do adjusting while the Z height <=0.4mm , disable it by M102 S0.

2. G29 Auto Bed Leveling

Another way to auto-level the bed is similar to BLtouch with G29, simply add a line G28 below G29.

Installation Video

Chris's Basement Installation Video

Check Z Endstop M119

Before performing this step, do not home Z, or the nozzle may crash into the print bed.

This is the return message after sending the M119 command (Report Endstop States).

Send: M119
Recv: x:open y:open z:open

If z min is not open, check your configuration. #define Z_MAX_ENDSTOP_HIT_STATE HIGH

  • Ensure the Z motor is turned off/unlocked

  • Manually move the Z-axis down until the nozzle is close to the bed

  • Send M102 S-2, the returned value should be 0.00mm, then send M119 again, you will see the Z endstop is now triggered.

    Send: M119
    Recv: x:open y:open z:TRIGGERED

Check Connection

Check the connection via M102 S-1. Here is an example of the returned message. Check if the connection or wire order returns blank or other strings.

Send: M102 S-1
Recv: V1.0 pandapi3d.com

If all of the above steps are correct, you can now home the Z-axis.

Loading...
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -
- 3D Mellow -