Перейти к основному содержимому

Установка BDsensor

Подключите кабель датчика к основной плате или плате CAN-шины инструмента.

  • Обратите внимание, что SB2040 не может использовать BDsensor
  • Обратите внимание, что для SHT36 необходимо подключить CLK/SCL (Input) BDsensor к входу высокого напряжения и установить перемычку
  • Линии CKL и SDA BDsensor можно подключить к любым GPIO-пинам платы. Также можно подключить кабель BDsensor напрямую к порту Bltouch, например:
BLtouch    |    BDsensor
5V --> 5V
GND --> GND
S --> CLK/SCL (Input)
GND --> GND
Zmin --> SDA (Input/Output)
  • Из-за того, что некоторые пины в разъемах основной платы могут не быть напрямую подключены к GPIO MCU (например, они могут иметь фильтрующие конденсаторы или быть изолированы через MOSFET, диод или оптопару, но если они изолированы через резисторы или подтягиваются/опускаются резисторами, это тоже можно), они не могут использоваться с BDsensor. И прошивка сообщит об ошибке подключения. Например:

  • Разъемы вентиляторов и нагревателей изолированы через MOSFET,

  • Разъемы для термисторов и концевых выключателей/датчиков на некоторых платах обычно подключены к GND через фильтрующие конденсаторы,

  1. Установите BDsensor вблизи хотенда, как показано на рисунке. STL of mount, 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 или плату инструмента 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 не считывает BDsensor в реальном времени при возврате в исходное положение. [BDsensor]

  • Для использования BDsensor как концевого выключателя при возврате Z в исходное положение, измените endstop_pin в [stepper_z] на endstop_pin: probe:z_virtual_endstop

  • Убедитесь, что в printer.cfg есть [safe_z_home]

  • Измените значение z_offset в [bed_mesh] и [z_tilt] или [quad_gantry_level] на 1 (рекомендуется 0.7-1.0mm), так как по умолчанию в Klipper это значение равно 5mm, что может выйти за пределы диапазона датчика

  • Высота сопла подходит только для настройки z_adjust:, положительные значения означают приближение к кровати, отрицательные - удаление от нее, другие настройки высоты сопла могут привести к ошибкам

  • Для активации быстрого сканирования кровати удалите символ # перед no_stop_probe:true

  • Ниже приведен пример конфигурации.

    [BDsensor] 
    scl_pin:PC6 # Сигнальный пин сервопривода
    sda_pin:PC3 # Пин концевого выключателя
    delay: 20 # 20us на импульс, это значение должно быть >=20, но не должно превышать 50
    z_offset:0 # это `z_offset` должно быть установлено в 0.
    z_adjust:0.0 # корректировка оси Z, заменяет функцию z_offset. в пределах от -0.3 до 0.3mm
    x_offset: -34
    y_offset: 0
    #no_stop_probe:true # активируйте это для быстрого зондирования, инструмент не будет останавливаться в точке зондирования.
    position_endstop: 0.8 # ось 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-code

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-code 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.

  • Не забудьте после выполнения G28 или команд Z_tilt и quad_gantry_level настроить высоту оси Z

  • Должны быть соблюдены правильные заглавные и строчные буквы в названиях разделов, иначе Klipper сообщит об ошибке Unknown pin chip name 'probe'