Table of Contents

BD Sensor

YouTube Video #108


Hinweise

Zu Beginn vielleicht ein paar Eindrücke von mir zu dem Sensor:

Übersicht

Anschluss am Board

Beispiel für den Anschluss am BLTouch Port:

BLtouch    |    BDsensor
 GND      -->     GND
 5V       -->     5V
 S        -->     CLK/SCL    (Input)
 GND      -->     GND
 Zmin     -->     SDA    (Input/Output) 

Beispiel für den Anschluss am Spider V1.0:

Achtung beim BD Sensor M. Hier sind teilweise die Beschriftungen auf der Platine falsch:
Pins sind 2 Pins verschoben für Clock und SDA

Klipper kompilieren

erster Test

Einbau

Der Einbau (bei mir im Stealthburner) ist kein größeres Problem. Er wird wie eine normale Probe eingebaut. Schaut dazu am besten das Video an (ab Minute 13:58).

Was mir an der Halterung gar nicht gefällt ist, dass man den Stelathburner fast komplett demontieren muss um den Sensor in der Höhe einzustellen. Extrem unpraktisch und zeitraubend. Zumal man im eingbautem Zustand auch kaum Möglichkeiten bzw. Referenzen hat an denen man etwas nachmessen könnte.

Ich habe deshalb den Kopf immer auf 0,5mm ca. Richtung Bett gefahren (Nozzle zu Bett Abstand) und dann vorsichtig den Kopf demontiert (im bestromten Zustand). Das ist keine wirklich gute Lösung, aber so bleibt wenigstens der Kopf an der richtigen Stelle stehen.

Konfiguration

BDSensor.cfg

Ich habe mir für meine Konfiguration eine extra CFG Datei angelegt mit folgendem Inhalt:

BDSensor.cfg
[BDsensor] 
# Don't use aliases for the board pins 
sda_pin             : PD1
scl_pin             : PD0
#scl_pin             : MKS_THR:gpio20 # example of connecting to CAN module like MKS THR42 
#sda_pin             : MKS_THR:gpio11 
#scl_pin             : host:gpio17 # example of connecting to GPIO on RaspberryPi
#sda_pin             : host:gpio27

# This speed is only for the z probe speed while doing z_tilt. not for the homing speed
speed               : 3
# This is the time period (speed)for the communication between mcu and bdsensor, that means lower value the higher communication speed.
delay               : 20 # you can set it 10 if the BDsensor version is >=1.2
# This value will be ingnored if nozzlecollision is enabled
z_offset            : 0 #  within -0.6 to 0.6mm
x_offset            : 0
y_offset            : 20.0
no_stop_probe:        # fast probe that the toolhead will not stop at the probe point,disable it by commenting out.
# it will stop the z axis if it measure the distance is <=1.2mm while homing z to avoid crash into the bed. and then set the z value to the actual read distance value.
# it will not raise nozzle 1.2mm
position_endstop    : 1.2 # the triggered position, recommend value is 1~2.8
## The Sensor is attached to the board where the Z stepper are attached, too. 
collision_homing    : 0 # set it 1 to enable homing with nozzle collision sensing.
collision_calibrate : 0 # set it 1 to enable auto calibrate BDsensor with nozzle collision sensing.
QGL_Tilt_Probe      : 1 # set 1 to enable probe up and down when do quad_gantry_level    

#2. If I don´t use the Auto Calibration ... Do I need to set an Z offset so that the first layer can be printed without the nozzle touching the bed directly?
#Or is it position_endstop?
####  the only difference is that it will home z first with nozzle touching to find the 0 position if collision_calibrate:1

#If I set second-homing-speed to high (> 1.5) my stealtburner starts to bend because the head stops to late.
#### this depends on the mount height and the material of the bed plate, 
#https://github.com/markniu/Bed_Distance_sensor/issues/91#issuecomment-1966365247

# https://github.com/markniu/Bed_Distance_sensor/wiki/Z-move-or-not-automatically_Z_Tilt_QGL
[gcode_macro QUAD_GANTRY_LEVEL]
rename_existing: _QUAD_GANTRY_LEVEL
description:
gcode:
    #run z tilt with z move up and down at first
    BDSENSOR_SET QGL_TILT_PROBE=1 #set this 1 to enable z axis up and down
    BDSENSOR_SET COLLISION_HOMING=0
    _QUAD_GANTRY_LEVEL  horizontal_move_z=6 retry_tolerance=1
    G28 Z0
    #run z tilt with no z move up and down
    BDSENSOR_SET QGL_TILT_PROBE=0 #set this 0 to disable z axis up and down while probe
    _QUAD_GANTRY_LEVEL horizontal_move_z=1 retry_tolerance=0.04
    #BDSENSOR_SET COLLISION_HOMING=1 #optional
    G28 Z0

# https://github.com/markniu/Bed_Distance_sensor/wiki/Homing-with-contactless-and-contact-probing-together
[gcode_macro G28]
rename_existing: G990028
gcode:
      {% if rawparams|length == 0 %}
           { action_respond_info("homing all") }
           G990028 X Y
           ## Homing with contactless probe with the homing_speed in [stepper_z]
           BDSENSOR_SET COLLISION_HOMING=0
           G990028 Z
           ## Homing with contact probe with the second_homing_speed in [stepper_z]
           BDSENSOR_SET COLLISION_HOMING=1
           G990028 Z
      {% else %}
            {% if 'x' in rawparams or 'X' in rawparams  %}
                 { action_respond_info("homing x") }
                 G990028 X
            {% endif %}
            {% if 'y' in rawparams or 'Y' in rawparams  %}
                 { action_respond_info("homing y") }
                 G990028 Y
            {% endif %}
            {% if 'z' in rawparams or 'Z' in rawparams  %}
                 { action_respond_info("homing z contactless") }
                 ## Homing with contactless probe with the homing_speed in [stepper_z]
                 BDSENSOR_SET COLLISION_HOMING=0
                 G990028 Z
                 { action_respond_info("homing z collision") }
                 ## Homing with contact probe with the second_homing_speed in [stepper_z]
                 BDSENSOR_SET COLLISION_HOMING=1
                 G990028 Z
            {% endif %}
      {% endif %}

Diese Konfig beinhaltet einige Anpassungen

[safe_z_home]

In der Konfig sollte es ein safe_z_home geben. home_xy_position auf die Bettmitte setzen

[safe_z_home]
# https://www.klipper3d.org/Config_Reference.html#safe_z_home
home_xy_position         : 150,150
speed                    : 300
z_hop                    : 5
z_hop_speed              : 10.0

[bed_mesh]

bed_mesh muss auch angepasst werden. Hier vor allem die Anzahl der Messpunkte:

download
[bed_mesh]
## https://www.klipper3d.org/Config_Reference.html#bed_mesh
## https://docs.vorondesign.com/tuning/secondary_printer_tuning.html
speed                    : 200
horizontal_move_z        : 1
mesh_min                 : 10,33
mesh_max                 : 290,280
probe_count              : 9,9
mesh_pps                 : 3,3
algorithm                : bicubic
bicubic_tension          : 0.2
## relative_reference_index = (x points * y points) - 1) / 2
## Samples : 3x3 mesh = 4, 5x5 mesh = 12, 7x7 mesh = 24, etc
#relative_reference_index : 12
zero_reference_position  : 150, 150

Zudem muss zero_reference_position auf der Bettmitte stehen und mesh_min / mesh_max muss so eingestellt sein das der Sensor über eurem Bett ist!

[stepper_z]

Hier müssen einige Werte angepasst werden:

download
endstop_pin              : probe:z_virtual_endstop
#position_endstop         : -0.5
position_max             : 290
position_min             : -5
# BD Sensor
homing_speed             : 8 # 5,8 für Collision Detect
second_homing_speed      : 1.4 # 1, 1.4  #set this to 3 if homing with collision
homing_retract_speed     : 2
homing_retract_dist      : 0 # 0(Auto Level) / 5 Normal Level

Eintrag für Kalibrierung

Bei manueller Kalibrierung muss dieser Eintrag noch in die Konfig:

# BD Sensor
[force_move] 
enable_force_move        : true   # required by the command SET_KINEMATIC_POSITION in the calibration step below.

Der Eintrag sollte nach der Kalibrierung wieder entfernt werden.

Kalibrierung Manuell

Endstop testen

Kalibrierung Auto

Bed Mesh

Wenn alles eingestellt ist, kann man ganz normal ein BED_MESH_CALIBRATE starten. Der Sensor fährt dann in Bahnen über das Bett. Das Handling ist genauso wie vorher !

Firmware BD-Sensor

Die Firmware vom BDSensor kann man bei Bedarf neu Flashen. Dazu gibt es auf der Wiki Seite passende Anleitungen:

Hardware

ERROR Unknown command: I2CBD

MCU Protocol error

This is frequently caused by running an older version of the
firmware on the MCU(s). Fix by recompiling and flashing the
firmware.

Your Klipper version is: v0.12.0-349-ga34034494-dirty
MCU(s) which should be updated:
mcu: Current version v0.12.0-349-ga34034494
RasPi: Current version v0.12.0-349-ga34034494
EBBCan: Current version v0.12.0-349-ga34034494
Up-to-date MCU(s):
<none>

Once the underlying issue is corrected, use the "RESTART"
command to reload the config and restart the host software.

mcu 'mcu': Unknown command: I2CBD

NOTES

Startmakro mit 150 Grad !!! → Fila vorweichen

Nozzle Clean → Umbauen !