Недавно собрал новый блок управления для своего 3D принтера на базе платы SKR-V1.4-Turbo. Теперь пришло время залить в него прошивку Marlin.
Все настройки и действия я решил оформить в виде статьи на моем сайте. Это будет вроде моей шпаргалки на будущее. Надеюсь, собранные мной материалы будут еще кому-нибудь полезны.
Краткая инструкция по установке прошивки Marlin для 32-битной платы SKR-V1.4-Turbo.
- Устанавливаем редактор исходного кода VSCode – ссылка (https://code.visualstudio.com/download).
- В VSCode устанавливаю плагин PlatformIO (Он позволит скомпилировать прошивку Marlin для 32-битных плат).
- Скачиваю проект BIGTREETECH-SKR-V1.3 с github: https://github.com/bigtreetech/BIGTREETECH-SKR-V1.3.
- В проекте нахожу нужную прошивку для моей платы BIGTREETECH-SKR-V1.3-master.zip\BIGTREETECH-SKR-V1.3-master\BTT SKR V1.4\Firmware\ Marlin-2.0.x-SKR-V1.4-Turbo.
- Разархивирую и копирую прошивку на жесткий диск. По старой традиции, в пути не должно быть пробелов и кириллических символов.
- Открываю прошивку в Visual Studio Code (File>Open Folder), затем выбираю папку с прошивкой.
- Файл platformio.ini править не нужно, т.к. я скачал прошивку для конкретной платы.
- Открываем файл Marlin-2.0.x-SKR-V1.4-Turbo\Marlin\Configuration.h и начинаю его конфигурирование.
Конфигурирование файла Configuration.h
#define CUSTOM_MACHINE_NAME "name"
Вместо «name» можно написать что угодно. Эта информация будет отображена на мониторе принтера в главном меню. Обычно здесь я вношу номер сборки своей прошивки, чтобы потом было проще в них разбираться.
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BTT_SKR_V1_4_TURBO
#endif
В этом блоке должно быть указано имя материнской платы. Весь список поддерживаемых плат можно посмотреть в файле boards.h.
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
Проверяем, чтобы был правильно выбран диаметр прутка. У меня – 1,75 мм.
#define TEMP_SENSOR_BED 11
В этой строке указывается тип датчика температуры, который установлен на вашем нагревательном столе. Выше по коду указанно, какому датчику, какой номер соответствует. У меня установлен датчик «100k Hisens 3950 1% up to 300°C».
#define TEMP_SENSOR_0 13
В этой строке выбираем тип датчика температуры для нагревательного элемента хотэнда.
#define PIDTEMPBED
Раскомментировал эту строку. Включаю PID регулировку температуры стола. Многие советуют этого не делать, т.к.частыми переключениями увеличивается нагрузка на реле .
#define BED_MAXTEMP 100
Этот параметр поможет ограничить максимальную температуру стола. По умолчанию – 150 градусов, но для моих нужд вполне хватит ста градусов.
#define HEATER_0_MAXTEMP 275
Максимальная температура на нагревателе.
#define PID_EDIT_MENU
#define PID_AUTOTUNE_MENU
Первая строке этого блока добавляет в меню пункты для редактирования PID регулятора. Вторая строка добавляет пункт меню «Автокалибровка PID».
Подробнее: Калибровка PID регулятора 3D принтера на прошивке Marlin
#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed
Эти строки включают защиту принтера от перегрева хотэнда и стола, а если быть проще, то от пожара.
#define DEFAULT_Kp 20.7
#define DEFAULT_Ki 1.54
#define DEFAULT_Kd 70
Эти три строки настраивают PID регулятор нагревателя хотэнда. Прежде чем вписать значение нужно провести калибровку принтера.
#define X_DRIVER_TYPE TMC2209
#define Y_DRIVER_TYPE TMC2209
#define Z_DRIVER_TYPE TMC2209
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE TMC2209
//#define E1_DRIVER_TYPE TMC5160
//#define E2_DRIVER_TYPE TMC5160
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
//#define E5_DRIVER_TYPE A4988
//#define E6_DRIVER_TYPE A4988
//#define E7_DRIVER_TYPE A4988
Указываю установленные драйвера на каждую ось и экструдер.
#define TMC_DEBUG
Включаю отладочный режим.
#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 400, 932}
Устанавливает количество шагов шагового двигателя на единицу измерения (шаг/мм). Числа зависят от передаточных отношений на приводах вашей системы. Для экструдера у меня установлено 932 шага/мм. Эту цифру я взял из паспортных данных.
#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25}
Ограничиваю максимальную скорость по осям.
#define DEFAULT_MAX_ACCELERATION {500, 500, 100, 5000}
Ограничиваю максимальные ускорения по осям.
#define DEFAULT_ACCELERATION 500
#define DEFAULT_RETRACT_ACCELERATION 500
#define DEFAULT_TRAVEL_ACCELERATION 500
Устанавливаю величину ускорений по умолчанию.
#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true
#define INVERT_E0_DIR true
Задаю направление движения шаговых двигателей. Если двигатели вращаются не в нужную сторону, можно просто перекинуть провода, а иногда проще сделать изменения в прошивке.
#define Z_HOMING_HEIGHT 4
Теперь при автопарковке голова экструдера будет подниматься на 4 мм.
#define X_BED_SIZE 300
#define Y_BED_SIZE 300
#define Z_MAX_POS 400
Устанавливаю размер печатной зоны.
//#define FILAMENT_RUNOUT_SENSOR
Активирует работу датчика наличия филамента. Очень долго у меня стоял этот элемент на 3D принтере. Пользовался им крайне редко. Отключил его, когда он начал сбоить.
#define Z_SAFE_HOMING
Безопасная парковка по оси Z при использовании зонда. Парковка будет происходить по центру стола, это исключит ситуацию, когда зонд может оказаться за его пределами.
#define PREHEAT_1_LABEL "PETG"
#define PREHEAT_1_TEMP_HOTEND 235
#define PREHEAT_1_TEMP_BED 90
#define PREHEAT_1_FAN_SPEED 0
Прогреваю принтер заранее, чтобы потом не томиться в ожидании после старта печати. Этими строками выставляю параметры прогрева.
#define NOZZLE_PARK_FEATURE
Включаю настройки парковки.
#define LCD_LANGUAGE ru
#define DISPLAY_CHARSET_HD44780 CYRILLIC
Включаю русский язык.
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
Выбираю свой LCD экран. Смотрите документацию, чтобы сделать правильный выбор.
Конфигурирование файла configuration_adv.h
#define STEALTHCHOP_XY
#define STEALTHCHOP_Z
#define STEALTHCHOP_E
Включил STEALTHCHOP. Это позволяет принтеру автоматически при разных скоростях печати переходить из бесшумного режима в более шумный с увеличением мощности на валах двигателя.
#define HYBRID_THRESHOLD
Включаю настройки гибридного использования тихого и мощного режима (STEALTHCHOP).
#define X_CURRENT 1100
#define Y_CURRENT 1100
#define Z_CURRENT 1000
#define E0_CURRENT 800
Устанавливаю ток на драйверах.
#define CHOPPER_TIMING CHOPPER_DEFAULT_24V
Задаю режим работы чоппера SpreadCycle.
#define MONITOR_DRIVER_STATUS
Снижается ток на ШД в случае нагрева драйвера (#define TMC_DEBUG должен быть включен).
#define BABYSTEPPING
#define DOUBLECLICK_FOR_Z_BABYSTEPPING
Эти две строки делают доступной функцию «BABYSTEPPING». Как я ей пользуюсь? Сразу после начала печати, я кликаю два раза кнопку настройки. Появляется меню, в котором можно в режиме реального времени подстроить начальную высоту сопла над столом. Потом это значение можно занести в пункт меню «Смещение Z».
#define LIN_ADVANCE
#define LIN_ADVANCE_K 0
Включаю функцию Linear Advance. И по умолчанию ставлю коэффициент – 0.
#define ADVANCED_PAUSE_FEATURE
Включаю.
#if BOTH(SDSUPPORT, DIRECT_STEPPING)
#define BLOCK_BUFFER_SIZE 32
#elif ENABLED(SDSUPPORT)
#define BLOCK_BUFFER_SIZE 64
#else
#define BLOCK_BUFFER_SIZE 64
#endif
У моей 32-х битной платы большой объемом памяти. Поэтому, она может загружать больше движений в нее. Вычитал, что это поможет улучшить качество печати при движении сопла по кривым траекториям.
Подключение зонда для автоматического выравнивания стола - BLTouch
Файл configuration.h:
//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING
Выбор способа калибровки. Убираю комментирование напротив нужного мне способа.
#define USE_PROBE_FOR_Z_HOMING
#define BLTOUCH
Включаю калибровку стола с помощью датчика BLTOUCH.
#define RESTORE_LEVELING_AFTER_G28
Включите эту опцию, чтобы G28 восстановил предыдущее состояние выравнивания.
#define NOZZLE_TO_PROBE_OFFSET { -41, 2, -1.2 } // для Biqu
Настройка положения датчика относительно сопла.
#define PROBING_MARGIN 45
Зона от краев стола, на которой щуп не работает.
#define GRID_MAX_POINTS_X 3
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
Определяю число точек для проверки уровня. Три множить на три – 9 точек для калибровки стола.
Файл configuration_adv.h:
#define BLTOUCH_HS_MODE
Увеличивает скорость калибровки стола. Если возникнет ошибка, то ваша система не подходит для этой функции.
Переназначение ПИНов на датчик температуры хотэнда
Числил металлической щеткой хотэнд и случайно замкнул выводы датчика температуры. Результат – вышел из строя отвечающий за это вход на плате.
К счастью на плате есть еще один незадействованный вход, который я и буду использовать. Но прежде нужно его сконфигурировать в прошивке.
Файл, в котором можно конфигурировать пины на моей плате — pins_BTT_SKR_V1_4.h.
Было:
//#define TEMP_1_PIN P0_23_A0 // A2 (T2) - (69) - TEMP_1_PIN
//#define TEMP_BED_PIN P0_25_A2 // A0 (T0) - (67) - TEMP_BED_PIN
Стало:
#define TEMP_0_PIN P0_23_A0
#define TEMP_1_PIN P0_24_A1
#define TEMP_BED_PIN P0_25_A2