
Многие 3D принтеры работают под управлением популярной прошивки Marlin. Прошивка изначально сконфигурирована для Ultimaker Original. Разберём основные настройки для других 3D принтеров.
Прошивка лежит по этому адресу. Качаем. Давим на кнопку Download ZIP. Скачивается архив Marlin-Development.zip. Распаковываем его в выбранную папку.
Начнём с выбора контроллера (MOTHERBOARD). Список контроллеров находится во вкладке boards.h. Давим на треугольник в правом верхнем углу и выбираем boards.h.
Melzi
Следующим выбираем датчик температуры - термистор. Видим большой список '//// 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
Ограничение максимальной температуры хотэнда '#define HEATER_0_MAXTEMP 275'.
Ограничение минимальной температуры хотэнда '#define EXTRUDE_MINTEMP 170'.
Если концевой выключатель подключен не стандартно и его состояние нужно инвертировать, то это можно сделать в прошивке, не перепаивая провода. Значения false или true. Команда M119 (например в ) показывает состояние концевых выключателей. У меня концевые выключатели стоят только в позиции HOME на MAX.
В положении HOME
Изменение направления вращения шаговых двигателей, значения false или true. Правильные перемещения сопла относительно стола:
- По оси X - влево '-', вправо '+'.
- По Y - вперёд '+', назад '-'.
- По оси Z - сближение '-', удаление '+'.
- Экструдер. Extrude - выдавливание нити, Reverse (retract) - откат, втягивание нити.
Дальше идёт настройка концевых выключателей. Нам нужно узнать где они расположены. Как это узнать? Начало координат находится в ближнем левом углу на поверхности стола, если сопло вывести в эту точку, то сработали бы концевики MIN, если в правую дальнюю верхнюю - сработают MAX. У меня в положении HOME находятся три концевых выключателя MAX, поэтому мои установки
Установка габаритов перемещения, после инициализации в положении 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'. По итогам печати первого слоя можно будет подкорректировать это значение.
Можно подкорректировать скорость перемещения в положение HOME.
Переходим к самому важному. Настройка шагов перемещения по осям. Экструдер тоже ось. Мои настройки.
Находим спецификации (даташит) на установленные шаговые двигатели. Видим, что за один шаг вал поворачивается на 1,8 градуса, а это значит 360/1,8=200 шагов на полный оборот. Этот параметр одинаковый у большинства шаговых двигателей устанавливаемых в домашние 3D принтеры.
Следующие цифры - это ограничение максимальной скорости перемещения по осям. На X и Y я ставлю 200 мм, остальные не трогаю.
Настройка ускорения перемещений по осям. При больших ускорениях возможны пропуски шагов. Можно подбирать, гоняя в программе по осям на заданной скорости. Вот мои настройки:
Осталось активировать LCD дисплей с SD картой. Свой дисплей я нашёл на и идентифицировал как RepRapDiscount Smart Controller.
Есть ещё один твик для повышения точности срабатывания некоторых концевых выключателей. При настройке нуля по Z столкнулся с тем, что после каждой инициализации HOME положение сопла над столом немного менялось. Порывшись в прошивке нашёл параметр отвечающий за инициализацию концевых выключателей. Переходим во вкладку Configuration_adv.h и ищем строку '#define Z_HOME_RETRACT_MM 2', меняем значение 2 на 5 и больше не вспоминаем про этот параметр.
Пора заливать прошивку в контроллер. Для этого нужно в Arduino IDE правильно выставить тип платы и номер COM порта. Внизу окна отобразится тип платы и номер порта. Не забываем сохранять изменения (Ctrl+S).
RAMPS
MELZI
Для выбора нужной платы в Arduino IDE нужно скопировать с заменой всё из папки с прошивкой 'Marlin-DevelopmentArduinoAddonsArduino_1.5.xhardwaremarlinavr' в папку Arduino IDE 'C
rogram Files (x86)Arduinohardwarearduinoavr'. После этого появляется возможность выбрать плату Sanguino (базовая плата для Melzi) и нужный тип процессора. У меня нет платы Melzi, поэтому проверить не могу.
Для заливки прошивки нажимаем на круг со стрелкой.
По такой же схеме калибруем PID стола. Команда 'M303 E-1 C8 S110'. Где E-1 - стол, S110 - типичная температура нагрева стола. Последние результаты записываем в прошивку. У меня стол нагревается очень медленно и поэтому приходится перезапускать команду из-за ошибки Timeout.
Как узнать уже прошитые в 3D принтер параметры чтобы не калибровать повторно?
Параметры установленные в прошивке можно узнать в программе через меню КонфигурацияКонфигурация EEPROM. Предварительно нужно указать COM порт в настройках и нажать кнопку 'Подсоединить'.
Хотелось бы увидеть подобные инструкции для Delta принтеров, CoreXY и H-Bot 3D принтеров.
Критические замечания настоятельно приветствуются, так как впоследствии инструкция будет размещена в 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.
Теперь посмотрим на установленную электронику. Вот некоторые типы плат:
Melzi
RAMPS 1.4
У меня стоит RAMPS 1.4.
Заменяю в configuration.h 'MOTHERBOARD BOARD_ULTIMAKER' на 'MOTHERBOARD BOARD_RAMPS_13_EFB'.
Код:
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_13_EFB
#endif
100K thermistor - ATC Semitec 104GT-2
Обычный китайский термистор 100К
Ограничение минимальной температуры хотэнда '#define EXTRUDE_MINTEMP 170'.
Если концевой выключатель подключен не стандартно и его состояние нужно инвертировать, то это можно сделать в прошивке, не перепаивая провода. Значения false или true. Команда M119 (например в ) показывает состояние концевых выключателей. У меня концевые выключатели стоят только в позиции 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;
- По оси 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
Код:
// 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
Если при касании стола соплом срабатывает концевой выключатель (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
Код:
#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'. Теперь экструдер будет работать при холодном сопле, что нам и нужно. Пока не меняем настройки экструдера. Для настройки я использую программу . Для начала ставим 50 мм и скорость 100 мм/сек. 50 мм - это длина прутка, проходящего через экструдер. Измеряем длину прутка прошедшего через экструдер линейкой или штангенциркулем.
Подбирая настройку экструдера добиваемся точной цифры на разумной длине прутка, например 300 мм. После настройки вернём ограничения минимальной температуры '#define EXTRUDE_MINTEMP 170'.
Следующие цифры - это ограничение максимальной скорости перемещения по осям. На X и Y я ставлю 200 мм, остальные не трогаю.
Код:
#define DEFAULT_MAX_FEEDRATE {200, 200, 5, 25}
Код:
#define DEFAULT_MAX_ACCELERATION {1000,1000,100,10000}
#define DEFAULT_ACCELERATION 1500
Раскомментируем (уберём двойные слэши) следующие строки:
Код:
#define ULTRA_LCD
#define SDSUPPORT
#define ULTIPANEL
#define REPRAP_DISCOUNT_SMART_CONTROLLER
Пора заливать прошивку в контроллер. Для этого нужно в Arduino IDE правильно выставить тип платы и номер COM порта. Внизу окна отобразится тип платы и номер порта. Не забываем сохранять изменения (Ctrl+S).
RAMPS
Для выбора нужной платы в Arduino IDE нужно скопировать с заменой всё из папки с прошивкой 'Marlin-DevelopmentArduinoAddonsArduino_1.5.xhardwaremarlinavr' в папку Arduino IDE 'C
Прогресс заливки прошивки отображается индикатором
После того, как всё заработает нужно откалибровать PID нагрева хотэнда и стола. Для этого я использую . Вводим команду 'M303 E0 C8 S260'. Где M303 - команда калибровки, E0 - хотэнд, C8 - количество циклов нагрева-охлаждения, S260 - типичная температура работы сопла.
Последние результаты записываем в прошивку.
Код:
#define DEFAULT_Kp 12.22
#define DEFAULT_Ki 0.58
#define DEFAULT_Kd 64.08
Код:
#define DEFAULT_bedKp 105.94
#define DEFAULT_bedKi 4.97
#define DEFAULT_bedKd 564.11
Параметры установленные в прошивке можно узнать в программе через меню КонфигурацияКонфигурация EEPROM. Предварительно нужно указать COM порт в настройках и нажать кнопку 'Подсоединить'.
При подключении 3D принтера к программе Pronterface в правой части окна выводится список параметров прошивки
Также параметры можно увидеть на LCD дисплее. Через меню ControlMotion.
Хотелось бы увидеть подобные инструкции для Delta принтеров, CoreXY и H-Bot 3D принтеров.
Критические замечания настоятельно приветствуются, так как впоследствии инструкция будет размещена в 3D-Вики. Также очень важно мнение новичков, так как всё это делается именно для Вас!