Метки: 32 бита, Marlin Kimbra, MK4duo  
2016-12-07  
  
Раздел: Настройка, Прошивка  
Автор: AKDZG Просмотров: 28 338  
12 комментариев
Прошивка MK4duo (Marlin Kimbra)
Добавлено в закладки: 9
MK4duo (Marlin Kimbra) – это переработанная прошивка Marlin итальянским RepRap сообществом. Интересна поддержкой низкобюджетного RAMPS4DUE на Arduino DUE (32 бита).
Возможности:
- Поддерживает 8 и 32 битные Arduino. (MEGA, DUE)
- Поддерживает все типы принтеров Cartesian, Delta, MORGAN SCARA, MAKERARM SCARA, CoreXY, CoreXZ & CoreYZ.
- Подключение до 6 экструдеров.
- Смешивание цветов.
- Подключение 4(6) экструдеров на два драйвера и 8 реле.
- Управление двухэкструдерным DONDOLO.
- Отдельные настройки для каждого экструдера: шага, скорости, ускорения.
- Добавлена коррекция вобблинга.
- Добавлен охладитель и нагреватель термокамеры.
- Добавлен Mesh Bed Level.
- и многое другое …
Есть онлайн конфигуратор http://marlinkimbra.it/configurator/v4_3_x/firmware_configurator.php
Ссылка для скачивания свежей версии https://github.com/MagoKimbra/MK4duo
Распаковываем архив (версия 4.3.06_dev), заходим в папку и открываем файл MK4duo.ino в Arduino IDE. Видим вкладки (скетчи с настройками):
Назначение вкладок
MK4duo – перечисление используемых G-кодов
Boards.h – коды поддерживаемой электроники
Configuration_Basic.h – начальные настройки:
- Настройка порта
- Установка типа электроники
- Выбор типа механики
- Задание количества экструдеров
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
Программное инвертирование вращения двигателя. Также можно развернуть штеккер.
Настраиваем положение нулевых координат (значения могут быть отрицательными) и максимальные перемещения от них.
Пропускаю 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
Отход от концевика во время инициализации HOME. Увеличение расстояния иногда улучшает точность срабатывания.
#define HOMING_BUMP_DIVISOR {5, 5, 2} //Скорость возвращения, после отхода
Configuration_Temperature.h
Вот сколько температурных датчиков можно подключить:
#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
Настройка защиты по максимальной температуре (защищает нагреватель от перегрева или диагностирует замкание на термисторе):
Настройка минимальной температуры (диагностирует обрыв или отсутствие термистора):
Настройка 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” выполнит:
#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 принтера“.
p.s. Замеченные баги:
M303 E-1 C8 S90 греет хотэнд- Комментирование //#define CONFIGURATION_OVERALL не отключает настройки из Overall
Добавлено Mef78
- M303 H0 C8 S240 греет хотэнд и вычисляет PID
- M303 H-1 C8 S90 греет стол и вычисляет PID
12 комментариев на «Прошивка MK4duo (Marlin Kimbra)»
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
Опрос-конструктор: Идеальный 3D принтер       Переделываем RAMPS 1.4 под DUE 32 бита
Только начал задумываться о 32-х битных мозгах, как прошивочка подоспела
Как раз due приехала, будем пробовать!
Алексей, а чем, если не секрет, эта прошивка приглянулась? Конкретно для 8бит электроники.
На Меге только проверил работоспособность. Пока не печатал, но думаю проблем не будет, это ведь фактически тот же Марлин. Дальше буду DUE пробовать.
Здрасти, проблема из-за дефекта RAMPS1.4 Напруга с вывода d8 попала на затвор полевика ! и соответственно сожгла вывод ардуинки , но и вывод d10 тоже перестал работать прошивка MK4duo (Marlin Kimbra) не могу найти там где номера пинов переставить .
В разделе Configuration_Pins.h ни намека на номера выводов .
Ну тогда вопрос , все хорошо держит 6 экструдеров , посоветуйте какую плату взять под дуэ чтобы 4 экструдера минимум зацепить
Пишет ошибку компиляции. Даже если собираю конфигуратором- открываю, жму проверить- ошибка.
Скорее всего нужно подбирать версию Arduino IDE.
Спасибо за описание.
Настроил себе эту прошивку под 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, все отлично собирается.
У меня стол откалибровался нормально
Уже пофиксили давно.
возможно