Додаткові настройки в marlin

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

Додаткові настройки термоконтроля гарячого столу:
#define BED_HYSTERESIS 2 // просто вимикає підігрів столу, якщо T> * цільова температура * + BED_HYSTERESIS і включає його, якщо T B F
Цільова температура встановлюється в значення мін_температура + фактор * se # 91; кроків / сек # 93; і обмежується в межах мін_температури і макс_температури
Відключається за допомогою введення команди М109 без F. Також, якщо температура встановлена ​​в "мін_температура", то вона не змінюється за допомогою цієї функції
#define AUTOTEMP
#define AUTOTEMP_OLDWEIGHT 0.98

Запобігання зносу екструдера. Якщо принтер простоює, і температура вище, ніж 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

При першому старті вентилятора він запускається на повній швидкості на деякий час. Це дає впевнений старт перед встановленням зниженого 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

Те ж саме для Y-осі
#define Y_DUAL_STEPPER_DRIVERS

Функція підтримки принтерів з подвійною Х-кареткою. Подібна конструкція має перевагу, тому що неактивний екструдер може бути запаркований, що запобіжить витікання гарячого пластику з сопла, який забруднює друк. Також це знижує загальну вагу кожної Х-каретки, дозволяючи друкувати з більш високими швидкостями
#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 # 91; Xnnn # 93; # 91; Ryyy # 93 ;. Зверніть увагу, що параметр 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

За замовчуванням драйвери на основі А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 // встановлює швидкість для ручних рухів (мм / хв)

Якщо файл роздрукований, то функція відключає всі кроковиках
#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 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

Схожі статті