Прошивка Marlin для Arduino Mega 2560 и Ramps 1.4: настройка

Прошивка Marlin для Arduino Mega 2560 и Ramps 1.4: настройка

Пошаговый разбор файла Configuration.h в Marlin: скорость порта, плата, термисторы, концевики, шаги на миллиметр, ускорения, дисплей и заливка.

Что такое прошивка и что нужно для работы

Прошивка — это программа на плате управления, которая читает G-code, управляет механикой и нагревателями и выводит сведения о ходе печати. Для самосборных принтеров и Kit-наборов её обычно приходится настраивать самостоятельно. Marlin — одна из самых распространённых бесплатных прошивок; в неё регулярно добавляют новые функции, например автоматическую регулировку зазора и датчик окончания прутка. Ниже речь идёт о связке Arduino Mega 2560 и Ramps 1.4 и версии Marlin 1.0.2-2, поэтому номера строк могут отличаться в других выпусках.

Архив с исходниками берут в репозитории MarlinFirmware/Marlin на GitHub — релиз с пометкой Latest release, пункт Source code (zip). Для правки и записи нужна среда Arduino IDE. С новыми её версиями при заливке иногда возникают ошибки; в таком случае помогает более старая версия, например 1.6.0.

Страница релизов Marlin на GitHub
Страница загрузки Arduino IDE

В папке прошивки открывают файл Marlin с расширением .ino — запустится Arduino IDE с набором вкладок. Основные параметры собраны во вкладке Configuration.h; менять их удобно по порядку сверху вниз.

Файл Marlin.ino в папке прошивки
Прошивка Marlin, открытая в Arduino IDE

Скорость порта, плата и имя принтера

Первым делом задают скорость обмена (строка 47). По умолчанию стоит #define BAUDRATE 250000; для Arduino Mega 2560 с Ramps 1.4 ставят 115200. Для платы Gen V1.4 оставляют 250000.

Далее в строке 55 указывают плату: вместо BOARD_ULTIMAKER в параметре MOTHERBOARD прописывают один из вариантов из вкладки boards.h. Для Ramps 1.3/1.4 их четыре: BOARD_RAMPS_13_EFB (экструдер, вентилятор, стол), BOARD_RAMPS_13_EEB (два экструдера и стол), BOARD_RAMPS_13_EFF (экструдер и два вентилятора), BOARD_RAMPS_13_EEF (два экструдера и вентилятор). Обычной конфигурации — один экструдер, обдув и нагревательный стол — соответствует BOARD_RAMPS_13_EFB.

В строке 59 находится закомментированный параметр CUSTOM_MENDEL_NAME. Если убрать перед ним символы // и заменить This Mendel на своё название, оно будет показываться на LCD-дисплее.

Термисторы и температурные ограничения

Чтобы температура отображалась верно, в прошивке указывают тип датчика. В комментариях Configuration.h приведён список поддерживаемых термисторов с номерами. Распространённому китайскому термистору на 100 кОм соответствует номер 1. В строках 115–118 его записывают в TEMP_SENSOR_0 (первый экструдер) и TEMP_SENSOR_BED (стол), а в TEMP_SENSOR_1 и TEMP_SENSOR_2 при одном экструдере ставят 0.

Строки 140–143 задают предельные температуры: HEATER_x_MAXTEMP по умолчанию 275, BED_MAXTEMP — 150. При превышении нагреватель отключается. Для хотендов с тефлоновой трубкой предел стоит снизить до 260 градусов. Параметр EXTRUDE_MINTEMP 170 (строка 230) запрещает вращение мотора экструдера, пока сопло холоднее 170 градусов, — это защита от продавливания непрогретого пластика. Отключается она комментированием строки.

Концевики, парковка и направление моторов

Логика концевых выключателей задаётся в строках 301–306 константами вида X_MIN_ENDSTOP_INVERTING. Для механических концевиков, замыкающих цепь при срабатывании, оставляют true (так стоит по умолчанию), для оптических, размыкающих цепь, ставят false. Проверить результат можно командой M119: в ответе open означает, что концевик свободен, TRIGGERED — что сработал.

Прошивка поддерживает по два концевика на ось, но обычно ставят только минимальные, а максимум определяется размерами области. Исходное положение задают X_HOME_DIR, Y_HOME_DIR, Z_HOME_DIR (строки 337–339): -1 — парковка к минимуму, 1 — к максимуму. Если при парковке каретка едет от концевика, разворачивают разъём мотора на 180 градусов либо меняют значение соответствующего параметра INVERT_X_DIR, INVERT_Y_DIR, INVERT_Z_DIR или INVERT_E0_DIR на противоположное.

Размеры рабочей зоны указывают в X_MAX_POS, Y_MAX_POS, Z_MAX_POS и соответствующих MIN (строки 345–350); по умолчанию это 205x205x200 мм.

Шаги на миллиметр

Параметр DEFAULT_AXIS_STEPS_PER_UNIT (строка 490) содержит четыре числа — сколько шагов нужно для перемещения на 1 мм по X, Y, Z и для экструдера. Расчёт ведётся для моторов на 200 шагов на оборот и микрошага 1/16, который выставляется перемычками на плате.

  • X и Y, ремень GT2 с шагом 2 мм и шкив на 20 зубьев: (200*16)/(2.0*20) = 80;
  • ось Z, шпилька M8 с шагом 1,25 мм: 200*16/1.25 = 2560;
  • шпилька M5 с шагом 0,8 мм: 200*16/0.8 = 4000 (вариант Prusa i3 Steel);
  • трапецеидальный винт 8 мм, шаг 1 мм, один заход: 3200;
  • трапецеидальный винт 8 мм, шаг 2 мм, один заход: 1600;
  • трапецеидальный винт 8 мм, шаг 2 мм, четыре захода: 400.

Значение для экструдера зависит от редукции и диаметра подающей шестерни и подбирается опытным путём уже после первой заливки. Сопло выкручивают, EXTRUDE_MINTEMP временно снижают до 5, подают 100 мм прутка и измеряют, сколько прошло на самом деле. Коэффициент корректируют, пока длина не совпадёт на разумном отрезке, например 200 мм, после чего возвращают ограничение 170.

Скорости и ускорения

DEFAULT_MAX_FEEDRATE по умолчанию равен {500, 500, 5, 25} мм/с для X, Y, Z и экструдера; значения для X и Y рекомендуется уменьшить с 500 до 200. Ускорения важны не меньше: при завышенных значениях моторы пропускают шаги и слои смещаются. Стандартные 9000 мм/с² для X и Y в DEFAULT_MAX_ACCELERATION слишком велики — для первой настройки ставят не более 1000, а DEFAULT_ACCELERATION снижают с 3000 до 1500.

Дисплей и запись прошивки

Для популярного дисплея RepRapDiscount Smart Controller раскомментируют строки ULTRA_LCD, SDSUPPORT, ULTIPANEL и REPRAP_DISCOUNT_SMART_CONTROLLER. Затем в меню «Инструменты» — «Плата» выбирают Arduino/Genuino Mega or Mega 2560, указывают COM-порт принтера и нажимают кнопку загрузки с круглой стрелкой. Ход записи показывает индикатор, по завершении появляется подтверждающее сообщение — после этого принтер можно запускать.

← Все статьи