Настройка прошивки марлин для 3д принтера

Обновлено: 12.05.2024

Основные настройки во вкладке "Configuration.h"
Настройка скорости порта
Выбор платы
Количество экструдеров
Настройка концевых выключателей
Настройка логики работы концевиков
В первую очередь на что нужно обратить внимание - это какие концевики вы используете и какой у них принцип работы. В прошивке необходимо правильно указать логику работы концевиков.
После настройки работу концевиков можно проверить командой M119 в консоли.
В ответ должен прийти текст:
x_min: open – концевик не сработал;
x_min: TRIGGERED – концевик сработал.

Установка положения "HOME" - дом
В прошивке поддерживаются 3 пары концевиков: для каждой оси X, Y и Z по два концевика min и max. Как правило, ставятся концевики только для минимального положения каждой оси, а максимальное задается в прошивке.
Положение дом (начальное положение), будет находиться в минимальных положениях концевиков и это задается в прошивке: При сборке 3D принтера, а именно при подключение шаговых двигателей к плате, возможна такая ситуация: когда вы все настроили и подключили, при нажатии "home" (дом), каретка одной из осей едет в другую сторону (не к концевику), тогда необходимо перевернуть коннектор шагового двигателя на 180 градусов или поменять значения в прошивке:
Установка габаритов перемещения

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

  • Шпилька М8 с шагом резьбы 1,25 мм, тогда формула: 200*16/1.25=2560
  • Шпилька M5 с шагом резьбы 0.8 мм, тогда формула: 200*16/0.8=4000
  • Трапецеидальный винт диаметром 8 мм с шагом 1 мм и заходностью 1, тогда формула: 200*16/1=3200
  • Трапецеидальный винт диаметром 8 мм с шагом 2 мм и заходностью 1, тогда формула: 200*16/2=1600
  • Трапецеидальный винт диаметром 8 мм с шагом 2 мм и заходностью 4, тогда формула: 200*16/2*4=400

Настройка ускорения перемещений по осям

Для осей X и Y стоят ускорения 9000 мм/c^2 - это очень много.
Для первичной настройки установите не более 1000 и для DEFAULT_ACCELERATION поставьте 1500, вместо 3000.

Так получилось что некоторое время назад я стал владельцем китайского клона Prusa i3 под гордым китайским названием Hesine M505. Это чудо китайской мысли конечно было далеко от совершенства, но с задачей печатать все подряд справлялось вполне успешно. Однако, чем дальше в лес - тем толще партизаны. И забравшись в лес подальше возжелал я печатать детали с использованием растворимых поддержек, да и двумя цветами печатать тоже было бы неплохо.

К сожалению, у родной для принтера платы Melzi V2 был фатальный недостаток - на ней отсутсвовал порт для подключения второго экструдера. Изучение матчасти показало, что можно взять еще одну такую же плату и воткнуть ее в режиме слейва. Однако ценник на это удовольствие получался высоковатым. И, что самое неприятно, при таком апгрейде терялась возможность подключения экрана и кнопок управления. Т.е. печатать можно будет только с компьютера, а это не самая лучшая идея по многим причинам.

Так я пришел к решению полностью заменить мозги принтера. Выбор был сделан в пользу нестареющей класски Arduino Mega 2560 + RAMPS 1.4 + A4988. Быстро сказка сказывается, да долго посылочка едет. Получив посылку с мозгами, моторами и прочим полезным в хозяйстве инвентарем я обнаружил что забыл заказать шестерню податчика экструдера. Благо на тот момент она уже ехала ко мне с али, где я заказал ее просто так, от жадности.

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

В Arduino IDE открываем прошивку. Выбираем нашу плату Arduino Mega 2560 и процессор AtMega 2560.

Выбираем нашу плату: RAMPS 1.4 с одним хотэндом

В файле boards.h приведен полный список поддерживаемых плат и их вариаций. Нас пока интересует только RAMPS 1.4 с одним экструдером.

Выставляем кол-во температурных сенсоров. Сенсоров должно быть по числу экструдеров. В нашем случае 1. Убеждаемся что напротив первого сенсора в списке стоит 1.

Выставляем максимальную температуру хотэнда и стола.

У меня стоят термопредохранители на 252 градуса, так что максимальная температура хота должна быть ниже температуры срабатывания предохранителя. Если собираетесь печатать чем-то вроде поликарбоната - то температуру надо поднять. Со столом таже история, единственное что даже печать нейлоном не требует очень больших температур стола, 130 градусов должно хватить всем.

В Hesine M505 стоят нормально замкнутые концевики, а в прошивка по умолчанию рассчитывает на нормально разомкнутые. Включаем инвертирование концевиков:

Проверяем направление вращения моторов. Тут история примерно таже что и с концевиками, т.к. прошивка изначально рассчитана на Ultimaker.

И для экструдера повторяем операцию.

Выставляем размеры рабочей зоны

Для начала можно выставить заводомо большие чем рабочая зона габариты. Потом все откалибруется по месту. По умолчанию в прошивке стоят значени 200х200х200, тогда как у Hesine M505 рабочее поле по всем направлениям больше чем эти цифры. И прошивка просто не даст двигаться за их пределы.

Устанавливаем координаты начала стола. Это нужно чтобы ноль стола в слайсере совпадал с нулем в координатах принтера. Иначе модель может вылезать за пределы зоны печати.

Выставляем шаги для моторов.

Параметры тут следующие: мотор_Х, мотор_Y, мотор_Z, мотор_экструдера

Для рассчета шагов по X и Y используем следующую формулу:

Где 200 - это число шагов двигателя на 360 градусов. Типичная цифра для моторов с шагом 1.8 градуса. 16 в числителе - кол-во микрошагов на шаг. 16 в знаменателе - кол-во зубов на шпуле. 2 - стандартный шаг для ремня GT2

В Hesine M505 штатно используется трапециидальный винт с шагом резьбы 2мм. Соответственно мы белим число шагов на полный оборот на кол-во миллиметров которые будут пройдены за оборот и получаем число шагов на миллиметр.

Подачу экструдера пока посчитаем и выставим предварительно. Потом ее все равно придется подгонять. Шестерня экструдера штатно имеет диаметр около 10мм. Получаем длинну окружности на один оборот: 3.14*10=31.4 мм на оборот.

Делим число шагов на длинну окружности и получаем число шагов на миллиметр.

округляем до 102.

Заливаем все это дело в Arduino.

После того как все залилось и все железо подключено запускаем Pronterface и начинаем калибровку.

  • Двигаем моторы и проверяем что они крутятся в нужную сторону. Если это не так - меняем параметр INVERT_*_DIR на противоположное значение.
  • Проверяем состояние концевиков. По команде M119 будет показано состояние концевиков. Если концевик нажат - напротив него должно быть написано TRIGGERED. Напротив ненажатого - open. Если это не так - меняем настройку *MINENDSTOP_INVERTING.
  • Даем команду G28. Все оси должны приехать в свое минимальное положение. Дальше через Pronterface двигаем все оси в их безопасное максимальное положение и даем комаду M114. Она покажет текущее положение по осям. Вносим эти данные в настройку *MAXPOS.
  • Опять говорим G28. Передвигаем экструдер в нулевую координату стола по X-Y. Смотрим что показывает M114 и эти цифры переносим в MANUAL_*HOMEPOS с обратным знаком. Т.е. если M114 говорит что координата по Х сейчас 30 - то в настройку пишем -30. Это значит что после ухода в HOME экструдер отъедет от него на 30мм и будет считать это положение нолем.
  • откручиваем сопло или трубку боудена у экструдера. На прутке отмечаем расстояние, например 10 см, и прогоняем эту же длинну из Pronterface. После этого смотрим сколько в реальности прошло прутка и корректируем кол-во шагов для экструдера чтобы он прогонял четко нужное кол-во пластика. Важно понимать что на горячую с установленным соплом эта цифра все равно будет отличаться от установленного. Если вы всегда печатаете соплом одного диаметра - можно повторить эту операцию с соплом и полученные данные внести в прошивку. Я использую несколько сопел, так что объем пластика корректирую через настройку потока в слайсере.

После того как все это сделано - печатаем тестовую модель. Я использую пустой куб 20х20х20 мм. После того как он отпечатан - проверяем что размеры сторон у нас точно соответсвуют тому что должно быть. Если это не так по отдельным измерениям - корректируем кол-во шагов для нужной оси.

На этом основные настройки закончены. Дальше можно тюнить приведенные выше параметры для более качественной печати.


В статье: 1 видео (посмотреть) и

принтеров 3D Большинство работают под управлением популярной Marlin прошивки. Для некоторых 3D принтеров существуют стандартно уже сконфигурированные прошивки:

основные Рассмотрим настройки релиз версии

Теперь Arduino скачиваем IDE для исправления и загрузки принтер в 3D прошивки. Ссылка. Давим на Windows Installer. установщик Скачивается arduino-1.6.5-r5-windows.exe. Запускаем устанавливаем и его среду Arduino IDE.

Переходим в прошивкой с папку и запускаем файл Marlin.ino.

среда Открывается Arduino IDE с прошивкой. Нам вкладка нужна Configuration.h.

Начнём с выбора MOTHERBOARD (контроллера). Список контроллеров находится во вкладке Давим.h. boards на треугольник в правом верхнем углу и boards выбираем.h.

Теперь посмотрим на установленную электронику. самые Вот распространённые типы плат:

Sanguinololu 1.4

У меня стоит RAMPS 1.4.

Указываем в свой.h configuration контроллер.

Обычный китайский термистор 100К

сенсора в хотэнде используются фторопластовые части, то следует температуру ограничивать, во избежания повреждения хотэнда. рабочая Максимальная температура фторопласта 260 градусов. хотэнд Если цельнометаллический, то можно ставить 320 если (градусов нужно).

Минимальная ограничивается температура для механической защиты хотэнда от холодного выдавливания пластика.

Настройка выключателей концевых

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

. Команда M119 (например в Pronterface) состояние показывает концевых выключателей. У меня концевые стоят выключатели только в позиции HOME на MAX.

должно Так быть:

В положении HOME

В положении HOME от отличном по всем осям

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

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

Можно подкорректировать скорость перемещения в HOME положение. Обычно занижают скорость по оси Z, стоят если кривые шпильки.

самому к Переходим важному. Настройка шагов перемещения по Экструдер. осям тоже ось. Мои настройки:

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

Находим спецификации (даташит) на шаговые установленные двигатели. Видим, что за один вал шаг поворачивается на 1, 8 градуса, а это значит 200/1, 8=360 шагов на полный оборот. Этот одинаковый параметр у большинства шаговых двигателей устанавливаемых в принтеры 3D домашние.

Профили ремней, обычно используемых на 3D шаг и их принтерах. Оригинал здесь, страница 61.

померить Как шаг винта? Замеряем участок считаем и винта на нём витки, затем длину миллиметрах в участка делим на количество витков 20/16=1.25 мм. Для точного более результата замеряем максимальный участок Настройка.

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

Осталось LCD активировать дисплей с SD картой.

2004 LCD

Для подключения LCD к Ultimaker раскомментировать нужно только одну строку

ULTIMAKERCONTROLLER Full Graphic Smart Controller

графический Большой дисплей. Поддерживает кириллицу.

Для нужно начала в Arduino IDE установить библиотеку обновлять и не U8glib (проверенная версия 1.18.1). Теперь раскомментируем define:

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

MELZI, Sanguinololu

делать Что если порт не выбирается? Нужно дополнительный установить драйвер CH341SER

Для заливки нажимаем прошивки на круг со стрелкой.

Прогресс заливки отображается прошивки индикатором

результаты Последние записываем в прошивку.

564 узнать уже установленные в прошивке M501

параметры читает параметры прошивки и их можно текстовом в сохранить файле

Подсоединить подключении 3D принтера к программе Pronterface в части правой окна загружается список параметров

параметры Также можно увидеть на LCD дисплее. меню Через Control\Motion.

3градуса ошибки

Описание G-статья

Видео: Конфигурация и установка прошивки Marlin


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

Как я писал ранее, в качестве внутреннего ПО был выбран проект Marlin. Рассмотрим все необходимые действия для получения работоспособной прошивки для описанной выше конфигурации.

СРЕДА РАЗРАБОТКИ

ИСХОДНИК ПРОШИВКИ

Текущая версия Marlin для работы над прошивкой Marlin-1.1.0-RC8. Для скачивания прошивки в первоисточнике перейдите по ссылке.

ПОДКЛЮЧЕНИЕ КОНТРОЛЛЕРА

НАСТРОЙКА ПРОШИВКИ

ВКЛАДКА Configuration.h

Устанавливаем скорость обмена порта

Я установил достаточно большую скорость обмена. Здесь нужно осознавать, что работоспособность на выбранной скорости определяется не только платой контроллера, но и программой управления. Я использую Repetier Host. Она прекрасно справляется с такой скоростью :).

Выбираем плату контроллера

Этой строкой указываем, что будем использовать силовую плату RAMPS 1.4 с одним экструдером, вентилятором и обогреваемым столом. В комментариях тип платы описан следующим образом:

// RAMPS 1.4 (Power outputs: Hotend, Fan, Bed)

Описание плат управляющего контроллера, поддерживаемые прошивкой, находятся во вкладке Boards.h.

Определяем какой экструдер будем использовать:

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

Так как корпус принтера является открытым, то различные внешние возбудители (сквозняки и пр.) могут сильно влиять на температуру нагревателей. Для более точного поддержания температуры нагревателей я рекомендую использовать PID регулировку. В этом случае потребуется калибровка нагревателей! Она проходит в автоматическом режиме и опишу этот процесс ниже по тексту статьи. На данном этапе достаточно только включить PID регуляторы хотэнда и стола с коэффициентами регулировки по умолчанию.

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

Запрещаем холодную экструзию проволоки. При температуре ниже 170 гр. С подача осуществляться не будет:

Запрещаем непрерывную подачу пластика более 200 мм:

Включаем температурную защиту нагревателей:

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

Для правильной работы оптических концевиков потребуются подтягивающие резисторы:

При использовании оптических концевиков инвертируем значение логического сигнала:

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

По концевикам осталось только обозначить направление движения к начальной точке:

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

Следующие строки определяют направление вращения приводов для движение в нужном направлении. Напоминаю, что значения приведены для конфигурации Mendel Prusa I3.

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

Использованные мной драйверы немного слабоваты. По этой причине на большой скорости движения в Z направлении заметны существенные глюки. Значит сразу лучше ограничить скорость при возврате каретки в начальное положение:

Для программного контроля перемещения в рабочем пространстве установим границы перемещения после установки принтером начальной точки:

Для точного перемещения по осям прошивка должна знать на сколько шагов требуется прокрутить двигатель при перемещении на 1мм:

В этой строке прописаны значения осей X, Y, Z, E (экструдера). Все значения, кроме E вполне совпадают с расчетными величинами (по крайней мере у меня). К значению Е вернемся позже. Теорию можно прочесть на форуме RepRap.

Далее ограничиваем ускорения для перемещений по всем осям. Я ограничил все значения, кроме ускорения вращения экструдера на половину от значений по умолчанию:

Для перехода на русский язык в меню управления принтером:

и SD карты памяти:

Основные параметры настроены, можно приступать к калибровке! Но, раз уж мы ковыряем прошивку, сразу доработаем все необходимое для реализации работы в меню контроллера без ПК.

Опишем температуру преднагрева для PLA и ABS пластика:

Если интересно знать статистику работы принтера. Для сохранения статистики в EEPROM включим:

Данная фишка позволит сохранять в энергонезависимой памяти контроллера следующую информацию:

Информацию можно получить из принтера по команде M78.

Также рекомендую включить настройки температурной безопасности:

Режимы требуется настраивать индивидуально для каждой модели принтеров. Описание параметров приведу в части статьи, описывающей вкладку Configuration_adv.h.

Если с настройками по умолчанию энкодера работать неудобно (слишком быстро перепрыгивает между разделами меню или не устраивает направление вращения), то следующие разделы помогут тонко отстроить работу энкодера:

// ЧИСЛО ИМПУЛЬСОВ ЭНКОДЕРА НА ОДИН ШАГ. ДЛЯ ЭКОДЕРОВ С ВЫСОКИМ РАЗРЕШЕНИЕМ
// ТРЕБУЕТСЯ УВЕЛИЧИТЬ ЗНАЧЕНИЕ

// ИЗМЕНЕНИЕ НАПРАВЛЕНИЯ ВРАЩЕНИЯ

ВКЛАДКА Configuration_adv.h

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

Настройки режимов защиты по температуре:

После включения параметра THERMAL_PROTECTION_HOTENDS при нагреве хотэнда по командам M140 или M190 принтер будет отслеживать прирост температуры! Если за период времени WATCH_TEMP_PERIOD температура не увеличивается на WATCH_TEMP_INCREASE ГРАДУСОВ, то принтер остановится и потребуется полная перезагрузка.

Для нагревателя стола тот же алгоритм защиты и переменные при условии включения THERMAL_PROTECTION_BED:

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

1. Определить пин контроллера, задействованный для управления вентилятором охлаждения:

Очень интересная настройка:

позволяет запускать вентилятор обдува фактически на любой рабочей скорости. Для этого на установленное в настройке время в миллисекундах задается максимальная стартовая скорость. После запуска установится рабочая скорость.

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

В предыдущих статьях я упоминал, что драйвер шагового двигателя оси Z при параллельном подключении двух двигателей, существенно перегревается. Прошивка позволяет подключить второй двигатель на драйвер неиспользуемого двигателя экструдера:

Пожалуй, это все самые необходимые настройки вкладки.

ВКЛАДКА Language_RU.h

После перехода на русский язык мне не понравился перевод параметров. Я сделал перевод под себя. Для этого во вкладке Language_RU.h изменил константы:

ОТЛАЖЕННАЯ ПРОШИВКА

Тем, кто собрал таки свою Прушу, выкладываю свою версию прошивки. Прошивка полностью отлажена и позволит сразу запустить принтеры ZDV Prusa I3 и ZDV Prusa I3 v2.

УПРАВЛЯЮЩАЯ ПРОГРАММА

Читайте также: