Установка BDsensor
Подключение кабеля датчика к основной плате или плате инструментов CAN-шины.
- Обратите внимание, что SB2040 не поддерживает BDsensor
- Обратите внимание, что для SHT36 необходимо подключить CLK/SCL (Input) BDsensor к высокому входному порту и установить перемычку
- Линии CKL и SDA BDsensor можно подключить к любым выводам GPIO на плате. Вы также можете напрямую подключить кабель BD-сенсора к порту BLtouch, например:
BLtouch | BDsensor
5V --> 5V
GND --> GND
S --> CLK/SCL (Input)
GND --> GND
Zmin --> SDA (Input/Output)
-
Некоторые выводы разъема основной платы могут быть не напрямую подключены к GPIO микроконтроллера (например, на них могут быть фильтрующие конденсаторы или они изолированы через MOSFET, диод или оптопару, но если они изолированы через резисторы с подтяжкой вверх/вниз, то тоже не подходят), поэтому они не могут использоваться с BDsensor. И прошивка сообщит об ошибке подключения. Например:
-
Разъемы вентиляторов и нагревателей изолированы через MOSFET,
-
В некоторых платах разъемы для термисторов температуры и концевиков/зондов обычно подключены к GND через фильтрующий конденсатор,
-
Как показано на рисунке ниже, установите датчик BD вблизи горячего блока. STL of mount, STL_mount_VzBot_Goliath short

Установка патча в прошивку klipper
-
Отмените предыдущие изменения файлов klipper и обновите klipper
cd
cd ~/klipper
git checkout .
git pull -
Склонируйте последние исходники датчика BD
cd && git clone https://github.com/markniu/Bed_Distance_sensor.git -
Установка
cd ~/Bed_Distance_sensor/klipper/
./install_BDsensor.sh -
Компиляция прошивки
cd ~/klipper/
make menuconfig
make clean
make -
Прошейте MCU или плату инструментов CANbus, к которой подключен BDsensor
Если ваш принтер работает с Moonraker, добавьте следующий раздел в moonraker.conf, после этого вы сможете обновлять BDsensor одним кликом через веб-интерфейс или 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
Редактирование printer.cfg
-
Скопируйте следующий раздел в ваш printer.cfg и отредактируйте
sda_pinиscl_pinв разделе[BDsensor]. Не забудьте отключить другие разделы зонда, такие как BLtouch. Вы можете подключить BDsensor к основной плате или модулю инструментов CAN. -
В разделе
[BDsensor]изменитеspeedна 0.8. Это значение применяется только для команд z_tilt и PROBE_ACCURACY. Чем меньше значение, тем выше точность при зондировании, поскольку MCU при возврате по Z считывает данные BDsensor не так своевременно, как обычный концевик.[BDsensor] -
Чтобы использовать BDsensor как концевик при возврате по оси Z, измените
endstop_pinв разделе[stepper_z]наendstop_pin: probe:z_virtual_endstop -
Убедитесь, что в printer.cfg есть раздел
[safe_z_home] -
В разделах
[bed_mesh]и[z_tilt]или[quad_gantry_level]измените значение[quad_gantry_level]на 1 (рекомендуется 0.7-1.0 мм). По умолчанию в klipper значение равно 5 мм, иначе легко выйти за пределы диапазона датчика -
Коррекция высоты сопла возможна только через
z_adjust:. Положительное число приближает сопло к столу, отрицательное – удаляет от него. Другие параметры настройки высоты сопла могут содержать ошибки. -
Чтобы включить быстрое сканирование стола, удалите символ # перед
no_stop_probe:true -
Ниже приведен пример конфигурации.
[BDsensor]
scl_pin:PC6 # Порт сигнала сервопривода
sda_pin:PC3 # Порт сигнала концевика
delay: 20 # 20 мкс на импульс, это значение должно быть >=20, но обязательно ниже 50
z_offset:0 # это значение `z_offset` должно быть равно 0.
z_adjust:0.0 # коррекция оси Z, заменяет функцию z_offset. Диапазон от -0.3 до 0.3 мм
x_offset: -34
y_offset: 0
#no_stop_probe:true # включите для быстрого зондирования, голова не будет останавливаться в точке зондирования.
position_endstop: 0.8 # ось Z остановится на этой позиции (мм) при возврате по Z, рекомендуемое значение 0.4~1.0
#speed:0.8 # это значение скорости работает только для z_tilt и команды PROBE_ACCURACY.
[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
После установки проверьте работу, отправив следующие G-код команды:
M102 S-1 # Чтение информации датчика
M102 S-2 # Чтение значения расстояния
Проверка подключения
-
Отправьте
M102 S-1через консоль, это пример возвращаемого сообщения. Если возвращается пустое значение или другая строка, проверьте подключение и порядок проводов.Send: M102 S-1
Recv: V1.0 pandapi3d.com
Калибровка
- Очистите сопло, затем вручную переместите ось Z через консоль, пока сопло не коснется стола (BDsensor будет использовать это положение как ноль, поэтому
z_offsetне требуется, это причина того, что значение в разделе [BDsensor] равно 0). - Отправьте G-код команду
M102 S-6через консоль, принтер медленно поднимет ось Z на 0.1 мм, пока не достигнет 4 мм. Не запускайте M102 S-6 до установки датчика, и не выключайте принтер во время калибровки, иначе старые данные калибровки будут удалены. В этом случае просто выполните калибровку снова. - После этого вы можете проверить успешность калибровки BDsensor с помощью команды
M102 S-5через консоль, она вернет сохраненные в датчике калибровочные данные.
Примечания:
-
Скорость возврата по оси Z лучше всего установить 5
-
Если первый калибровочный результат от M102 S-5 больше 400, это означает, что датчик установлен слишком высоко и его нужно переустановить ближе к столу. Рекомендуемое значение первого результата — 100. Также убедитесь, что второе значение больше первого как минимум на 10.
-
ВОПРОС-ОТВЕТ: Что означает, если данные калибровки начинаются с 1, второе значение 9, третье значение 24?
-
Это означает, что разрешение в диапазоне 0-0.1 мм всего 9, а в диапазоне 0.1-0.2 мм — 15. Поэтому рекомендуется выполнить калибровку снова, чтобы получить разрешение в диапазоне 0-0.1 мм больше 10.
-
-
Не забудьте выполнить коррекцию высоты Z после G28 или перед выполнением команд
Z_tiltиquad_gantry_level -
Названия разделов должны быть правильно написаны с учетом регистра букв, иначе klipper сообщит
Unknown pin chip name 'probe'