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

 
Установка патча в прошивку klipper
- 
Откажитесь от предыдущих изменений в файле klipper и обновите klipper
cd
cd ~/klipper
git checkout .
git pull - 
Склонируйте последнюю версию кода Bdsensor
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 или модуль CAN Headboard, к которому подключен 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 и отредактируйте
[Bdsensor],sda_pin,scl_pin. Также не забудьте отключить другие секции сенсоров, например, BLtouch. Вы можете подключить Bdsensor к материнской плате или модулю CAN Headboard, - 
В секции
[Bdsensor]измените значениеspeedна 0.8. Это применяется только для команд z_tilt и PROBE_ACCURACY. Чем меньше значение, тем выше точность при измерении, так как MCU при возвращении на дом не считывает данные с 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:. Положительное значение означает приближение к горячему столу, отрицательное - отдаление. Другие настройки для регулировки высоты сопла могут вызвать ошибки - 
Для активации быстрого сканирования Z-axis удалите символ '#' перед строкой
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 
После установки проверьте с помощью следующих команд gcode
M102   S-1     # Чтение информации с датчика
M102   S-2     # Чтение одного значения расстояния
Проверка подключения
- 
Через консоль отправьте команду
M102 S-1. Пример возвращаемого сообщения, если возвращается пустая строка или другая строка, проверьте подключение и порядок проводовSend: M102 S-1
Recv: V1.0 pandapi3d.com 
Калибровка
- Очистите сопло, затем через консоль переместите Z-ось, пока сопло едва касается поверхности стола (Bdsensor использует эту позицию как нулевую точку, поэтому значение 
z_offsetравно 0, именно поэтому в разделе [Bdsensor] установлено значение 0) - Через консоль отправьте команду gcode 
M102 S-6, принтер постепенно поднимет Z-ось на 0.1 мм каждый раз, пока не достигнет 4 мм. Не запускайте команду M102 S-6 до установки датчика или выключайте питание принтера во время калибровки, иначе будут удалены старые калибровочные данные. В этом случае просто повторите калибровку - После этого вы можете проверить успешную калибровку Bdsensor, отправив команду 
M102 S-5. Это вернет исходные калибровочные данные, сохраненные в Bdsensor. 
Важно помнить:
- 
Лучшая скорость возврата Z-оси составляет 5
 - 
Если первый калибровочный результат, возвращаемый командой M102 S-5, больше 400, это означает, что датчик установлен слишком высоко, его нужно переставить ближе к поверхности стола. Рекомендуемое значение первого результата — 100. Также убедитесь, что второй результат больше первого на 10 и более.
- 
FAQ: Что означают значения калибровки, начинающиеся с 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'