Прошивка MK4duo (Marlin Kimbra)

Добавлено в закладки: 9

MK4duo (Marlin Kimbra) – это переработанная прошивка Marlin итальянским RepRap сообществом. Интересна поддержкой низкобюджетного RAMPS4DUE на Arduino DUE (32 бита).

Возможности:

  1. Поддерживает 8 и 32 битные Arduino. (MEGA, DUE)
  2. Поддерживает все типы принтеров Cartesian, Delta, MORGAN SCARA, MAKERARM SCARA, CoreXY, CoreXZ & CoreYZ.
  3. Подключение до 6 экструдеров.
  4. Смешивание цветов.
  5. Подключение 4(6) экструдеров на два драйвера и 8 реле.
  6. Управление двухэкструдерным DONDOLO.
  7. Отдельные настройки для каждого экструдера: шага, скорости, ускорения.
  8. Добавлена коррекция вобблинга.
  9. Добавлен охладитель и нагреватель термокамеры.
  10. Добавлен Mesh Bed Level.
  11. и многое другое …

 

marlinkimbra-logo-github

 

Есть онлайн конфигуратор http://marlinkimbra.it/configurator/v4_3_x/firmware_configurator.php

Ссылка для скачивания свежей версии https://github.com/MagoKimbra/MK4duo

Скачивание

 

Распаковываем архив (версия 4.3.06_dev), заходим в папку и открываем файл MK4duo.ino в Arduino IDE. Видим вкладки (скетчи с настройками):

vkladki

 

Назначение вкладок

MK4duo – перечисление используемых G-кодов

Boards.h – коды поддерживаемой электроники

Configuration_Basic.h – начальные настройки:

  1. Настройка порта
  2. Установка типа электроники
  3. Выбор типа механики
  4. Задание количества экструдеров

 

Configuration_Cartesian.h – настройки для декартовых принтеров (Prusa i3, Mendel90, Ultimaker и т.п.)

Configuration_Core.h – настройки для CoreXY и H-Bot принтеров (СПринтер, ZAV и т.п.)

Configuration_Delta.h – настройки для Delta принтеров

Configuration_Scara.h – настройки для Sacara принтеров

Configuration_Feature.h – содержит все функции, которые возможно включить

Configuration_Laser.h – содержит некие функции лазера

Configuration_Overall.h – для пользовательских настроек. Если включен, то учитываются настройки только из него!

Configuration_Pins.h – здесь описаны проименованные пины

Configuration_Temperature.h – температурные установки (термисторы, PID, защита и т.д.)

Configuration_Version.h – информационный файл с версией прошивки и ссылкой

base.h – служебный файл с подключаемыми библиотеками

 

Настройка для H-Bot на RAMPS 1.4

Пока могу проверить только эту конфигурацию.

Configuration_Overall.h

Сразу отключаю

//#define CONFIGURATION_OVERALL

 

Configuration_Basic.h

#define BAUDRATE 250000  //меняем скорость порта

#define MOTHERBOARD BOARD_RAMPS_13_HFB  //Здесь вписываем свою плату электроники из Boards.h

#define MECHANISM MECH_COREXY //Выбираем тип механики

#define EXTRUDERS 1  //Пока 1 экструдер

#define DRIVER_EXTRUDERS 1  //Не понял эту настройку. Наверное сколько драйверов нужно задействовать.

 

Configuration_Core.h

#define CUSTOM_MACHINE_NAME “Core”  //Название принтера для отображения на дисплее принтера

#define CORE_FACTOR 1  //Порядок вращения двигателей. Обычно должно быть 1 для CoreXY.

 

Инвертируем логику механических концевиков, если не правильно припаяли проводки:

Инвертирование логики концевиков

Пропускаю настройку AutoBedLevel, так как у меня его нет.

 

Указываем какие концевики стоят в положении HOME:

1=MAX, -1=MIN

#define X_HOME_DIR -1

#define Y_HOME_DIR 1

#define Z_HOME_DIR 1

 

Программное инвертирование вращения двигателя. Также можно развернуть штеккер.

motor invert

 

Настраиваем положение нулевых координат (значения могут быть отрицательными) и максимальные перемещения от них.

min_max

Пропускаю Auto Bed Leveling (ABL)

 

Калибровка шагов на каждый двигатель

#define DEFAULT_AXIS_STEPS_PER_UNIT   {80, 80, 3200, 625, 625, 625, 625}

 

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

#define DEFAULT_MAX_FEEDRATE {300, 300, 2, 100, 100, 100, 100}
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60}

 

Ограничение ускорений

#define DEFAULT_MAX_ACCELERATION {3000, 3000, 50, 1000, 1000, 1000, 1000}  //Максимальная начальная скорость для включения ускорений

#define DEFAULT_RETRACT_ACCELERATION {10000, 10000, 10000, 10000}  //Ускорения ретракта

#define DEFAULT_ACCELERATION 3000 //Максимальные ускорения во время печати

#define DEFAULT_TRAVEL_ACCELERATION 3000 //Ускорения без печати

 

Скорости перемещения в положение HOME

homing

 

Отход от концевика во время инициализации HOME. Увеличение расстояния иногда улучшает точность срабатывания.

home_bump

#define HOMING_BUMP_DIVISOR {5, 5, 2}  //Скорость возвращения, после отхода

 

Configuration_Temperature.h

Вот сколько температурных датчиков можно подключить:

temp_sensor

#define TEMP_SENSOR_CHAMBER 0  //Датчик термокамеры

#define TEMP_SENSOR_COOLER 0  //Видимо датчик охлаждения камеры

 

Настройка гистерезиса ограничения температур (Temperature limits):

#define TEMP_RESIDENCY_TIME 10 // Время в секундах, через которое печать остановится, если превысится порог из следующего параметра

#define TEMP_HYSTERESIS 3 //Допустимое количество градусов “гуляния” температуры

#define TEMP_WINDOW 1

 

Настройка защиты по максимальной температуре (защищает нагреватель от перегрева или диагностирует замкание на термисторе):

maxtemp

 

Настройка минимальной температуры (диагностирует обрыв или отсутствие термистора):

mintemp

 

Настройка PID

Настройки очень похожи на обычный Marlin. Для углублённого понимания можно сходить по ссылке http://reprap.org/wiki/PID_Tuning

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

//#define PID_ADD_EXTRUSION_RATE
#define LPQ_MAX_LEN 50

Автонастройка PID хотэнда как в обычном Марлине:

M303 E0 C8 S220

 

Чтобы заработал PID на столе, нужно раскомментировать строку:

#define PIDTEMPBED

Автонастройка PID стола как в обычном Марлине:

M303 E-1 C8 S105

 

PID для термокамеры (chamber) включается строкой:

#define PIDTEMPCHAMBER

Автонастройка PID для термистора термокамеры:

M303 E-2 C8 S90

 

PID для охлаждения камеры (cooler) включается строкой:

#define PIDTEMPCOOLER

Автонастройка PID для cooler:

M303 E-3 C8 S90

 

Thermal runaway protection – дополнительная защита от возгорания. Опять же настройки гистерезиса. По умолчанию отключено. Включается строками:

#define THERMAL_PROTECTION_HOTENDS

#define THERMAL_PROTECTION_BED

#define THERMAL_PROTECTION_CHAMBER

#define THERMAL_PROTECTION_COOLER

 

Предотвращение холодной экструзии

#define PREVENT_COLD_EXTRUSION  //Можно отключать для калибровки экструдера, но потом обязательно вернуть.

#define EXTRUDE_MINTEMP 170 //Задаём минимальную температуру экструзии

 

Configuration_Feature.h

Тут просто огромный список дополнительных настроек. Посмотрим некоторые.

 

Функции экструдера (EXTRUDER FEATURES)

#define CONTROLLERFAN

Включает контроль вентилятора обдува электроники и конкретно – шаговых двигателей. Вентилятор включается при включении одного из драйверов и отключается по заданному тайм ауту после отключения последнего драйвера. Нужно установить CONTROLLERFAN_PIN в Configuration_pins.h. Также нужен RRD Fan Extender или подобный модуль.

 

#define HOTEND_AUTO_FAN

Включает контроль вентилятора обдува хотэнда. Включается и отключается в зависимости от настроек температуры. Нужно установить HOTEND AUTO FAN PIN в Configuration_pins.h. Пишут, что можно каждый хотэнд ассоциировать с своим пином. Также нужен RRD Fan Extender или подобный модуль.

 

Меняю в Configuration_pins.h под свой RRD Fan Extender:

#if ENABLED(CONTROLLERFAN)
    #define CONTROLLERFAN_PIN 11
#endif

#if ENABLED(HOTEND_AUTO_FAN)
    #define H0_AUTO_FAN_PIN 6
    #define H1_AUTO_FAN_PIN -1
    #define H2_AUTO_FAN_PIN -1
    #define H3_AUTO_FAN_PIN -1
#endif

 

#define SINGLENOZZLE //Указывает, что у мультиэкструдера одно сопло.

 

#define COLOR_MIXING_EXTRUDER  //Включает смешивание цветов. Нужно использовать дополнительные G-коды и Repetier Host.

 

#define MKR4  //Включает систему 4 экструдеров с 8 реле. See Configuration_pins.h for pin command relay.

 

#define MKR6  //Включает систему 6 экструдеров с 8 реле. See Configuration_pins.h for pin command relay.

 

#define MKSE6 //Включает систему из шести экструдеров на одном драйвере и одной серве.

 

#define FILAMENT_CHANGE_FEATURE  //Включает M600 для смены прутка. Есть куча настроек.

 

Функции перемещений (MOTION FEATURES)

Софтовые концевики по заданным габаритам. Обычно стоит true и никто не трогает эти настройки.

#define SOFTWARE_MIN_ENDSTOPS true

#define SOFTWARE_MAX_ENDSTOPS true

 

Функции сенсоров (SENSORS FEATURES)

Сенсор измерения энергопотребления (интересно что это:

#define POWER_CONSUMPTION

 

Вспомогательные функции (ADDON FEATURES)

Включаем EEPROM:

#define EEPROM_SETTINGS

 

Поддержка SD карты и много дополнительных настроек

#define SDSUPPORT

 

Включение загрузки с SD карты настроек прошивки (INFO.CFG)

#define SD_SETTINGS

 

Дальше идёт огромное количество настроек для дисплея

#define ULTRA_LCD  //Нужно включить для работы дисплея

#define REPRAP_DISCOUNT_SMART_CONTROLLER  //Включение RepRapDiscount Smart Controller

 

 

Дополнительные функции перемещений (ADVANCED MOTION FEATURES)

#define DEFAULT_STEPPER_DEACTIVE_TIME 120  //Время до отключения драйверов при бездействии

#define ENABLE_HIGH_SPEED_STEPPING  //Нужно включить для скоростных драйверов, с микрошагом менее 1/64

 

 

Дополнительные функции (ADVANCED FEATURES)

Много настроек буфера линейных перемещений. Есть отличия для 8 и 32 битных Ардуин.

 

#define NOZZLE_CLEAN_FEATURE  //G12 – функция очистки сопла:

P0 – строками

P1 – зигзагами

Например “G12 P1 S1 T3” выполнит:

nozzle_clean

 

#define NOZZLE_PARK_FEATURE  //Включение функции парковки сопла по команде G27. Далее задаются координаты.

 

#define START_GCODE  //Включает скрипты Стартового и конечного G-кода.

 

Проблемы и решения

Версию 4.3.06_dev с ГитХаба не смог скомпилировать. Прошивка из конфигуратора компилируется, но сам конфигуратор урезан в выборе функций. Лучше взять прошивку из конфигуратора и настроить в Arduino IDE (в 1.6.0 есть проблемы с компиляцией, в 1.6.12 компилируется). Перед настройкой прошивки рекомендую сначала скомпилировать её с настройками по умолчанию, если получилось, то можно настраивать дальше.

 

Pronterface при соединении выдал такой листинг настроек:

Connecting…
start
Printer is now online.
External Reset
Echo:MK4duo_4.3.06_dev
Echo:Last Updated: Dec 7 2016 13:16:45 | Author: (AKDZG, default config)
Echo:Compiled: Dec 7 2016
Echo:Free Memory: 3113 PlannerBufferBytes: 1184
okHardcoded SD Default Settings Loaded
Hardcoded Default Settings Loaded
Config:Steps per unit:
Config: M92 X80.000 Y80.000 Z1600.000 E140.000
Config:Maximum feedrates (mm/s):
Config: M203 X300.000 Y300.000 Z10.000 E100.000
Config:Maximum Acceleration (mm/s2):
Config: M201 X2000 Y2000 Z50 E3000
Config:Accelerations: P=printing, V=travel and T* R=retract
Config: M204 P2000.000 V2000.000
Config: M204 T0 R10000.000
Config:Advanced variables: S=Min feedrate (mm/s), V=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum X jerk (mm/s), Y=maximum Y jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)
Config: M205 S0.000 V0.000 B20000 X10.000 Y10.000 Z0.400 E5.000
Config:Home offset (mm):
Config: M206 X0.000 Y0.000 Z0.000
Config:Hotend offset (mm):
Config: M218 TConfig:Material heatup parameters:
Config: M145 S0 H190 B60 F255
Config: M145 S1 H240 B100 F255
Config: M145 S2 H230 B60 F255
Config:PID settings:
Config: M301 H0 P11.00 I1.00 D42.00
Config: M304 P250.00 I45.00 D343.00
Config: M200 D0
Stats: Total: 0, Finished: 0, Failed: 0
Stats: Total print time: 0s, Power on time: 0s
Stats: Filament used: 0Km 0m 0cm 0mm
Error:SD init fail
[ERROR] Error:SD init fail

 

В заключении

Настройки этой прошивки в большинстве совпадают с настройками прошивки Marlin, только более структурированы. Поэтому просто переносим настройки и прошиваем электронику.

Описание настройки и калибровки прошивки Marlin смотрите в статье “Настройка прошивки Marlin для 3D принтера“.

Прошивка Arduino DUE.

 

p.s. Замеченные баги:

  1. M303 E-1 C8 S90 греет хотэнд
  2. Комментирование //#define CONFIGURATION_OVERALL не отключает настройки из Overall

 

Добавлено Mef78

  • M303 H0 C8 S240 греет хотэнд и вычисляет PID
  • M303 H-1 C8 S90 греет стол и вычисляет PID
30

Метки: , ,    2016-12-07      Раздел: Настройка, Прошивка  
Автор: Просмотров: 27 892   12 комментариев



12 комментариев на «Прошивка MK4duo (Marlin Kimbra)»

  1. Только начал задумываться о 32-х битных мозгах, как прошивочка подоспела *YAHOO*

    0
  2. Как раз due приехала, будем пробовать!

    0
  3. Алексей, а чем, если не секрет, эта прошивка приглянулась? Конкретно для 8бит электроники.

    0
    1. На Меге только проверил работоспособность. Пока не печатал, но думаю проблем не будет, это ведь фактически тот же Марлин. Дальше буду DUE пробовать.

      0
      1. Здрасти, проблема из-за дефекта RAMPS1.4 Напруга с вывода d8 попала на затвор полевика ! и соответственно сожгла вывод ардуинки , но и вывод d10 тоже перестал работать прошивка MK4duo (Marlin Kimbra) не могу найти там где номера пинов переставить .
        В разделе Configuration_Pins.h ни намека на номера выводов .

        0
  4. Ну тогда вопрос , все хорошо держит 6 экструдеров , посоветуйте какую плату взять под дуэ чтобы 4 экструдера минимум зацепить

    0
  5. Пишет ошибку компиляции. Даже если собираю конфигуратором- открываю, жму проверить- ошибка.

    0
    1. Скорее всего нужно подбирать версию Arduino IDE.

      0
  6. Спасибо за описание.
    Настроил себе эту прошивку под Prusa i3 на обычной связке мега + рампс 1.4 + 2004
    В принципе, особых сложностей не возникло. Все работает, и в общем то даже не плохо.
    Про баги:
    — M303 E-1 C8 S90 греет хотэнд
    Так осталось и в свежей версии 4.11
    Но, в файле MK4duo прописан синтаксис команды
    * M303 — PID relay autotune S sets the target temperature (default target temperature = 150C). H C U
    Соответственно:
    M303 H0 C8 S240 греет хотэнд и вычисляет PID
    M303 H-1 C8 S90 греет стол и пытается вычислять PID
    У меня калибровка экструдера прошла успешно, а вот со столом проблемы. Никак не калибруется PID, после пары тройки попыток температура ползет вверх и на этом все заканчивается
    В файле Configuration_Temperature.h
    раскоментировал
    #define PIDTEMPBED
    #define BED_LIMIT_SWITCHING
    Компилировал в среде ардуино 1.8.1, все отлично собирается.

    0
    1. У меня стол откалибровался нормально

      0

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




     
Авторизация
*
*
Генерация пароля
Яндекс.Метрика