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

Настройка Marlin для датчика BL Touch (3D Touch) для платы BigTreeTech_SKR_mini_E3_V3.0

luxometr
Идет загрузка
Загрузка
27.07.2023
6518
24
3D-печать

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

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

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

9
Статья относится к принтерам:
Ender 3 Pro

      Немного истории. Захотелось мне использовать при печати Linear Advance. Но как многие знают, родная палата в силу своих возможностей не дает этого. Какие причины и почему я не буду рассматривать в рамках этой статьи. Если есть желание можно найти все на просторах интернета. В данной статье будет только та информация, которую мне пришлось собирать по интернету, для подключения датчика выравнивания стола, так как все статьи либо копи-пасте, либо не про нас. Так вот, вернемся к Linear Аdvance. Чтоб его включить в прошивке Marlin и использовать нужна память. И тут я решился на покупку новой платы. Долго размышлял и сравнивал, делал анализы и решил все-таки прикупить BigTreeTech SKR mini E3 V3. Почему именно ее? Я напишу в следующий раз, все-таки статья не об этом.

      Ну так вот плата приобретена, установлена и работает отлично. Теперь задолбало меня еще две вещи: 1. постоянные накручивания энкодера до нужной функции или раздела меню и 2. это вечна подгонка стола для печати крупных моделей. Нет, стол конечно ровный (стекло). Но заметил, что с одной стороны немного выгнуто, с другой немного вогнуто. Перепады в разных местах разные. И первый слой как вы понимаете ложится так себе. Когда терпению пришел конец, был куплен 3D Touch в магазине DEFORCE Trianglelab Store. Почему его, тема для следующего материала.

      Итак, в чем же суть статьи? Да в том, что есть куча материала как статей, так и видео как подключить к принтеру датчик 3D Touch (BL Touch), но есть, но… Все они о подключении к родной плате Ender либо на английском языке. Я английский плохо понимаю, учил немецкий в школе и переучивать мне нет желания. Поэтому, рассмотрев много материала и пересмотре кучу роликов, все, что сделал, опишу тут. Может кому еще пригодится. На оригинальность не претендую, так как статья чисто для таких как я, которые только вникают во всю эту кухню.

      Итак, я предполагаю, что датчик ваш уже установлен, а читаете вы это, потому, что вы так же, как и я искали информацию, как же подготовить Marlin. В данном случае пойдет речь о Marlin 2.1.2.1.

      Первое, что мы делам загружаем папку Marlin в Visual Studio Code. Тут я подразумеваю, что вы уже это когда-то делали для каких-либо ваших целей. Если нет, то посмотрите видео в Ютубе, их там много.

      Далее переходим в файл Configuration_adv.h и поиском находим следующие строки:

- для отображения температуры в Репетирхост раскомментируем. Но если Вам этого не нужно или для экономии памяти, то не включайте, оставьте как есть.

466 #define SHOW_TEMP_ADC_VALUES

      Одной из наиболее важных опций для качественного выравнивания стола является возможность комбинировать движения baby step с высокой высотой оси Z (M851).

1886 #define BABYSTEP_ZPROBE_OFFSET

В этом файле все.

      Далее переходим в Configuration.h.

      1125 #define Z_MIN_PROBE_ENDSTOP_INVERTING false – хотя во многих почти 99% источниках заявляют о необходимости изменить false на true, однако делать этого не нужно, не изменять в версиях Marlin 2.0.Х и выше.

      1142 //#define G26_MESH_VALIDATION отключено - это при использовании любой из систем выравнивания на основе сетки (1.1.7) вы можете активировать G26_MESH_VALIDATION для печати тестовых шаблонов и точной настройки сетки. Полную информацию см. в разделе Проверка сетки G26. Команда G26 принимает параметры для размера сопла, высоты слоя и т. д. Приведенные выше подпараметры определяют значения по умолчанию, которые будут применяться к пропущенным параметрам.

     Далее важно!

     Если Вы подключаете датчик в разъем вместо концевика оси Z, то раскомментируем строку

#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN и проверить, что закомментирована строка

//#define USE_PROBE_FOR_Z_HOMING иначе получите при компиляции ошибку.

      Но если Вы подключили все разъёмы датчика в разъём Z-Probe я именно ткой способ рекомендую. То сделайте все на оборот #define USE_PROBE_FOR_Z_HOMING раскомментируем, а

//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN комментируем.

      Хотя все пины подключений указанты в соответствующем файле все же не лишним будет явно определить пин подключения. Если после строки #define USE_PROBE_FOR_Z_HOMING у Вас не будет строки #define Z_MIN_PROBE_PIN PC14 а скорее всего не будет то ничего страшного просто ниже добавляем ее. Повторюсь еще раз, это все мы делаем для платы BigTreeTech_SKR_mini_E3_V3.0.

1336 #define BLTOUCH включаем (тут и далее по тексту «включаем» - раскомментируем, «выключаем» - комментируем двумя косыми «//» перед началом строки).

      Далее важно измерить расположение датчика относительно сопла.

      Хотя это часто приводит к путанице или является причиной того, что сопло не ориентируются по центру стола. Тем не менее, при некотором понимании, NOZZLE_TO_PROBE_OFFSET легко настроить.

      Например, параметр NOZZLE_TO_PROBE_OFFSET определяет расстояния от датчика до сопла. Из-за этого требуются следующие измерения.

      Насколько левее (-) или правее (+) находится зонд от сопла по оси X. Затем указывается, насколько впереди (-) или позади (+) находится датчик от сопла по оси Y. Наконец, последняя настройка предназначена для начальной высоты Z, где отрицательное значение (-) ближе к кровати, а дальше - положительное (+). Но смещение по Z устанавливается позже, когда кровать выровняется.

      Кроме того, приведенные ниже примеры показывают взаимосвязь каждой оси при определении параметра NOZZLE_TO_PROBE_OFFSET.

#определить NOZZLE_TO_PROBE_OFFSET { X, Y, Z}

      Однако буквы не используются и служат только для иллюстрации того, как установить NOZZLE_TO_PROBE_OFFSET. Более того, гораздо более вероятным был бы приведенный ниже сценарий, при котором сопло находится на 44 мм левее, на 11 мм впереди сопла, а смещение Z оставлено как есть для последующего использования.

1488 #define NOZZLE_TO_PROBE_OFFSET { -44, -11, -1,850}

      Далее следует определить границы измерений. Для того, чтобы щуп не брал пробу там, где нет стола 10 мм будет достаточно, но или, например, если у Вас используются зажим, чтоб их не зацепить при измерениях дистанцию следует увеличить. Я измерил расстояние от края стола до края зажима и у меня вышла цифра 19 мм. Для страховки я поставил 22мм. Это хорошо.

1492 #define PROBING_MARGIN 22 - 22 мм от краев стола, чтоб щуп не зацепил зажимы

     Далее если вы хотите, чтоб щуп брал две пробы, одну быструю вторую медленную то раскомментируем

1548 #define MULTIPLE_PROBING 2

      Если включить следующую строку, то щуп буде производить пробы 3 раза и выпадающее значение отбрасывать. 1549 #define EXTRA_PROBING 1

      Я отключил, так как установил сетку 5х5 и это занимает много времени.

1549 //#define EXTRA_PROBING 1

      Включение функции теста точности датчика (позволяет оценить точность работы датчика командой M48)

1577 #define Z_MIN_PROBE_REPEATABILITY_TEST

      Следующую строку я не включил так как будет отключаться преднагрев стола и сопла во время измерений. Но если вы замечаете, что датчик совершает ошибки и предполагаете, что виной тому служат наводки от нагревательных элементов, то раскомментируйте эту строку

1592 #define PROBING_HEATERS_OFF

      Далее если вы желаете, чтоб перед измерениями, которые вы можете запустить по команде из меню принтера начался преднагрев сопла и стола то включаем эту строку.

1603 #define PREHEAT_BEFORE_PROBING

Ниже в строках 1605 и 1606 вы можете настроить желаемые температуры нагрева

         #if ENABLED(PREHEAT_BEFORE_PROBING)

1605 #define PROBING_NOZZLE_TEMP 230 // (°C) Only applies to E0 at this time

1606 #define PROBING_BED_TEMP 55

        #endif

      Хочу заметить, что это же можно сделать и в строках начиная с 1893.

1893 //#define PREHEAT_BEFORE_LEVELING

1894 #if ENABLED(PREHEAT_BEFORE_LEVELING)

1895 #define LEVELING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time

1896 #define LEVELING_BED_TEMP 50

1897 #endif

      Чем функционально они между собой отличаются я так и не нашел информацию. Провел эксперимент, загрузив и так, и так прошивку, разницы не нашел. Если Вы знаете напишите, буду признателен.

      Пока MIN_SOFTWARE_ENDSTOP_Z включен, это может вызвать проблемы с установкой начальной высоты Z или уменьшением первого слоя, поскольку это предотвращает опускание оси Z ниже 0, Таким образом, это одна из наиболее важных опций для отключения.

1736 //#define MIN_SOFTWARE_ENDSTOP_Z

      Далее нужно сделать выбор, каким методом будет проводится измрение. Пере двам несколько способов.

1876 //#define AUTO_BED_LEVELING_3POINT

1877 //#define AUTO_BED_LEVELING_LINEAR

1878 //#define AUTO_BED_LEVELING_BILINEAR

1879 //#define AUTO_BED_LEVELING_UBL

1880 //#define MESH_BED_LEVELING

      Я не особо силен во всех них, выбрал BILINEAR, который является самым оптимальным пока.

      Перед этим если раннее включали или включено MESH_BED_LEVELING, отключаем.

 1880 //#define MESH_BED_LEVELING

      Включаем 1878 #define AUTO_BED_LEVELING_BILINEAR

      Чтоб каждый раз карта измерений не обнулилась, включаем

1887 #define RESTORE_LEVELING_AFTER_G28

1888 //#define ENABLE_LEVELING_AFTER_G28 отключаем.

      Дальше определите сколько точек необходимо для замеров. Я пока выбрал сетку 5 х 5, но позже планирую изменить на 3 х 3. Тут оптимально от 3 до 5, ну максимум до 6. Иначе если будет мало, измерения будут быстрыми, но не точными, если много медленными, но более точными.

1958 #define GRID_MAX_POINTS_X 5 //– это означает сетку 5 х 5

      Так как мы отодвинули сопло аж на 22 мм от краев стола, теперь нужно как-то заполнить этот пробел, чтоб сетка была определена в тех областях где измерения, не проводятся. И хотя область печати у нас тоже меньше можно не включать, но я все же считаю, пусть будет. После включения этой строки по каким-то внутренним алгоритмам программа будет достраивать сетку.

1968 #define EXTRAPOLATE_BEYOND_GRID

      Далее одна из ВАЖНЫХ настроек. Важно отметить, что это предотвращает попытку датчика выравнивания слоя зафиксироваться на краю стола, где под ним может не оказаться печатающего стола. Без этого ось Z продолжала бы опускаться и потенциально могла привести к повреждению принтера.

2098 #define Z_SAFE_HOMING включаем чтоб датчик парковался в центре стола

      Возможность изменять и сохранять настройки 3D-принтера важна, однако по умолчанию эта опция отключена. Таким образом, нам нужно включить опцию EEPROM_SETTINGS. Кроме того, чтобы мы могли обмениваться данными с прошивкой, включите параметр EEPROM_CHITCHAT.

2184 #define EEPROM_SETTINGS

2186 #define EEPROM_CHITCHAT

      Предел для установки Z Offset в мм. Эти параметры означают, что при замере датчиком срабатывание будет ожидаться в диапазоне от 3 до -3 мм. Если датчик сработает раньше или позже это будет расцениваться как ошибка. Вы можете выбрать свои значения, но я думаю в пределах 6 мм достаточно для безопасности.

1573 #define Z_PROBE_OFFSET_RANGE_MIN -3

1574 #define Z_PROBE_OFFSET_RANGE_MAX 3

      На этом все. Если все сделали, компилируем прошивку и заливаем в плату. У меня завелось все с первого раза.

      Господа критики и эксперты! Я все понимаю, что, когда читаешь готовое, легче выискивать и критиковать. Вы пожалуйста обратите внимание, что статья написана в первую очередь для людей так же роющих интернет в поисках истины. Если будут действительно дельные замечания, готов читать, а любителям по писАть просьба упражняться в написаниях своих статей. Спасибо, что дочитали до конца.

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

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

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

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