Кремень FMZ Реклама
Kremen FMHM Реклама

Дополнительные настройки в Marlin

Ghozt
Идет загрузка
Загрузка
21.05.2016
85534
35
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

96
Статья относится к принтерам:
Prusa i3
На ресурсе есть практически исчерпывающий материал по основным настройкам Marlin. Но дополнительные настройки там затронуты вскользь, и я решил восполнить это упущение. В английский умеют не все, поэтому представляю авторский перевод.

Некоторые настройки включены по умолчанию, и я опущу их описание, кое-какие выкинул из-за крайней редкости (на мой взгляд) использования. Также я не стал описывать настройки отдельных редких драйверов ШД - те, кто покупают такие драйверы, уже точно знают, чего хотят и как их настраивать. Большинство настроек все равно довольно специфичны, но часть из них может пригодиться и рядовому пользователю. Наиболее интересные будут перечислены в конце статьи. Настройки будут обозреваться по порядку их следования в configuration_adv.h. Поехали.

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

#define BED_HYSTERESIS 2 //просто выключает подогрев стола, если T>*целевая температура*+BED_HYSTERESIS и включает его, если T<*целевая температура*-BED_HYSTERESIS

#define BED_CHECK_INTERVAL 5000 //мс между проверками температуры в режиме bang-bang

Контроль за работоспособностью нагрева: система ожидает в течение заданного периода времени, когда командой M104 или M109 повышается целевая температура. Если температура не увеличилась в конце этого периода, то целевая температура сбрасывается в 0. Это поведение может быть обнулено с помощью еще одной команды M104/M109. Эта проверка также срабатывает только тогда, когда целевая и текущая температуры различаются хотя бы на параметр WATCH_TEMP_INCREASE, умноженный на два.

#define WATCH_TEMP_PERIOD 40000 //40 секунд для повышения температуры

#define WATCH_TEMP_INCREASE 10 //нагрев хотя бы на 10 градусов за 20 секунд

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

#define PID_ADD_EXTRUSION_RATE

#define DEFAULT_Kc (1) //мощность подогрева=Kc*(скорость_экструзии)

Автоматическая температура: целевая температура хотэнда вычисляется исходя из всех строк g-кода в буфере. Максимум буферных шагов в секунду ШД экструдера в буфере называется 'se'

Включается этот режим командой M109 S<мин_температура> B<макс_температура> F<фактор>

Целевая температура устанавливается в значение мин_температура+фактор*se[шагов/сек] и ограничивается в пределах мин_температуры и макс_температуры

Отключается с помощью ввода команды М109 без F. Также, если температура установлена в 'мин_температура', то она не меняется с помощью этой функции

#define AUTOTEMP

#define AUTOTEMP_OLDWEIGHT 0.98



Показ ADC-значений температуры. Команда M105 вместо привычной информации выдаст ADC-значения, прочитанные с датчиков температуры

#define SHOW_TEMP_ADC_VALUES

Предотвращение износа экструдера. Если принтер простаивает, и температура выше, чем MINTEMP, экструдер будет выдавливать некоторое количество филамента с периодом, указанным в параметре SECONDS

#define EXTRUDER_RUNOUT_PREVENT

#define EXTRUDER_RUNOUT_MINTEMP 190

#define EXTRUDER_RUNOUT_SECONDS 30.

#define EXTRUDER_RUNOUT_ESTEPS 14. //мм филамента

#define EXTRUDER_RUNOUT_SPEED 1500. //скорость экструзии

#define EXTRUDER_RUNOUT_EXTRUDE 100

Это поможет откалибровать датчик AD595, в случае, если он неправильно измеряет температуру.

измеряемая температура определяется как 'текущая_температура = (измеренная температура * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET'

#define TEMP_SENSOR_AD595_OFFSET 0.0

#define TEMP_SENSOR_AD595_GAIN 1.0


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

#define CONTROLLERFAN_PIN -1 // Пин управления вентилятором (-1 для отключения)

#define CONTROLLERFAN_SECS 60 //Сколько секунд будет вращаться вентилятор после отключения последнего драйвера

#define CONTROLLERFAN_SPEED 255 // == полная скорость. Можно поставить меньше, если задействованы выходы с PWM.

При первом старте вентилятора он запускается на полной скорости на некоторое время. Это дает уверенный старт перед установлением пониженного PWM-значения (не работает с программным PWM на Sanguinololu). Примечание: это правило, возможно, действительно только для того вентилятора, который включается по команде M106

#define FAN_KICKSTART_TIME 100 //кол-во мс полной скорости

Вентиляторы охлаждения тепловых барьеров экструдеров. Настройте пины-выходы для автоматического включения/выключения, когда соответствующий экструдер достигает температуры выше/ниже указанной в параметре EXTRUDER_AUTO_FAN_TEMPERATURE. Несколько экструдеров могут быть назначены на один и тот же пин, и вентилятор будет включаться тогда, когда любой из экструдеров достигает указанной температуры. О подключении доп.вентиляторов, опять же, смотрите здесь.

#define EXTRUDER_0_AUTO_FAN_PIN 4 (-1 для отключения)

#define EXTRUDER_1_AUTO_FAN_PIN -1

#define EXTRUDER_2_AUTO_FAN_PIN -1

#define EXTRUDER_3_AUTO_FAN_PIN -1

#define EXTRUDER_AUTO_FAN_TEMPERATURE 50

#define EXTRUDER_AUTO_FAN_SPEED 255
// == полная скорость. Можно поставить меньше, если задействованы выходы с PWM.

При включении этой настройки концевые выключатели используются только для парковки

#define ENDSTOPS_ONLY_FOR_HOMING

Включает драйвер ШД оси Z в последний момент. Нужна в случае перегрева соответствующего драйвера ШД.

#define Z_LATE_ENABLE

Обычно используется один драйвер ШД для управления двумя моторами на оси Z. Раскомментируете для использования раздельных драйверов на каждый ШД Z-оси. Такую функцию поддерживают лишь некоторые платы, например, RAMPS, у которой есть поддержка 2 экструдеров (используется второй, обычно неиспользуемый драйвер ШД) Пины управления указаны для RAMPS, в случае другой платы исправьте их на свои. На 5-драйверной плате включение этой функции ограничит вас возможностью использования только одного экструдера

#define Z_DUAL_STEPPER_DRIVERS

То же самое для Y-оси

#define Y_DUAL_STEPPER_DRIVERS

Раскомментируйте, если есть необходимость, чтобы ШД по Y врашались в разные стороны

#define INVERT_Y2_VS_Y_DIR true

Функция поддержки принтеров с двойной Х-кареткой. Подобная конструкция имеет преимущество, т.к. неактивный экструдер может быть запаркован, что предотвратит вытекание горячего пластика из сопла, который загрязняет печать. Также это снижает общий вес каждой Х-каретки, позволяя печатать с более высокими скоростями

#define DUAL_X_CARRIAGE

Конфигурация для второй Х-каретки

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

#define X2_MIN_POS 80 // устанавливает минимальное расстояние, при котором вторая Х-каретка не задевает запаркованную первую Х-каретку

#define X2_MAX_POS 353 // максимальное расстояние между соплами, когда обе каретки запаркованы

#define X2_HOME_DIR 1 // вторая каретка всегда паркуется в концевой выключатель максимальной позиции

#define X2_HOME_POS X2_MAX_POS // позиция парковки по умолчанию - это максимальная позиция второй каретки

Однако в этом режиме значение EXTRUDER_OFFSET_X для второго экструдера предоставляет программное переопределение для X2_HOME_POS. Это также позволяет выполнить рекалибровку расстояния между концевыми выключателями без модификации прошивки (через команду M218 T1 Xn).

Помните: вы должны установить смещение второго экструдера равным нулю в вашем слайсере.

Пины для драйвера ШД второй Х-каретки (задаются здесь, чтобы не усложнять pins.h)

#define X2_ENABLE_PIN 29

#define X2_STEP_PIN 25

#define X2_DIR_PIN 23


Есть несколько режимов движения для двойной Х-каретки, которые можно выбирать через команду M605 S<режим>

Режим 0: Полный контроль. Слайсер полностью контролирует обе Х-каретки и может достичь оптимальных траекторий, но только если он поддерживает двойные X-каретки. (M605 S0)

Режим 1: режима авто-парковки. Прошивка будет автоматически парковать и снимать с парковки Х-каретки при 'смене инструмента', поэтому отдельная поддержка слайсером не требуется. (M605 S1)

Режим 2: режим дупликации. Прошивка будет копировать все действия первой каретки второй кареткой. Это позволяет печатать 2 одинаковых модели одновременно. (смещение по X и разница температур задается как M 605 S2 [Xnnn] [Ryyy]. Обратите внимание, что параметр R, отвечающий за температуру, задается в относительных величинах. Например, при значении R2 второй объект будет напечатан пластиком, нагретым на 2 градуса выше).

Эта строка определяет режим по умолчанию для двойной Х-каретки, который может быть позже сменен командой М605.

#define DEFAULT_DUAL_X_CARRIAGE_MODE 0

Настройки по умолчанию в режиме авто-парковки

#define TOOLCHANGE_PARK_ZLIFT 0.2 // величина подъема Z при парковке экструдера

#define TOOLCHANGE_UNPARK_ZLIFT 1 // величина подъема Z при снятии с парковки экструдера

Смещение по умолчанию для оси Х в режиме дупликации (обычно устанавливается в половину ширины печатной области)

#define DEFAULT_DUPLICATION_X_OFFSET 100

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

#define X_HOME_RETRACT_MM 5

#define Y_HOME_RETRACT_MM 7

#define Z_HOME_RETRACT_MM 3


#define QUICK_HOME //при активации этого параметра по команде G28 X Y оси одновременно совершат парковку, а не по отдельности.

Отсчет в относительных величинах для осей X, Y, Z, E

#define AXIS_RELATIVE_MODES {false, false, false, false}

По умолчанию драйверы на основе А4988 требуют сигнал высокого уровня для шага. Однако, некоторые мощные драйверы могут требовать сигнал низкого уровня. Инверсия сигналов делается установлением параметра в true:

#define INVERT_X_STEP_PIN false

#define INVERT_Y_STEP_PIN false

#define INVERT_Z_STEP_PIN false

#define INVERT_E_STEP_PIN false


Время, по истечению которого отключаются драйверы ШД в простое. Выставьте 0 для отключения.

#define DEFAULT_STEPPER_DEACTIVE_TIME 60

Подачи для ручных движений с панели (X Y Z E) (для ultipanel)

#ifdef ULTIPANEL

#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60}
// устанавливает скорость для ручных движений (мм/мин)

Если файл распечатан, то функция отключает все шаговики

#define SD_FINISHED_STEPPERRELEASE true

Возможно, ось Z нужно будет удерживать, поэтому оси можно отключить по отдельности

#define SD_FINISHED_RELEASECOMMAND 'M84 X Y Z E'



Функция для съемки процесса печати

#define CHDK 4 //пин для срабатывания CHDK, чтобы сделать фото. Как этим пользоваться см. здесь.

#define CHDK_DELAY 50 //насколько долго в мс пин будет находиться в логической единице перед переходом в ноль

Показывать полосу прогресса печати на дисплеях HD44780 при печати с SD

#define LCD_PROGRESS_BAR

(только для функции #define LCD_PROGRESS_BAR)

Определяет, сколько времени в мс будет показыватьсяполоса

#define PROGRESS_BAR_BAR_TIME 2000

Определяет, сколько времени в мс будет показываться сообщение статуса

#define PROGRESS_BAR_MSG_TIME 3000

Время (мс) удержания статус-сообщения (0=навсегда)

#define PROGRESS_MSG_EXPIRE 0

Раскомментируйте это для того, чтоюы сообщений показывались в течение времени MSG_TIME, а потом скрывались

#define PROGRESS_MSG_ONCE

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

#define USE_WATCHDOG

Если у вас случилась перезагрузка 'наблюдателем' в Arduino Mega2560, то устройство будет висеть 'вечно', т.к. перезагрузка 'наблюдателем' оставляет самого 'наблюдателя' включенным. Функция 'WATCHDOG_RESET_MANUAL' обходит это, не используя аппаратную перезагрузку. Однако, ЭТА ФУНКЦИЯ НЕБЕЗОПАСНА и будет работать только в том случае, если прерывания отключены. И код может зависнуть при выполнении прерывания с отключенными прерываниями.

#define WATCHDOG_RESET_MANUAL



Включает опцию остановки печати с SD при срабатывании концевых выключателей, требует включения через меню LCD-экрана при активации в прошивке.

#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED



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

#define BABYSTEPPING

#define BABYSTEP_XY
//не только по Z, но также и по XY в меню

#define BABYSTEP_INVERT_Z false //true для инверсии движений по Z

#define BABYSTEP_Z_MULTIPLICATOR 2 //более быстрые движения по Z

Адванс-константа экструдера. Или Velocity-режим экструдера. (Extruder advance constant (s2/mm3)) Эта настройка должна помочь избавиться от капель на периметрах детали при печати, может быть полезна для Bowden-экструдеров. Подробнее здесь, здесь, здесь и здесь Вкратце о ее работе: экструдер начинает и прекращает давить пластик несколько раньше, чтобы давление в сопле успевало нарастать и спадать в нужное время. Подобная функция есть в Slic3r и, возможно, других сласерах.

#define ADVANCE

#define EXTRUDER_ADVANCE_K .0 - адванс-константа

#define D_FILAMENT 2.85 - диаметр филамента

#define STEPS_MM_E 836 - кол-во шагов на 1мм филамента(?)

#define EXTRUSION_AREA (0.25 (диаметр сопла) * D_FILAMENT * D_FILAMENT * 3.14159) - площадь экструзии

#define STEPS_PER_CUBIC_MM_E (количество шагов экструдера/площадь экструзии)

И еще несколько интересных строк из configuration.h:

Увеличение частоты ШИМ вентилятора. Убирает назойливый звук, гл увеличивает нагрев мосфета/микроконтроллера

#define FAST_PWM_FAN

Светодиоды статуса температуры, которые показывают температуру сопла и стола. Если температура всех сопел и стола меньше 54°С, то горит синий светодиод, в ином случае - красный. Точность - плюс-минус 1°С. Только для платы Azteeg Х3(?). Кажись, баг в прошивке.

#define TEMP_STAT_LEDS

Использование программного PWM для управления вентилятором, как и для подогревателей. При этом используется очень низкая частота, которая не так раздражает (звуком). С другой стороны, если частота слишком мала, ее нужно увеличить параметром SOFT_PWM_SCALE.

#define FAN_SOFT_PWM

Увеличение этого параметра до 1 удвоит программную частоту ШИМ, которая управляет нагревателями и вентилятором, если включен FAN_SOFT_PWM. Однако, разрешение контроля будет сокращено вдвое для каждого увеличения. Для нулевого масштаба есть 128 эффективных контрольных значений, для 1 - 64 и т.д.

#define SOFT_PWM_SCALE 0

Еще одна функция для съемки процесса печати (активация командой M240) через эмуляцию Canon RC-1 Remote. Подробнее здесь #define PHOTOGRAPH_PIN 23

Поддержка кондитерского экструдера BariCUDA #define BARICUDA



Наиболее полезные, на мой взгляд, функции:

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

#define CONTROLLERFAN_PIN -1

#define EXTRUDER_0_AUTO_FAN_PIN 4

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

#define FAN_KICKSTART_TIME 100

#define FAN_SOFT_PWM


Можно поиграться с величиной ретракта при парковке, чтобы чуточку ускорить этот процесс

#define X_HOME_RETRACT_MM 5

#define Y_HOME_RETRACT_MM 7

#define Z_HOME_RETRACT_MM 3

Эта команда значительно ускоряет парковку

#define QUICK_HOME

Уже неоднократно перезапускал печать из-за неправильного значения z-offset. С помощью этой функции можно будет в реальном времени опустить каретку и не перезапускать печать снова

#define BABYSTEPPING



Эта функция, вероятно, поможет побороться с рассинхроном Z-оси на Prusa i3

#define Z_DUAL_STEPPER_DRIVERS

Настройки filament sensor'а не стал включать потому, что им будет посвящена отдельная статья.

Adios

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

96
Комментарии к статье