Металл2024 Реклама
Метобр2024 Реклама

BLTouch и оптические концевики - есть тонкости!

ruomserg
Идет загрузка
Загрузка
31.03.2019
3887
12
Личные дневники

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

9
Статья относится к принтерам:
Anycubic i3 Mega
Коллеги, приветствую!

Пишу результаты нескольких часов разборок с исходниками Марлина 1.1.x.

Предыстория (можно пропустить):

После нового года к нам в центр прототипирования попал на восстановление школьный Anycubic I3 Mega. Поскольку в нем выгорела почти вся электроника (и дисплей, и trigorilla, и частично зеленый разъем на корпусе...), то помимо перехода на Gen.L и MiniLCD устанавливали оптические концевики по Z и BLTouch.



Мне как-то высказывали мнение, что последние два апгрейда как бы исключают друг друга (или по крайней мере - являются излишними). Не соглашусь с этим:
  • Задача концевых выключателей в 3D-принтере - это быстро и единообразно приводить оси к нулю. Оптический концевик по 'Z' принципиально хорош тем, что допускает дальнейшее движение оси в сторону уменьшения координат: флажок-то ни во что не упирается, а проходит в зазоре датчика! Таким образом, можно выставить концевики в комфортных 2-3 миллиметрах от рабочей плоскости стола, и потом выбрать это расстояние командой M206. И калибровать удобнее, и стекло на столе дольше живет. :-)
  • Если установлены два концевика по Z и два независимых мотора на этой оси (а для RepRap это скорее правило, чем исключение) - можно включить автоматическое выведение оси X в горизонт (Z_DUAL_ENDSTOPS в adv-конфиге).
  • Использование китайской копии BLTouch в качестве Z_MIN - не лучшая идея. У датчика с выдвижным штоком вариантов сработать неправильно - гораздо больше, чем у простого оптического выключателя. А замер стола перед каждой печатью - избыточная и длительная операция.
  • Поэтому в обычной обстановке для поиска нуля используются оптические концевики, и только если первый слой ложится неудовлетворительно - запускается калибровка по BLTouch.



Такая схема уже была опробована на принтерах с одним концевиком по Z и успешно работала. А с двумя - калибровка не шла! Принтер доезжал до срабатывания концевиков по Z, и отскакивал обратно. И Z_PROBE_LOW_POINT на это поведение никак не влиял.

После копания по форумам и багрепортам Marlin выяснилось следующее:
  • Прекращение цикла измерения высоты стола при срабатывании концевика Z ранее являлось штатной функцией Марлина. Предполагалось, что концевики действительно установлены в самом нижнем возможном положении - и их срабатывание вне хоуминга является признаком какой-то неисправности.
  • Позже, в прошивку вносились изменения, которые делали такое поведение отключаемым



Если посмотреть файл endstops.cpp в районе строки 639, то увидим следующую логику:

#if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)

if (z_probe_enabled) PROCESS_ENDSTOP(Z, MIN);

#elif ENABLED(Z_MIN_PROBE_ENDSTOP)

if (!z_probe_enabled) PROCESS_ENDSTOP(Z, MIN);

#else



То есть ясно видно, что если датчик активен (z_probe_enabled) и мы не используем его в качестве Z_MIN - срабатывание концевика игнорируется (PROCESS_ENDSTOP не вызывается).

А теперь смотрим чуть выше:

#if ENABLED(Z_DUAL_ENDSTOPS)

PROCESS_DUAL_ENDSTOP(Z, Z2, MIN);

#else



То есть если у нас два концевика по Z, то их нужно отрабатывать всегда - хотя бы и при выпущенном датчике. Пришлось по-аналогии поправить логику на:

#if ENABLED(Z_DUAL_ENDSTOPS)

if(!z_probe_enabled) PROCESS_DUAL_ENDSTOP(Z, Z2, MIN);

#else


С этим изменением все работает отлично!

P.S. Вот думаю, стоит ли заводить багрепорт в 1.1.x ? Там же теперь только исправление ошибок! Или сразу в сторону 2.x смотреть ?

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

9
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама