Как настроить и отредактировать прошивку Marlin

Как настроить и отредактировать прошивку Marlin

Возможно, вы захотите использовать Marlin 2.1 на своем 3D-принтере, станке с ЧПУ или роботе. Читайте дальше и узнайте, как отредактировать прошивку Marlin!

Каждый 3D-принтер независимо от того, самодельный он или купленный, имеет плату микроконтроллера. На этой плате находится компьютерная программа, которая переводит G-код в движения шаговых моторов, работа с различными датчиками и управляет другими аспектами работы 3D-принтера. Это и есть встроенное программное обеспечение принтера. Хотя у нас есть выбор других интересных вариантов прошивок с открытым исходным кодом, таких как Klipper и RepRap, Marlin является признанным фаворитом среди производителей.

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

В этой статье мы рассмотрим последнюю стабильную версию — Marlin 2.1, выпущенную в июне 2022 года. В частности, мы рассмотрим такие важные моменты настройки, как использование правильной материнской платы, настройка механических и температурных параметров, а также то, как начать работу, продемонстрированную на примере одноэкструдерного принтера CoreXY.

Хотя у вас может быть другой тип машины, вам все равно есть что узнать о Marlin.

Зачем обновлять?

Время для обновления?

Со временем появляется желание доработать свой 3D-принтер, чтобы открыть больше функций, ускорить его, улучшить качество печати или сделать всего понемножку. Поскольку способное 32-битное оборудование дешевеет, а многие пользователи все еще работают с довольно старомодными Arduino Mega и Ramps 1.4 или платами на их основе, соблазн выбросить старое и приобрести новую хорошую плату контроллера растет.

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

Знайте, что для каждого нового дополнения вам потребуется корректировка встроенного программного обеспечения принтера. Между тем, базовое понимание микропрограммы поможет вам диагностировать проблемы, улучшить аппаратное обеспечение и получить доступ к новым функциям.

Прежде чем перейти к обновлению прошивки, давайте посмотрим, что нам потребуется.

Основные требования

PlatformIO... Все здесь!

Перед установкой новой прошивки на 3D-принтер вам понадобится следующее:

  • ПК, мышь, клавиатура и кабель USB.
  • 3D-принтер с материнской платой, совместимой с Marlin
  • Visual Studio Code с Platform IO и опционально Marlin Auto Build установленные на вашем ПК.
  • (Для плат на базе LPC-1768) SD-карта объемом 32 ГБ.

Мы не будем описывать здесь, как настроить среду сборки, но приведенные выше ссылки должны помочь.

Начиная с версии 2.0 Marlin, PlatformIO на Visual Studio Code (VSC) является рекомендуемой средой сборки для всех 8-битных и 32-битных ARM-микроконтроллеров Atmel AVR. Хотя использование Arduino IDE все еще работает для плат с процессорами AVR, пользователи сообщали о проблемах с компиляцией прошивки. Старые платы по-прежнему будут пользоваться многими исправлениями и улучшениями, но из-за ограничений памяти они ограничены в плане того, сколько новых функций можно использовать с последним выпуском Marlin.

Для тех, кто не знаком с VSC и PlatformIO, Marlin предлагает несколько простых инструкций, включая подробное руководство по настройке и использованию расширения Auto Build. Это расширение немного упрощает настройку PlatformIO для сборки проекта микропрограммы. (См. совет в следующем разделе).

Обратите внимание, что расширение Auto Build может показаться незавершенным в отношении некоторых своих функций, например, опция конфигурации находится в стадии разработки на момент написания статьи. Это, конечно, досадно, но создание, загрузка и очистка существующей конфигурации все еще возможны. Что касается загрузки, есть только одна оговорка: многие 32-битные платы требуют SD-карту для загрузки прошивки, а кнопка загрузки на самом деле ничего не делает.

Простой способ перепрошивки

В процессе разработки!

Для плат AVR и 32-битных ARM прошивку можно обновить следующим образом:

  1. Скачайте Marlin.
  2. Отредактируйте конфигурационные файлы с помощью вашего любимого текстового редактора или Arduino IDE.
  3. Скомпилируйте файлы прошивки Marlin в двоичный код с помощью интегрированной среды разработки (IDE), например PlatformIO или Arduino IDE.
  4. Загрузите код на плату.

Для плат на базе LPC-1768 выполните процедуру Re-ARM. Есть несколько дополнительных шагов, чтобы заставить плату принять новое обновление прошивки, но в остальном процедура полностью повторяет описанную выше.

Примечание к вышесказанному: При распаковке zip-файла Marlin 2.1 в подпапке Marlin обнаруживаются два конфигурационных файла: «Configuration.h» и «Configuration_adv.h«. Это два файла, которые необходимо редактировать для большинства обновлений прошивки. Чтобы сделать вашу жизнь еще проще, существуют примеры конфигурации. Каждый из них содержит версии двух конфигурационных файлов для конкретной платы. Их можно просто скопировать и вставить в подпапку Marlin.

Рекомендуется проверить, не присутствует ли ваше устройство в качестве одного из примеров конфигурации. Если это так, обязательно скопируйте оба файла конфигурации в подпапку Marlin, прежде чем открывать их с помощью PlatformIO. Marlin Auto Build автоматически распознает вашу конфигурацию и позволит вам выбрать различные версии процессоров, если это применимо. Нажмите кнопку Build, чтобы проверить, что все в порядке, прежде чем что-либо редактировать. Попробуйте еще раз, если в первый раз не получилось… Такое может случиться.

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

Начнем обновление

Первые шаги

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

Прежде чем начать возиться с прошивкой, запишите, что у вас есть:

  • Кинематика принтера FDM: Cartesian, CoreXY, delta, robotic arm и т.д.
  • Тип платы контроллера: Ramps 1.4, MKS SBASE, SKR Pro и т.д.
  • Используемые драйвера: A4988, DRV8825, TMC2160 и т.д.
  • Дисплей: Full Graphics Controller, LCD и т.д.
  • Концевики: Сколько? На каких осях? (Понять максимальное и минимальное положение для вашего принтера).
  • Термодатчики: Термистор для подогреваемого стола и сопла
  • Экструдеры: Тип, количество и т.д.
  • Тип датчика
  • Размеры вашего принтера: Максимальное перемещение по каждой оси, смещение между соплом и зондом и т.д.

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

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

Начальная конфигурация

Так много возможностей!

При работе с прошивкой важно отслеживать вносимые изменения. Для этого в разделе «info» в начале кода можно добавить любой текст в двойных кавычках. Ввод даты и типа внесенных изменений поможет вам отслеживать настройки машины, а не просматривать код заново. Обратите внимание, что это не влияет на код и не будет отображаться при запуске машины.

Теперь перейдем к разделу «machine». По умолчанию скорость передачи данных установлена на стандартном уровне 250 000. Это скорость обмена данными между компьютером и платой контроллера при подключении через USB. Важно знать это значение, поскольку вам будет предложено выбрать скорость передачи данных для подключения к хост-программе, такой как PronterFace или Repetier Server. Некоторые платы контроллеров принимают только определенные скорости передачи данных для связи, например, Ramps 1.4 и Mega combo, которые принимают только до 115 200.

Далее необходимо выбрать используемую плату контроллера. Это очень важно, так как от этого будет зависеть расположение контактов ввода и вывода (I/O). По умолчанию используется Ramps 1.4, с экструдером, вентилятором и подогреваемым столом в качестве 12В выходом. В PlatformIO откройте файл «src/core/board.h» и найдите свою плату в списке. Важно отметить, что если вы следовали нашему совету о примерах конфигурации, материнская плата уже должна быть установлена правильно!

Если вы не можете увидеть это сразу, прокрутите список вниз. Например, если вы используете плату Azteeg, вы можете либо скопировать название платы, которое следует за «#define», либо использовать номер напрямую. В данном случае номер 2501, как показано ниже:

#define MOTHERBOARD BOARD_AZTEEG_X5_GT

или

#define MOTHERBOARD 2501

Далее необходимо задать количество экструдеров. Поскольку мы используем один экструдер, мы вводим значение 1:

#define EXTRUDERS 1

Наконец, укажем диаметр филамента:

#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75

Настройки температуры

Это нагрев

3D-принтеры FDM экструдируют пластик, нагревая материал до температуры 300 °C. По этой причине каждый нагреватель поставляется с термистором или термопарой — устройством, которое измеряет фактические значения температуры в реальном времени и посылает обратную связь контроллеру, сообщая ему, когда следует увеличить или уменьшить нагрев. Плохо подобранные или неисправные термисторы могут привести к неправильным показаниям температуры и следовательно к неисправности нагревателя.

Нам необходимо выбрать термистор из списка типов термисторов, распознаваемых компанией Marlin. В зависимости от типа используемого термистора необходимо ввести соответствующее значение. Как правило производитель хотенда предоставляет технические характеристики термистора. Наиболее распространенным типом является термистор 100-KΩ с подтяжкой 4,7-KΩ, что приводит к соответствующему значению 5:

#define TEMP_SENSOR_0 5

Если у вас есть подогреваемый стол, выберите термистор и значение. Опять же, наиболее распространенное значение термистора = 5:

#define TEMP_SENSOR_BED 5

Мы можем пропустить настройки PID (пропорционально-интегральной производной), так как они хорошо откалиброваны и настроены сами по себе.

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

Настройки кинематики

Кинематика

В 3D-принтерах используются механизмы движения для перемещения печающей головки и рабочего стола относительно друг друга. Эти механизмы и их узлы — то, что приводит к таким названиям, как «CoreXY» и «H-bot». Различные системы кинематики используют различные математические представления для определения движения машины. По умолчанию Marlin предполагает, что вы используете стандартный 3D-принтер в декартовом стиле (также называемый XZ-головой или принтером в стиле i3).

Если вы используете систему CoreXY или H-bot обязательно активируйте соответствующие настройки. Чтобы облегчить себе жизнь, вы можете загрузить предварительно настроенный пример из хранилища конфигураций на GitHub. Только не забудьте отредактировать все основные пункты, уже упомянутые выше!

Если вы не найдете подходящий пример, вы можете просто активировать свою конфигурацию, убрав два прямых слэша перед вашим выбором (и добавив их ко всем остальным). «COREXY» и «COREYX» наиболее распространены для принтеров CoreXY и H-bot. Они оба имеют одну и ту же фундаментальную математическую основу и следовательно, одна и та же настройка работает для любого стиля.

Поскольку мы используем кинематику CoreXY, вот как будет выглядеть наш код:

#define COREXY
//#define COREXZ
//#define COREYZ
//#define COREYX
//#define COREZX
//#define COREZY

Концевики

Параметры концевиков позволяют выбрать положение наведения сопла и стола. «XMIN» — это минимальное положение, которое в большинстве случаев будет равно 0, а «XMAX» — максимальное положение для заданной вами оси. Опять же, вам нужно будет манипулировать прямыми слэшами:

#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG

Некомментируя позицию «MIN» для всех осей, вы определяете, что все три оси должны быть направлены в минимальное положение (0,0,0).

Если вы хотите, чтобы ось ‘X’ перемещалась в минимальное положение, а оси ‘Y’ и ‘Z’ перемещались в максимальные положения, код будет выглядеть следующим образом:

#define USE_XMIN_PLUG
//#define USE_YMIN_PLUG
//#define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG
#define USE_YMAX_PLUG
#define USE_ZMAX_PLUG

Настройка концевиков

Настройки механического концевого выключателя здесь

Большинство концевиков имеют два основных режима, позволяющих плате контроллера узнать, сработал выключатель или нет. Первый — «нормально замкнутый» (NC) и второй — «нормально разомкнутый» (NO). В зависимости от того, как подключен концевик, эти режимы могут различаться.

Когда концевик нажимается, он посылает сигнал на плату в зависимости от типа датчика. Иногда этот сигнал инвертирован, то есть плата считает, что выключатель разомкнут, когда экструдер достиг своего исходного положения. Если вам кажется, что концевик срабатывает неправильно, попробуйте инвертировать сигнал:

#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the end stop

Настройки HOME

Прокрутите вниз, пока не увидите настройки «HOME». Когда ось перемещается в минимальное положение, соответствующее значение «HOME» должно быть равно -1.

// Direction of end stops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

Настройки объема печати

Вам также необходимо определить объем печати, чтобы случайно не переместить ось за его пределы. Это также максимальные позиции, на которые может переместиться принтер.

// The size of the print bed
#define X_BED_SIZE 200
#define Y_BED_SIZE 200

// Travel limits (mm) after homing, corresponding to end stop positions
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 200

Параметры перемещения

Занимайтесь математикой!

Шаги на единицу — это единственная настройка, с которой мы будем иметь дело в разделе «movement», но это не значит, что она будет легкой… Чтобы убедиться, что ваш принтер точно перемещается на заданное расстояние, нам нужно рассчитать значение «шагов на мм» для каждой оси.

Шаг на мм означает количество шагов, которое должен сделать двигатель, чтобы ваша машина переместилась на 1 мм вдоль определенной оси. Таким образом, это значение необходимо рассчитать для каждой из осей X, Y и Z, а также для механизма экструдера. Вот строка кода, которую нам нужно изменить:

#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 4000, 500 }

В большинстве машин используется ремень для осей X и Y и ведущий винт для подъема печатающей головки или печатной пластины. Облегчить работу могут онлайн-калькуляторы, например, калькулятор Prusa. Прокрутите вниз до раздела «Шаговые двигатели», в котором есть раздел с ременным приводом и раздел с приводом от винта.

Ремни

Для ремней есть четыре значения, которые необходимо знать, чтобы рассчитать количество шагов на мм:

  • Угол шага двигателя: Для большинства двигателей NEMA 17 этот угол составляет 1,8°. Чтобы убедиться в этом, проверьте документацию, предоставленную производителем двигателя.
  • Микрошаг драйвера: Большинство плат используют микрошаг 1/16, но в целом, эта информация будет предоставлена производителем вашей платы. Если вы купили шаговые палочки отдельно, вы можете уточнить эту информацию у поставщика. Некоторые шаговые палочки могут работать с шагом 1/32, а другие — с шагом 1/256. Чем выше число в знаменателе, тем более плавными и точными будут ваши степперы. Не превышайте 1/16, так как движение становится рывковым и неровным.
  • Шаг ремня: Если вы используете стандартные ремни GT2, то шаг будет равен 2 мм. В противном случае обязательно проверьте спецификацию.
  • Количество зубьев шкива: Шкивы GT2 бывают нескольких видов с количеством зубьев от 8 до 20.

После ввода всех значений автоматически рассчитывается окончательное значение.

Винтовая механическая передача

Понять разницу

Для оси Z с ведущим винтом угол шага двигателя и микрошаг привода будут такими же, как и в случае с ремнями. Осталось определить шаг ведущего винта, который может варьироваться в довольно широких пределах — от 2 мм до 8 мм. (Шаг — это расстояние между двумя соседними одинаковыми точками резьбы).

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

Имея эту информацию, вы сможете рассчитать значение шага на мм для оси Z.

Экструдер

Наконец, вам нужно рассчитать количество шагов на мм для двигателя экструдера.

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

(общее количество шагов для двигателя) * (величина микрошага) / d * 3,14

В качестве примера предположим, что диаметр нити составляет 10 мм, а значение микрошага — 16. Для шагового двигателя NEMA 17 общее количество шагов будет равно 200, если минимальный угол шага составляет 1,8°. Таким образом, мы получаем:

200 * 16 / 10 * 3,14 = 101,9 шагов на мм.

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

#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 101.9 }

Помните, что значения должны быть по порядку ‘X’, ‘Y’, ‘Z’ и ‘E’, и вам возможно, придется откалибровать эти значения.

Остальные настройки в разделе «movement» можно оставить как есть.

Поддержка ЖК-дисплея и SD-карт

Активировать
Активировать

Наличие устройства чтения SD-карт и ЖК-экрана делает 3D-печать намного удобнее, а также освобождает компьютер. Прокрутите вниз до раздела поддержки LCD и SD, который находится в конце файла «configuration.h».

По умолчанию поддержка SD-карт отключена. Чтобы активировать ее, просто уберите прямые косые:

#define SDSUPPORT

Для поддержки ЖК-дисплея вам потребуется знать, какой тип ЖК-дисплея вы используете. Прокрутите вниз до раздела контроллера ЖК-дисплея и найдите тип ЖК-дисплея, который у вас есть. В качестве примера мы возьмем контроллер «Full Graphic Smart». Еще раз, удалите косые черты:

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Вам также потребуется установить библиотеку u8glib. Для этого сначала загрузите библиотеку u8glib с GitHub. Затем Arduino и PlatformIO предоставляют инструкции, которые помогут вам интегрировать библиотеку в вашу IDE.

Загрузка прошивки

Сборка!
Сборка!

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

Когда вы убедитесь, что все компилируется и вы внесли все необходимые изменения, можно загрузить скомпилированный двоичный файл. Для этого подключите компьютер к плате контроллера с помощью USB-кабеля или запишите файл .bin на SD-карту и вставьте ее в слот SD-карты платы.

Компиляцию и загрузку в PlatformIO можно выполнить с помощью символа галочки, за которым следует символ стрелки вправо в нижней панели задач. В качестве альтернативы вы можете открыть проект Marlin в PlatformIO (если он был отредактирован в другом месте), настроить среду сборки, открыть Marlin Auto Build и нажать «Upload».

В файле Configuration_adv.h вы найдете более продвинутые функции, и веселье действительно может начаться. Наберитесь смелости и попробуйте улучшить качество печати, используя например линейное продвижение.

Николай

Я всегда рад вашим комментариям, предложениям или новостям из первых уст.

Оцените автора
Добавить комментарий

  1. Юрий

    Здравствуйте. Как включить нормальную поддержку русского языка? если указываю ru — на экране всё в кракозяблах.

    Ответить
    1. Николай автор

      Здравствуйте, во-первых какой экран установлен на машине поддерживает ли он русский язык и может быть дело в кодировке файла language_rus.h пересохранить в utf-8.

      Ответить
      1. Юрий

        Экоан русский поддерживает. Стояла прошовка с русским, в инете брал — с русским. Сам не могу скомпелировать.

        Ответить
        1. Aqel

          #define DISPLAY_CHARSET_HD44780 CYRILLIC

          Ответить
    2. Николай автор

      Драйвера нормально встали на комп, как компилируешь??

      Ответить
  2. вася

    Добрый вечер.как поменять координаты оси Y.На экране показывает Y200.Х0.Z0.
    #define Y_HOME_DIR 1.
    #define USE_XMIN_PLUG
    //#define USE_YMIN_PLUG
    #define USE_ZMIN_PLUG
    //#define USE_IMIN_PLUG
    //#define USE_JMIN_PLUG
    //#define USE_KMIN_PLUG
    //#define USE_XMAX_PLUG
    #define USE_YMAX_PLUG
    //#define USE_ZMAX_PLUG
    //#define USE_IMAX_PLUG
    //#define USE_JMAX_PLUG
    //#define USE_KMAX_PLUG

    Ответить
    1. Николай автор

      Здравствуйте, направление инвертировано, надо проверять в движении:
      +Y — каретка(портал?) едет к стене, назад, к концевику
      -Y — каретка(портал?) едет к вам, вперед, от концевика
      меняем местами штекеры XY

      +X — экструдер едет вправо, от концевика
      -X — экструдер едет влево, к концевику
      переворачиваем штекеры XY (не меняя местами)

      Калибровка концевиков, проверить так:
      нажимаем +Y, экструдер едет к концевику, нажимаем концевик экструдер останавливается.
      нажимаем -Х, экструдер едет влево, к концевику, нажимаем концевик, экструдер останавливается.

      Это пример как калибровать,
      какая у вас кинематика принтера?

      Ответить
  3. Aqel

    Вот для новичков пригодится справка про прошивке: https://disk.yandex.ru/d/HMOUFDv3_GdfhA

    Ответить
    1. Николай автор

      Справочник открывается, но разделы пустые

      Ответить
      1. Aqel

        Только что проверил всё нормально (вы наверное через браузер открываете, да там почему то глюк какой то) — открывайте файл который скачали через проводник и тп.
        В свойствах справки поставьте галочку Разблокировать.

        Ответить
        1. Николай автор

          Галочка в свойствах файла сделала свое дело

          Ответить