Skip to main content

Installing BDsensor

Connecting the sensor cable to the mainboard or CAN bus toolhead board.​

  • Please note that the SB2040 cannot use the BDsensor.
  • Please note that the SHT36 requires the BDsensor's CLK/SCL (Input) to be connected to the high-voltage input port, and the jumper to be connected.
  • The BDsensor's CLK and SDA wires can be connected to any GPIO pin on the board. You can also connect the BD sensor cable directly to the Bltouch port, for example:
BLtouch | BDsensor
5V --> 5V
GND --> GND
S --> CLK/SCL (Input)
GND --> GND
Zmin --> SDA (Input/Output)
  • Since some pins in the mainboard connectors may not be directly connected to the MCU's gpios (for example, they may have filter capacitors on them or be isolated through MOSFETs, diodes, or optocouplers, but it is also acceptable if they are isolated through resistors or resistor pull-ups/pull-downs), they cannot be used with the BDsensor. And the firmware will report a connection error. For example

  • Fan and heater connectors are isolated through MOSFETs,

  • In some boards, the connectors used for temperature thermistors and endstops/probes are usually connected to GND through filter capacitors,

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

    Loading...

Install the patch into the Klipper firmware​

  • Discard previously modified klipper files and update Klipper.

    cd
    cd ~/klipper
    git checkout .
    git pull
  • Clone the latest BDsensor code.

    cd && git clone https://github.com/markniu/Bed_Distance_sensor.git
  • Install.

    cd ~/Bed_Distance_sensor/klipper/
    ./install_BDsensor.sh
  • Compile the firmware.

    cd ~/klipper/
    make menuconfig
    make clean
    make
  • Flash the firmware to the MCU or CANbus toolhead board connected to the BDsensor.

If your printer runs Moonraker, add the following section to moonraker.conf. Then you can update BDsensor with a single click via the web interface or KlipperScreen.​

[update_manager BDsensor]
type: git_repo
primary_branch: new
channel: dev
path: ~/Bed_Distance_sensor
origin: https://github.com/markniu/Bed_Distance_sensor.git
install_script: ./klipper/install_BDsensor.sh
is_system_service: False
managed_services: klipper
info_tags:
desc=Bed Distance Sensor

Editing printer.cfg​

  • Copy this section to your printer.cfg and edit [BDsensor] sda_pin scl_pin, and don't forget to disable other probe sections, such as BLtouch. You can connect the BD sensor to the mainboard or the toolhead CAN module.

  • In [BDsensor], change speed to 0.8. This only applies to z tilt and the PROBE_ACCURACY command. The smaller the value, the higher the accuracy during probing, because the MCU reads the BD sensor in the main loop during homing, unlike a normal endstop in real time.

  • To use the BD sensor as a limit switch during Z-axis homing, you need to change endstop_pin in [stepper_z] to endstop_pin: probe:z_virtual_endstop

  • Please make sure printer.cfg contains [safe_z_home]

  • Change the horizontal_move_z value in [bed_mesh] and [z_tilt] or [quad_gantry_level] to 1 (recommended 0.7-1.0mm). The default value in klipper is 5mm, otherwise it is easy to exceed the sensor range.

  • Nozzle height should only be set in z_adjust:; a positive number is closer to the bed, a negative number is farther from the bed. Other settings for adjusting nozzle height will have bugs.

  • To enable fast bed scanning, remove the # before no_stop_probe:true

  • Below is a configuration example.

    [BDsensor]
    scl_pin:PC6 # servo signal port
    sda_pin:PC3 # limit signal port
    delay: 20 # 20us per pulse, this value should be >=20 but must be below 50
    z_offset:0 # this `z_offset` must be set to 0.
    z_adjust:0.0 # z axis adjustment, replace the z_offset function. within -0.3 to 0.3mm
    x_offset: -34
    y_offset: 0
    #no_stop_probe:true # enable this for fast probe, the toolhead will not stop at the probe point.
    position_endstop: 0.8 # the Z axis will stop at this position (mm) while homing z, recommend value is 0.4~1.0
    #speed:0.8 # this speed only works for the z tilt and PROBE_ACCURACY command.

    [stepper_z]
    endstop_pin: probe:z_virtual_endstop
    #position_endstop: 0.5
    homing_speed: 5
    second_homing_speed: 0.8

    [bed_mesh]
    speed: 200
    horizontal_move_z:1
    algorithm: bicubic

    [quad_gantry_level]
    horizontal_move_z:1

After installation, check by sending the following gcode commands​

M102 S-1 # Read sensor info
M102 S-2 # Read a distance value

Check the connection​

  • Send M102 S-1 via the console. Here is an example of the returned message. If it returns blank or other strings, check the connection and wire order.

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

Calibration​

  • Clean the nozzle, then move the Z axis via the console until the nozzle just touches the bed (BDsensor will use this position as the zero position, so z_offset is not needed, and that is why the value is 0 in the [BDsensor] section).
  • Send the gcode command M102 S-6 via the console. The printer will slowly move the Z axis up by 0.1mm each time until it reaches 4mm. Do not run M102 S-6 before installing the sensor, and do not turn off the printer power during calibration, otherwise the old calibration data will be deleted. If this happens, just calibrate again.
  • Afterward, you can check if the BD sensor has been successfully calibrated using M102 S-5, which returns the raw calibration data stored in the BD sensor.

Notes:

  • The Z-axis homing speed is best set to 5.

  • 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. The recommended value for the first data is 100. Also, ensure the second data value is at least 10 greater than the first.

    • FAQ: What does it mean if the calibration data starts with 1, the second value is 9, and the third is 24?

    • This means the resolution between 0-0.1mm is only 9, and the resolution between 0.1-0.2mm is 15. Therefore, it is recommended to recalibrate so the initial resolution of 0-0.1mm is greater than 10.

  • Do not forget to adjust the Z axis height after running G28 or for commands like Z_tilt and quad_gantry_level.

  • Section names must be capitalized correctly, otherwise Klipper will report Unknown pin chip name 'probe'.

Loading...