Настраиваем прошивку Marlin и заливаем её в 3D принтер
Прошивка лежит по этому адресу. Качаем. Давим на кнопку Download ZIP. Скачивается архив Marlin-Development.zip. Распаковываем его в выбранную папку.Теперь скачиваем Arduino IDE для исправления и загрузки прошивки в 3D принтер. Ссылка. Давим на Windows Installer. Скачивается установщик arduino-1.6.0-windows.exe. Запускаем его и устанавливаем среду Arduino IDE.Переходим в папку с прошивкой и запускаем файл Marlin.ino.Открывается среда Arduino IDE с прошивкой. Нам нужна вкладка Configuration.h.В начале мы видим ссылки на калибровку 3D принтера. Пролистываем дальше и читаем: 'Это конфигурационный файл с основными настройками. Выберите тип контроллера, тип температурного датчика, откалибруйте перемещения по осям и сконфигурируйте концевые выключатели.'
Начнём с выбора контроллера (MOTHERBOARD). Список контроллеров находится во вкладке boards.h. Давим на треугольник в правом верхнем углу и выбираем boards.h.Теперь посмотрим на установленную электронику. Вот некоторые типы плат:
MelziRAMPS 1.4У меня стоит RAMPS 1.4.Заменяю в 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Обычный китайский термистор 100КОграничение максимальной температуры хотэнда '#define HEATER_0_MAXTEMP 275'.
Ограничение минимальной температуры хотэнда '#define EXTRUDE_MINTEMP 170'.
Если концевой выключатель подключен не стандартно и его состояние нужно инвертировать, то это можно сделать в прошивке, не перепаивая провода. Значения false или true. Команда M119 (например в Pronterface) показывает состояние концевых выключателей. У меня концевые выключатели стоят только в позиции HOME на MAX.
В положении HOMEВ положении отличном от HOME по всем осямМне ничего менять не потребовалось.
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)
Переходим к самому важному. Настройка шагов перемещения по осям. Экструдер тоже ось. Мои настройки.Теперь посмотрим, как я их получил. По всем осям стоят шаговые двигатели 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 принтеры.Профили ремней, обычно используемых на 3D принтерах и их шаг. Оригинал здесь, страница 61.ШкивКак померить шаг винта? Замеряем участок винта и считаем на нём витки, затем длину участка в миллиметрах делим на количество витков 20/16=1.25 мм. Для более точного результата замеряем участок максимальной длины.Настройка экструдера зависит от коэффициента редукции и диаметра подающей шестерни. Подберём экспериментально, после первой заливки прошивки в 3D принтер. Откручиваем сопло и уменьшаем ограничения минимальной температуры сопла до 5 градусов '#define EXTRUDE_MINTEMP 5'. Теперь экструдер будет работать при холодном сопле, что нам и нужно. Пока не меняем настройки экструдера. Для настройки я использую программу Pronterface. Для начала ставим 50 мм и скорость 100 мм/сек. 50 мм - это длина прутка, проходящего через экструдер. Измеряем длину прутка прошедшего через экструдер линейкой или штангенциркулем.Подбирая настройку экструдера добиваемся точной цифры на разумной длине прутка, например 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.Раскомментируем (уберём двойные слэши) следующие строки:
#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).
RAMPSMELZI
Для выбора нужной платы в Arduino IDE нужно скопировать с заменой всё из папки с прошивкой 'Marlin-DevelopmentArduinoAddonsArduino_1.5.xhardwaremarlinavr' в папку Arduino IDE 'C:Program Files (x86)Arduinohardwarearduinoavr'. После этого появляется возможность выбрать плату Sanguino (базовая плата для Melzi) и нужный тип процессора. У меня нет платы Melzi, поэтому проверить не могу.Для заливки прошивки нажимаем на круг со стрелкой.Прогресс заливки прошивки отображается индикаторомПосле того, как всё заработает нужно откалибровать PID нагрева хотэнда и стола. Для этого я использую Pronterface. Вводим команду 'M303 E0 C8 S260'. Где M303 - команда калибровки, E0 - хотэнд, C8 - количество циклов нагрева-охлаждения, S260 - типичная температура работы сопла.Последние результаты записываем в прошивку.
#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.#define DEFAULT_bedKp 105.94
#define DEFAULT_bedKi 4.97
#define DEFAULT_bedKd 564.11
Как узнать уже прошитые в 3D принтер параметры чтобы не калибровать повторно?
Параметры установленные в прошивке можно узнать в программе Repetier-Host через меню КонфигурацияКонфигурация EEPROM. Предварительно нужно указать COM порт в настройках и нажать кнопку 'Подсоединить'.При подключении 3D принтера к программе Pronterface в правой части окна выводится список параметров прошивкиТакже параметры можно увидеть на LCD дисплее. Через меню ControlMotion.
Хотелось бы увидеть подобные инструкции для Delta принтеров, CoreXY и H-Bot 3D принтеров.
Критические замечания настоятельно приветствуются, так как впоследствии инструкция будет размещена в 3D-Вики. Также очень важно мнение новичков, так как всё это делается именно для Вас!
Еще больше интересных статей
Подключение мощного диодного лазера к 3D-принтеру
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Появилось у меня как-т...
Модернизация FLSUN Super Racer
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
G-CODE по-русски для 3D печати (Мини-справочник)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Очень хорошая идея. Молодец. П...
Как бы цена PP-GF30 от филамен...
Чем монолит, залитый в 3D-печа...
Приветствую товарищи, принтер...
Всем привет, возник вопрос - к...
Прикупил тут парочку. С расчет...
Здравствуйте. Мне бы хотелось...