Настраиваем прошивку Marlin и заливаем её в 3D принтер

AKDZG
Идет загрузка
Загрузка
14.02.2015
794141
474
Техничка

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

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

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

333
Многие 3D принтеры работают под управлением популярной прошивки Marlin. Прошивка изначально сконфигурирована для Ultimaker Original. Разберём основные настройки для других 3D принтеров.

Прошивка лежит по этому адресу. Качаем. Давим на кнопку Download ZIP. Скачивается архив Marlin-Development.zip. Распаковываем его в выбранную папку.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Теперь скачиваем Arduino IDE для исправления и загрузки прошивки в 3D принтер. Ссылка. Давим на Windows Installer. Скачивается установщик arduino-1.6.0-windows.exe. Запускаем его и устанавливаем среду Arduino IDE.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Переходим в папку с прошивкой и запускаем файл Marlin.ino.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Открывается среда Arduino IDE с прошивкой. Нам нужна вкладка Configuration.h.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
В начале мы видим ссылки на калибровку 3D принтера. Пролистываем дальше и читаем: 'Это конфигурационный файл с основными настройками. Выберите тип контроллера, тип температурного датчика, откалибруйте перемещения по осям и сконфигурируйте концевые выключатели.'

Начнём с выбора контроллера (MOTHERBOARD). Список контроллеров находится во вкладке boards.h. Давим на треугольник в правом верхнем углу и выбираем boards.h.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Теперь посмотрим на установленную электронику. Вот некоторые типы плат:

Melzi
Настраиваем прошивку Marlin и заливаем её в 3D принтер
RAMPS 1.4
Настраиваем прошивку Marlin и заливаем её в 3D принтер
У меня стоит RAMPS 1.4.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Заменяю в configuration.h 'MOTHERBOARD BOARD_ULTIMAKER' на 'MOTHERBOARD BOARD_RAMPS_13_EFB'.

#ifndef MOTHERBOARD

#define MOTHERBOARD BOARD_RAMPS_13_EFB

#endif

Следующим выбираем датчик температуры - термистор. Видим большой список '//// Temperature sensor settings:'. У меня стоит хотэнд E3D-v5 и китайский термистор на столе. Для E3D-v5 я выбираю '// 5 is 100K thermistor - ATC Semitec 104GT-2', для стола '// 1 is 100k thermistor - best choice for EPCOS 100k'. Если тип термистора неизвестен можно выбрать 1, а если температура не понравится можно выбирать любой и тестировать. Меняю.

100K thermistor - ATC Semitec 104GT-2
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Обычный китайский термистор 100К
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Ограничение максимальной температуры хотэнда '#define HEATER_0_MAXTEMP 275'.

Ограничение минимальной температуры хотэнда '#define EXTRUDE_MINTEMP 170'.

Если концевой выключатель подключен не стандартно и его состояние нужно инвертировать, то это можно сделать в прошивке, не перепаивая провода. Значения false или true. Команда M119 (например в Pronterface) показывает состояние концевых выключателей. У меня концевые выключатели стоят только в позиции HOME на MAX.

В положении HOME
Настраиваем прошивку Marlin и заливаем её в 3D принтер
В положении отличном от HOME по всем осям
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Мне ничего менять не потребовалось.

const bool X_MIN_ENDSTOP_INVERTING = true;

const bool Y_MIN_ENDSTOP_INVERTING = true;

const bool Z_MIN_ENDSTOP_INVERTING = true;

const bool X_MAX_ENDSTOP_INVERTING = true;

const bool Y_MAX_ENDSTOP_INVERTING = true;

const bool Z_MAX_ENDSTOP_INVERTING = true;

Изменение направления вращения шаговых двигателей, значения false или true. Правильные перемещения сопла относительно стола:

- По оси X - влево '-', вправо '+'.

- По Y - вперёд '+', назад '-'.

- По оси Z - сближение '-', удаление '+'.

- Экструдер. Extrude - выдавливание нити, Reverse (retract) - откат, втягивание нити.

#define INVERT_X_DIR false

#define INVERT_Y_DIR false

#define INVERT_Z_DIR false

#define INVERT_E0_DIR true

Дальше идёт настройка концевых выключателей. Нам нужно узнать где они расположены. Как это узнать? Начало координат находится в ближнем левом углу на поверхности стола, если сопло вывести в эту точку, то сработали бы концевики MIN, если в правую дальнюю верхнюю - сработают MAX. У меня в положении HOME находятся три концевых выключателя MAX, поэтому мои установки

// Sets direction of endstops when homing; 1=MAX, -1=MIN

#define X_HOME_DIR 1

#define Y_HOME_DIR 1

#define Z_HOME_DIR 1

Установка габаритов перемещения, после инициализации в положении HOME. Здесь мы задаём габариты рабочей зоны по X и Y, а также настройку сопла относительно стола.

Если при касании стола соплом срабатывает концевой выключатель (MIN), как у Ultimaker Original, то поднастройка сопла относительно стола выполняется перемещением концевого выключателя, а в '#define Z_MAX_POS' записываем значение координаты при максимальном удалении сопла от стола. Координату можно узнать по команде М114 или посмотрев на экран дисплея.

Если концевой выключатель по Z срабатывает при максимальном удалении сопла от стола (MAX), то нужно найти габарит по Z самостоятельно. Устанавливаем значение '#define Z_MAX_POS' изначально больше нормы, например 250 при габарите 200 мм. Опускаем сопло до касания стола и на дисплее (или по команде M114) видим координату больше нуля, теперь вычтем из установленного большого значения полученную координату и получим габарит по Z, который теперь запишем в '#define Z_MAX_POS'. По итогам печати первого слоя можно будет подкорректировать это значение.

// Travel limits after homing

#define X_MAX_POS 215

#define X_MIN_POS 0

#define Y_MAX_POS 215

#define Y_MIN_POS 0

#define Z_MAX_POS 200

#define Z_MIN_POS 0

Можно подкорректировать скорость перемещения в положение HOME.

#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0} // set the homing speeds (mm/min)

Переходим к самому важному. Настройка шагов перемещения по осям. Экструдер тоже ось. Мои настройки.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Теперь посмотрим, как я их получил. По всем осям стоят шаговые двигатели 200 шагов на оборот, 16 микрошагов на шаг (устанавливается перемычками на плате). По осям X и Y стоит приводной ремень GT2 с шагом 2 мм и 20-ти зубые шкивы, итого получаем формулу (200*16)/(2.0*20). По оси Z стоят шпильки М8 с шагом резьбы 1,25 мм, итого формула 200*16/1.25.

Находим спецификации (даташит) на установленные шаговые двигатели. Видим, что за один шаг вал поворачивается на 1,8 градуса, а это значит 360/1,8=200 шагов на полный оборот. Этот параметр одинаковый у большинства шаговых двигателей устанавливаемых в домашние 3D принтеры.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Профили ремней, обычно используемых на 3D принтерах и их шаг. Оригинал здесь, страница 61.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Шкив
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Как померить шаг винта? Замеряем участок винта и считаем на нём витки, затем длину участка в миллиметрах делим на количество витков 20/16=1.25 мм. Для более точного результата замеряем участок максимальной длины.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Настройка экструдера зависит от коэффициента редукции и диаметра подающей шестерни. Подберём экспериментально, после первой заливки прошивки в 3D принтер. Откручиваем сопло и уменьшаем ограничения минимальной температуры сопла до 5 градусов '#define EXTRUDE_MINTEMP 5'. Теперь экструдер будет работать при холодном сопле, что нам и нужно. Пока не меняем настройки экструдера. Для настройки я использую программу Pronterface. Для начала ставим 50 мм и скорость 100 мм/сек. 50 мм - это длина прутка, проходящего через экструдер. Измеряем длину прутка прошедшего через экструдер линейкой или штангенциркулем.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Подбирая настройку экструдера добиваемся точной цифры на разумной длине прутка, например 300 мм. После настройки вернём ограничения минимальной температуры '#define EXTRUDE_MINTEMP 170'.

Следующие цифры - это ограничение максимальной скорости перемещения по осям. На X и Y я ставлю 200 мм, остальные не трогаю.

#define DEFAULT_MAX_FEEDRATE {200, 200, 5, 25}

Настройка ускорения перемещений по осям. При больших ускорениях возможны пропуски шагов. Можно подбирать, гоняя в программе Pronterface по осям на заданной скорости. Вот мои настройки:

#define DEFAULT_MAX_ACCELERATION {1000,1000,100,10000}

#define DEFAULT_ACCELERATION 1500

Осталось активировать LCD дисплей с SD картой. Свой дисплей я нашёл на RepRap.org и идентифицировал как RepRapDiscount Smart Controller.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Раскомментируем (уберём двойные слэши) следующие строки:

#define ULTRA_LCD

#define SDSUPPORT

#define ULTIPANEL

#define REPRAP_DISCOUNT_SMART_CONTROLLER

Есть ещё один твик для повышения точности срабатывания некоторых концевых выключателей. При настройке нуля по Z столкнулся с тем, что после каждой инициализации HOME положение сопла над столом немного менялось. Порывшись в прошивке нашёл параметр отвечающий за инициализацию концевых выключателей. Переходим во вкладку Configuration_adv.h и ищем строку '#define Z_HOME_RETRACT_MM 2', меняем значение 2 на 5 и больше не вспоминаем про этот параметр.

Пора заливать прошивку в контроллер. Для этого нужно в Arduino IDE правильно выставить тип платы и номер COM порта. Внизу окна отобразится тип платы и номер порта. Не забываем сохранять изменения (Ctrl+S).

RAMPS
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Настраиваем прошивку Marlin и заливаем её в 3D принтер
MELZI

Для выбора нужной платы в Arduino IDE нужно скопировать с заменой всё из папки с прошивкой 'Marlin-DevelopmentArduinoAddonsArduino_1.5.xhardwaremarlinavr' в папку Arduino IDE 'C:Program Files (x86)Arduinohardwarearduinoavr'. После этого появляется возможность выбрать плату Sanguino (базовая плата для Melzi) и нужный тип процессора. У меня нет платы Melzi, поэтому проверить не могу.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Для заливки прошивки нажимаем на круг со стрелкой.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Прогресс заливки прошивки отображается индикатором
Настраиваем прошивку Marlin и заливаем её в 3D принтер
После того, как всё заработает нужно откалибровать PID нагрева хотэнда и стола. Для этого я использую Pronterface. Вводим команду 'M303 E0 C8 S260'. Где M303 - команда калибровки, E0 - хотэнд, C8 - количество циклов нагрева-охлаждения, S260 - типичная температура работы сопла.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Последние результаты записываем в прошивку.

#define DEFAULT_Kp 12.22

#define DEFAULT_Ki 0.58

#define DEFAULT_Kd 64.08

По такой же схеме калибруем PID стола. Команда 'M303 E-1 C8 S110'. Где E-1 - стол, S110 - типичная температура нагрева стола. Последние результаты записываем в прошивку. У меня стол нагревается очень медленно и поэтому приходится перезапускать команду из-за ошибки Timeout.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
#define DEFAULT_bedKp 105.94

#define DEFAULT_bedKi 4.97

#define DEFAULT_bedKd 564.11

Как узнать уже прошитые в 3D принтер параметры чтобы не калибровать повторно?

Параметры установленные в прошивке можно узнать в программе Repetier-Host через меню КонфигурацияКонфигурация EEPROM. Предварительно нужно указать COM порт в настройках и нажать кнопку 'Подсоединить'.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
При подключении 3D принтера к программе Pronterface в правой части окна выводится список параметров прошивки
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Также параметры можно увидеть на LCD дисплее. Через меню ControlMotion.

Хотелось бы увидеть подобные инструкции для Delta принтеров, CoreXY и H-Bot 3D принтеров.

Критические замечания настоятельно приветствуются, так как впоследствии инструкция будет размещена в 3D-Вики. Также очень важно мнение новичков, так как всё это делается именно для Вас!

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

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

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

333
Комментарии к статье