Настройка BLTouch/3DTouch в Klipper, RURAMPS4D + Due
Коммутацию подробно описывать не буду, поскольку у каждой платы она своя, но вкратце - для RuRAMPS4D диаграмма приведена здесь, ей я и руководствовался - подключил к разъёму SERVO0 и к отдельно выделенному разъёму Z_Probe. Вместо Z_Probe можно использовать разъём концевика Zmin, но для плат с 3.3V потребуется доп. резистор - в примере ниже будет описано подключение именно к Z_Probe.
Физически датчик должен монтироваться в определённом положении относительно сопла: если по X/Y тут есть некоторая свобода фантазии - лишь бы не ближе 15 мм к хотенду, то по Z условие в документации описано жёсткое:
- щуп датчика в закрытом положении должен выглядывать из корпуса на длину от 6 до 7 мм (см. регулировочный винт на торце датчика, между крепёжными отверстиями).
- нижний край пластикового корпуса датчика должен быть приподнят по Z на 8 мм относительно сопла.
Мой датчик от продавца пришёл со щупом 8,1 мм - пришлось обращаться к регулировочному винту, чтобы загнать щуп поглубже в корпус - до 6,5 мм.
Итак, датчик смонтирован, время обратиться к конфигу Klipper. Пример конфига есть здесь.
Для начала прописываем серву, pin берёте согласно вашему конкретному железу. Для Arduino Due с RuRAMPS4D сигнальный контакт SERVO0 приходит на пин PC25 (digital pin 5 в нумерации Arduino).
Добавляем в произвольное место конфига секцию servo, название (в данном случае у меня 'bltouch') роли не играет - просто текстовая метка для конкретной сервы.
[servo bltouch]
pin: PC25 #здесь проставьте свой пин, к которому подключена серва
maximum_servo_angle: 180
minimum_pulse_width: 0.0006
maximum_pulse_width: 0.0024
Далее нужно прописать секцию probe, описывающую параметры самого датчика - смещение относительно сопла, команды активации и деактивации. Здесь название сервы должно совпадать с прописанным в секции servo. Пин - это разъём, к которому вы подключили двухконтактный штекер от датчика: для Arduino Due с RuRAMPS4D сигнальный пин Z_Probe подведён к PC14 (digital pin 49 в нумерации Arduino).
[probe]
pin: ^PC14 #здесь проставьте свой пин, куда подключён датчик, ^ - pull-up. Если сигнал нужно инвертировать - ! перед номером.
x_offset: 0.0
y_offset: 37.5
z_offset: 2.16 #см. процесс поиска z_offset ниже по шагам
activate_gcode:
SET_SERVO SERVO=bltouch ANGLE=10
SET_SERVO SERVO=bltouch ANGLE=60
G4 P200
deactivate_gcode:
SET_SERVO SERVO=bltouch ANGLE=90
G4 P100
Как я искал z_offset... :)
- Выравниваете стол (не сильно критично конечно, поскольку измерять вы будете в одной и той же точке, но желательно чтобы ровный был на стадии измерения). Определяете координаты X/Y- где будете измерять разницу. Например X150 Y100 (центр, у меня стол 300x200).
- Хоумите Z: G28 Z или в GUI/меню.
- Перемещаете X/Y в X150 Y100. Поднимаете стол Z0 (то бишь к соплу) - у меня Z0 чётко до касания соплом стола, без зазора вообще. Далее до конца измерений никаких регулировок уровня стола не трогаете.
- Хоумите Z: G28 Z или в GUI/меню.
- Перемещаете X/Y в положение с учётом смещения датчика относительно сопла. В моём случае это X150 Y62.5 (100-37.5 мм) - щуп датчика окажется точно в положении сопла на шаге 3.
- Даёте команду 'SET_SERVO SERVO=bltouch ANGLE=10' - щуп выдвинется на полную длину, затем следом 'SET_SERVO SERVO=bltouch ANGLE=60' - датчик перейдёт в рабочий режим.
- Исходя из того, что по Z разница между соплом и щупом около 2 мм поднимаете стол в Z3 - смотрите, сработал ли датчик (при срабатывании сразу же загорится светодиод на нём). Если не сработал - хоумите Z снова и поднимаете до меньших значений с небольшим шагом: 2.9, 2.8, 2.7 и т.д. Задача - максимально точно найти ту высоту, при которой датчик стабильно будет срабатывать. Между попытками измерениями обязательно повторять хоуминг Z - поскольку в дальнейшем все измерения у вас будут делаться после хоуминга.
- Если датчик сработал, хоумите Z - уменьшаете последнее значение на небольшую величину (я шагами по 0,005 мм возился). Даёте команду 'SET_SERVO SERVO=bltouch ANGLE=160', чтобы сбросить ошибку датчика (а 99% что он у вас останется моргать диодом, уперевшись щупом в стол), далее шаг 6. Вот здесь как раз я нашёл нужную величину - стол останавливается ровно в момент, когда срабатывает датчик - ни раньше, ни позже: так и должно быть у вас.
- Долго и муторно находите искомую дельту: в моём случае Z2.16 - это гарантированное срабатывание датчика. На всякий случай убеждаетесь, что в процессе измерений стол у вас никуда не убежал - X150 Y100 Z0 должен привести сопло в ту же точку с соприкосновением со столом (см. шаг 3).
- Прописываете найденный z_offset в секции probe. Настройка самого датчика на этом закончена.
После того, как убедились, что механизм работает и риска зафигачить соплом в стол нет - в секции своего stepper_z меняете position_min на отрицательную величину: в рамках этой величины датчик будет поднимать стол до срабатывания. Важно: position_min не должен превышать разницу между соплом и датчиком по высоте!!! т.е. в моём случае не более 2.19 - я выбрал 1.5 мм для безопасности (position_min = -1.5), чаще всего этого хватает (если не хватает - имхо вам предстоит серьёзный разговор со своим столом, разберитесь - почему он настолько кривой :))
[bed_mesh]
min_point = 35,35
max_point = 278,148
#параметры ниже не трогал, добавил на будущее и закомментировал
#probe_count: 3,3
#fade_start: 1.0
#fade_end: 5.0
Вот собственно и всё: сохраняете конфиг, перезапускаете службу klipper и можно пользоваться.
При подаче команды BED_MESH_CALIBRATE должен запуститься процесс замера - проще показать на видео. После замеров будет сформирована таблица для дальнейших поправок в процессе печати, её можно посмотреть командой BED_MESH_OUTPUT. Чтобы сохранить текущие замеры в конфиге - можно дать команду SAVE_CONFIG, но у себя в силу хлипкости фанерного стола я предпочитаю замерять всё непосредственно перед печатью. BED_MESH_CLEAR очищает таблицу измерений.
В слайсере я добавил следующие команды в starting script:
SET_SERVO SERVO=bltouch ANGLE=160 ;сбрасываем ошибку на датчике, если она есть
G28 ; стандартно - хоуминг
BED_MESH_CALIBRATE ; выполняем замеры
G0 X150 Y100 Z10 F1000 ; переводим сопло в центр, тут по желанию
а в ending script добавил:
SET_SERVO SERVO=bltouch ANGLE=160 ;сбрасываем ошибку на датчике, если она есть
Профит.
Еще больше интересных статей
Быстрая печать ажурных стенок в Ultimaker Cura
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Охлаждение мотора директа
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Все ок, инфа полезная сама по....
Так он практически сразу после...
Как грицца, it depends...Если....
Всем привет, может кто знает п...
Приветствую, начал знакомится...
Здравствуйте. Имеется стоковый...
Всем доброго! По поводу жидкой...