mehanik.me

3D печать

BTT SKR 1.4(Turbo) + TMC2209(UART, Sensorless) + BLTouch(3D Touch) + PT100(с усилителем) + TFT35v2

BTT SKR 1.4(Turbo) + TMC2209(UART, Sensorless) + BLTouch(3D Touch) + PT100(с усилителем) + TFT35v2

В декабре прошлого года вышли 2 новых платы от компании Big Tree Tech - SKR 1.4 и SKR 1.4 Turbo. Обе платы являются обновлением платы SKR 1.3 и отличаются между собой только процессором. Что изменилось? 

  SKR 1.3 SKR 1.4 SKR 1.4.Turbo
Процессор NXP LPC1768
(100MHz)
NXP LPC1768
(100MHz)
NXP LPC1769
(120MHz)
Подключение кулеров 1 управляемый кулер,
1 неуправляемый кулер
1 управляемый кулер,
3 неуправляемых
1 управляемый кулер,
3 неуправляемых
Доп. интерфейсы - I2C, SPI, WiFi I2C, SPI, WiFi
Closed loop drive interface - + +
Разъёмы подключения моторов X, Y, Z, E0, E1 X, Y, Z0, Z1, E0, E1 X, Y, Z0, Z1, E0, E1
Разъём для подсветки - Neopixel Neopixel
Поддержка UART экранов + + +
Доп. питание 5V - Отдельный модуль Отдельный модуль

Комплект поставки

Big Tree Tech SKR 1.4 Turbo Комплект поставки

Подключение

Подклбчение

Установка драйверов

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

Standalone

Для работы драйверов с Standalone режиме вам необходимо установить перемычки в соответсвии с таблицей ниже. Для удобства чтения все перемычки имеют названия MS1, MS2 и MS3, но в документации на драйверы вы можете встретить нумерацию MS0, MS1 и MS2. Минус в ячейке означает перемычку соединающую центральный пин и правый, что является более правильным способом, но допустимо и просто отсутсвие перемычки, плюс - перемычку между левым пином и центральным, как изображено на картинке выше. Если все ячейки незаполнены, то данный режим таким драйвером не поддерживается. У драйверов TMC в standalone режиме используются только первые 2 перемычки.

Драйвера A4988  DRV8825  LV8729 ST820 TMCXXXX
Дробление шагов MS1 MS2 MS3 MS1 MS2 MS3 MS1 MS2 MS3 MS1 MS2 MS3 MS1 MS2
Целый шаг - - - - - - - - - - - -    
1/2 + - - + - - + - - + - - + -
1/4 - + - - + - - + - - + - - +
1/8 + + - + + - + + - + + - - -
1/16 + + + - - + - - + - - + + +
1/32       + + + + - + + - +    
1/64             - + +          
1/128             + + + - + +    
1/256                   + + +    
UART

Для подключения драйверов по UART необходимо установить лишь одну перемычку на драйвер, все остальные перемычки должны быть удалены. Всё остальное уже разведено на плате.

SPI

Для подключения драйверов по SPI необходимо оставить все 4 перемычки на своих местах. Всё остальное уже разведено на плате.

TMC2209 и аналоги

Помимо всех предыдущих шагов у TMC2209 и некоторых аналогичных драйверах есть поддержка функции StallGuard, которая позволяет определить пропуски шагов. Этот функционал может использоваться в Marlin для парковки головы без концевиков(Sensorless Homing). На платах SKR 1.4 и SKR 1.4 Turbo вся проводка для этого режима уже разведена на плате и если вам этот функционал не нужен, то вам придётся удалять ноги у драйверов(рекомендация производителя) или отгибать их так, чтобы они не попадали в соответствующее гнездо.

TFT3.5v2

BLTouch (3DTouch)

На схеме ниже есть 2 варианта подключения пинов концевика. Вариант 1 - рекомендуется производителем, но не на всех версиях марлина он заводился, вариант 2 - подключение на место концевика Z, работает без проблем на всех версиях марлина.

Аналоговое оборудование, включая PT100 с усилителем или без

В процессорах NXP LPC176x всего 8 аналоговых пинов. На платах Big Tree Tech SKR по документации они разведены как:

Пин Аналоговый канал процессора
P0_02 7
P0_03 6
P0_23 0
P0_24 1
P0_25 2
P0_26 3
P1_30 4
P1_31 5

Расположение этих пинов на плате:

Расположение пинов P0_02 и P0_03 - неизвестно.

Для подключения датчика PT100 - подходит стандартный разъём термистора при правильном определении датчика в коде марлина.

Для подключения датчика через усилитель, нам начишает мешать подтягивающий резистор на 4.7кОм, его можно и отпаять, но можно и использовать другой пин, например P1_30_A4. Землю для подключения усилителя можно взять с верхнего правого пина того же разъёма или с центрального пина любого из концевиков, а вот с плюсом есть проблема. Если мы возьмём плюс 5V как и написано на плате усилителя, то датчик будет показывать очень завышенные показания, а вот если взять 3.3V (например с верхнего пина разъёма SWD), то показания датчика будут корректными.

Конфигурирование Marlin 2.0.x

SKR 1.4 и SKR 1.4 Turbo

Для начала определяем саму плату(для турбо версии использовать BOARD_BTT_SKR_V1_4_TURBO):

// Configuration.h Строка 130
// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
  #define MOTHERBOARD BOARD_BTT_SKR_V1_4
#endif

Настраиваем диаметр филамента:

// Configuration.h Строка 148
// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75

Определяем шаги на мм(сразу за этим блоком идут настройки скоростей, ускорений и рывков принтера, если вы знаете что вам надо это настраивать - настраивайте):

// Configuration.h Строка 714
/**
 * Default Axis Steps Per Unit (steps/mm)
 * Override with M92
 *                                      X, Y, Z, E0 [, E1[, E2...]]
 */
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 100, 100, 800, 400 }

Включаем режим S-Curve Acceleration, чтобы снизить нагрузку на моторы:

// Configuration.h Строка 791
/**
 * S-Curve Acceleration
 *
 * This option eliminates vibration during printing by fitting a Bézier
 * curve to move acceleration, producing much smoother direction changes.
 *
 * See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained
 */
#define S_CURVE_ACCELERATION

Если у вас инвертированы пины моторов, то инвертируем их в прошивке или оставляем как есть:

// Configuration.h Строка 997
// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
// :{ 0:'Low', 1:'High' }
#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0 // For all extruders

Изменяем направления вращения моторов, если это необходимо:

// Configuration.h Строка 1020
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR false

// @section extruder

// For direct drive extruder v9 set to true, for geared extruder set to false.
#define INVERT_E0_DIR false
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
#define INVERT_E3_DIR false
#define INVERT_E4_DIR false
#define INVERT_E5_DIR false

Настраиваем расположение концевиков и размеры печатной зоны:

// Configuration.h Строка 1044
// Direction of endstops when homing; 1=MAX, -1=MIN
// :[-1,1]
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

// @section machine

// The size of the print bed
#define X_BED_SIZE 325
#define Y_BED_SIZE 325

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

// Configuration.h Строка 1393
/**
 * EEPROM
 *
 * Persistent storage to preserve configurable settings across reboots.
 *
 *   M500 - Store settings to EEPROM.
 *   M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes)
 *   M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.)
 */
#define EEPROM_SETTINGS       // Persistent storage with M500 and M501
//#define DISABLE_M503        // Saves ~2700 bytes of PROGMEM. Disable for release!
#define EEPROM_CHITCHAT       // Give feedback on EEPROM commands. Disable to save PROGMEM.
#if ENABLED(EEPROM_SETTINGS)
  //#define EEPROM_AUTO_INIT  // Init EEPROM automatically on any errors.
#endif

Включаем поддержку SD карты платой:

// Configuration.h Строка 1612
/**
 * SD CARD
 *
 * SD Card support is disabled by default. If your controller has an SD slot,
 * you must uncomment the following option or it won't work.
 *
 */
#define SDSUPPORT

Если в принтере используется несколько моторов для оси Z и мы их подключаем к разным(!) драйверам, то изменяем настройки ниже, если мы подключили второй мотор оси Z в разъём Z1, то настройки ниже трогать не надо:

// Configuration_adv.h Строка 445
//#define Z_DUAL_STEPPER_DRIVERS
#if ENABLED(Z_DUAL_STEPPER_DRIVERS)
  //#define Z_DUAL_ENDSTOPS
  #if ENABLED(Z_DUAL_ENDSTOPS)
    #define Z2_USE_ENDSTOP _XMAX_
    #define Z_DUAL_ENDSTOPS_ADJUSTMENT  0
  #endif
#endif

Для того, чтобы SD карта заработала, надо указать прошивке что мы будем использовать карту вставленную в саму плату(если мы хотим использовать карту вставленную в экран, то замените ONBOARD на LCD):

// Configuration_adv.h Строка 1092
  #if HAS_SDCARD_CONNECTION
    /**
     * Set this option to one of the following (or the board's defaults apply):
     *
     *           LCD - Use the SD drive in the external LCD controller.
     *       ONBOARD - Use the SD drive on the control board. (No SD_DETECT_PIN. M21 to init.)
     *  CUSTOM_CABLE - Use a custom cable to access the SD (as defined in a pins file).
     *
     * :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ]
     */
    #define SDCARD_CONNECTION ONBOARD
  #endif

Включаем Linear Advanced и настраиваем коэффициент:

// Configuration_adv.h Строка 1348
/**
 * Linear Pressure Control v1.5
 *
 * Assumption: advance [steps] = k * (delta velocity [steps/s])
 * K=0 means advance disabled.
 *
 * NOTE: K values for LIN_ADVANCE 1.5 differ from earlier versions!
 *
 * Set K around 0.22 for 3mm PLA Direct Drive with ~6.5cm between the drive gear and heatbreak.
 * Larger K values will be needed for flexible filament and greater distances.
 * If this algorithm produces a higher speed offset than the extruder can handle (compared to E jerk)
 * print acceleration will be reduced during the affected moves to keep within the limit.
 *
 * See http://marlinfw.org/docs/features/lin_advance.html for full instructions.
 * Mention @Sebastianv650 on GitHub to alert the author of any issues.
 */
#define LIN_ADVANCE
#if ENABLED(LIN_ADVANCE)
  //#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants
  #define LIN_ADVANCE_K 0.93     // Unit: mm compression per 1mm/s extruder speed
  //#define LA_DEBUG            // If enabled, this will generate debug information output over USB.
#endif

Настраиваем количество G-code команд которые плата будет держать в оперативной памяти:

// Configuration_adv.h Строка 1522
// The number of linear motions that can be in the plan at any give time.
// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2 (e.g. 8, 16, 32) because shifts and ors are used to do the ring-buffering.
#if ENABLED(SDSUPPORT)
  #define BLOCK_BUFFER_SIZE 32 // SD,LCD,Buttons take more memory, block buffer needs to be smaller
#else
  #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
#endif

TMC2209

Настраиваем используемые драйвера. В примере TMC2209 в режиме работы по UART, если вам необходимо использовать их в standalone режиме, то замените TMC2209 на TMC2209_STANDALONE. Аналогичным образом можно подключить другие драйверы.

// Configuration.h Строка 647
/**
 * Stepper Drivers
 *
 * These settings allow Marlin to tune stepper driver timing and enable advanced options for
 * stepper drivers that support them. You may also override timing options in Configuration_adv.h.
 *
 * A4988 is assumed for unspecified drivers.
 *
 * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
 *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
 *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
 *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
 *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
 * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
 */
#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 E0_DRIVER_TYPE TMC2209
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
//#define E5_DRIVER_TYPE A4988

Настраиваем напряжения(_CURRENT) и шаги(_MICROSTEPS) для необходимых нам осей (X, Y, Z, E0, E1):

// Configuration_adv.h Строка 1810
/**
 * To use TMC2130, TMC2160, TMC2660, TMC5130, TMC5160 stepper drivers in SPI mode
 * connect your SPI pins to the hardware SPI interface on your board and define
 * the required CS pins in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3
 * pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.).
 * You may also use software SPI if you wish to use general purpose IO pins.
 *
 * To use TMC2208 stepper UART-configurable stepper drivers connect #_SERIAL_TX_PIN
 * to the driver side PDN_UART pin with a 1K resistor.
 * To use the reading capabilities, also connect #_SERIAL_RX_PIN to PDN_UART without
 * a resistor.
 * The drivers can also be used with hardware serial.
 *
 * TMCStepper library is required to use TMC stepper drivers.
 * https://github.com/teemuatlut/TMCStepper
 */
#if HAS_TRINAMIC

  #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current
  #define INTERPOLATE       true  // Interpolate X/Y/Z_MICROSTEPS to 256

  #if AXIS_IS_TMC(X)
    #define X_CURRENT       800        // (mA) RMS current. Multiply by 1.414 for peak current.
    #define X_CURRENT_HOME  X_CURRENT  // (mA) RMS current for sensorless homing
    #define X_MICROSTEPS     16    // 0..256
    #define X_RSENSE          0.11
    #define X_CHAIN_POS      -1    // =0 : Not chained. 1 : MCU MOSI connected. 2 : Next in chain, ...
  #endif

  #if AXIS_IS_TMC(X2)
    #define X2_CURRENT      800
    #define X2_CURRENT_HOME X2_CURRENT
    #define X2_MICROSTEPS    16
    #define X2_RSENSE         0.11
    #define X2_CHAIN_POS     -1
  #endif

  #if AXIS_IS_TMC(Y)
    #define Y_CURRENT       800
    #define Y_CURRENT_HOME  Y_CURRENT
    #define Y_MICROSTEPS     16
    #define Y_RSENSE          0.11
    #define Y_CHAIN_POS      -1
  #endif

  #if AXIS_IS_TMC(Y2)
    #define Y2_CURRENT      800
    #define Y2_CURRENT_HOME Y2_CURRENT
    #define Y2_MICROSTEPS    16
    #define Y2_RSENSE         0.11
    #define Y2_CHAIN_POS     -1
  #endif

  #if AXIS_IS_TMC(Z)
    #define Z_CURRENT       800
    #define Z_CURRENT_HOME  Z_CURRENT
    #define Z_MICROSTEPS     16
    #define Z_RSENSE          0.11
    #define Z_CHAIN_POS      -1
  #endif

  #if AXIS_IS_TMC(Z2)
    #define Z2_CURRENT      800
    #define Z2_CURRENT_HOME Z2_CURRENT
    #define Z2_MICROSTEPS    16
    #define Z2_RSENSE         0.11
    #define Z2_CHAIN_POS     -1
  #endif

  #if AXIS_IS_TMC(Z3)
    #define Z3_CURRENT      800
    #define Z3_CURRENT_HOME Z3_CURRENT
    #define Z3_MICROSTEPS    16
    #define Z3_RSENSE         0.11
    #define Z3_CHAIN_POS     -1
  #endif

  #if AXIS_IS_TMC(E0)
    #define E0_CURRENT      800
    #define E0_MICROSTEPS    16
    #define E0_RSENSE         0.11
    #define E0_CHAIN_POS     -1
  #endif

  #if AXIS_IS_TMC(E1)
    #define E1_CURRENT      800
    #define E1_MICROSTEPS    16
    #define E1_RSENSE         0.11
    #define E1_CHAIN_POS     -1
  #endif

  #if AXIS_IS_TMC(E2)
    #define E2_CURRENT      800
    #define E2_MICROSTEPS    16
    #define E2_RSENSE         0.11
    #define E2_CHAIN_POS     -1
  #endif

  #if AXIS_IS_TMC(E3)
    #define E3_CURRENT      800
    #define E3_MICROSTEPS    16
    #define E3_RSENSE         0.11
    #define E3_CHAIN_POS     -1
  #endif

  #if AXIS_IS_TMC(E4)
    #define E4_CURRENT      800
    #define E4_MICROSTEPS    16
    #define E4_RSENSE         0.11
    #define E4_CHAIN_POS     -1
  #endif

  #if AXIS_IS_TMC(E5)
    #define E5_CURRENT      800
    #define E5_MICROSTEPS    16
    #define E5_RSENSE         0.11
    #define E5_CHAIN_POS     -1
  #endif

Если мы хотим использовать тихий режим работы моторов, то включаем StealthChop:

  // Configuration_adv.h Строка 1991
  /**
   * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
   * Use Trinamic's ultra quiet stepping mode.
   * When disabled, Marlin will use spreadCycle stepping mode.
   */
  #define STEALTHCHOP_XY
  #define STEALTHCHOP_Z
  #define STEALTHCHOP_E

Обязательно настраиваем напряжение подающееся на драйвера(будет использоваться если мы не включили на драйверах тихий режим):

// Configuration_adv.h Строка 2000
  /**
   * Optimize spreadCycle chopper parameters by using predefined parameter sets
   * or with the help of an example included in the library.
   * Provided parameter sets are
   * CHOPPER_DEFAULT_12V
   * CHOPPER_DEFAULT_19V
   * CHOPPER_DEFAULT_24V
   * CHOPPER_DEFAULT_36V
   * CHOPPER_PRUSAMK3_24V // Imported parameters from the official Prusa firmware for MK3 (24V)
   * CHOPPER_MARLIN_119   // Old defaults from Marlin v1.1.9
   *
   * Define you own with
   * { , , hysteresis_start[1..8] }
   */
  #define CHOPPER_TIMING CHOPPER_DEFAULT_24V

Настраиваем парковку без концевиков(Sensorless Homing). Параметр _STALL_SENSITIVITY придётся подбирать методом проб.

  // Configuration_adv.h Строка 2058
  /**
   * Use StallGuard2 to home / probe X, Y, Z.
   *
   * TMC2130, TMC2160, TMC2209, TMC2660, TMC5130, and TMC5160 only
   * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin.
   * X, Y, and Z homing will always be done in spreadCycle mode.
   *
   * X/Y/Z_STALL_SENSITIVITY is the default stall threshold.
   * Use M914 X Y Z to set the stall threshold at runtime:
   *
   *  Sensitivity   TMC2209   Others
   *    HIGHEST       255      -64    (Too sensitive => False positive)
   *    LOWEST         0        63    (Too insensitive => No trigger)
   *
   * It is recommended to set [XYZ]_HOME_BUMP_MM to 0.
   *
   * SPI_ENDSTOPS  *** Beta feature! *** TMC2130 Only ***
   * Poll the driver through SPI to determine load when homing.
   * Removes the need for a wire from DIAG1 to an endstop pin.
   *
   * IMPROVE_HOMING_RELIABILITY tunes acceleration and jerk when
   * homing and adds a guard period for endstop triggering.
   *
   * TMC2209 requires STEALTHCHOP enabled for SENSORLESS_HOMING
   */
  #define SENSORLESS_HOMING // StallGuard capable drivers only

  /**
   * Use StallGuard2 to probe the bed with the nozzle.
   *
   * CAUTION: This could cause damage to machines that use a lead screw or threaded rod
   *          to move the Z axis. Take extreme care when attempting to enable this feature.
   */
  //#define SENSORLESS_PROBING // StallGuard capable drivers only

  #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
    // TMC2209: 0...255. TMC2130: -64...63
    #define X_STALL_SENSITIVITY  62
    #define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY
    #define Y_STALL_SENSITIVITY  62
    //#define Z_STALL_SENSITIVITY  50
    //#define SPI_ENDSTOPS              // TMC2130 only
    //#define HOME_USING_SPREADCYCLE
    #define IMPROVE_HOMING_RELIABILITY
  #endif

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

  // Configuration_adv.h Строка 2110
  /**
   * Enable M122 debugging command for TMC stepper drivers.
   * M122 S0/1 will enable continous reporting.
   */
  //#define TMC_DEBUG

TFT35

Прежде чем использовать экран, рекомендуется сменить прошивку экрана на более функциональную.

Для этого необходимо скачать соответсвующий вашему экрану бинарник с официального GitHub BigTreeTech и содержимое папки с названием экрана оттуда же, положить их в корень SD карточки и воткнуть в экран. Если после обновления пропали все иконки - то проверьте, в корне карты должны быть 2 папки bmp и font, а не папка с названием вашего экрана.

Для работы экрана всё что необходимо - это включить SERIAL_PORT_2 и настроить скорость его общения с экраном. Но данная операция отключит работу платы по USB, поэтому этот функционал мы перенесём на порт 1:

// Configuration.h Строка 98
/**
 * Select the serial port on the board to use for communication with the host.
 * This allows the connection of wireless adapters (for instance) to non-default port pins.
 * Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader.
 *
 * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
 */
#define SERIAL_PORT -1

/**
 * Select a secondary serial port on the board to use for communication with the host.
 * This allows the connection of wireless adapters (for instance) to non-default port pins.
 * Serial port -1 is the USB emulated serial port, if available.
 *
 * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
 */
#define SERIAL_PORT_2 0

/**
 * This setting determines the communication speed of the printer.
 *
 * 250000 works in most cases, but you might try a lower speed if
 * you commonly experience drop-outs during host printing.
 * You may try up to 1000000 to speed up SD file transfer.
 *
 * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
 */
#define BAUDRATE 250000

Power Control Relay

Для того, чтобы плата могла себя выключать посредством реле, раскомментируем следующий функционал:

// Configuration.h Строка 317
/**
 * Power Supply Control
 *
 * Enable and connect the power supply to the PS_ON_PIN.
 * Specify whether the power supply is active HIGH or active LOW.
 */
#define PSU_CONTROL
#define PSU_NAME "Power Supply"

#if ENABLED(PSU_CONTROL)
  #define PSU_ACTIVE_HIGH false // Set 'false' for ATX (1), 'true' for X-Box (2)

  //#define PS_DEFAULT_OFF      // Keep power off until enabled directly with M80

  //#define AUTO_POWER_CONTROL  // Enable automatic control of the PS_ON pin
  #if ENABLED(AUTO_POWER_CONTROL)
    #define AUTO_POWER_FANS           // Turn on PSU if fans need power
    #define AUTO_POWER_E_FANS
    #define AUTO_POWER_CONTROLLERFAN
    #define AUTO_POWER_CHAMBER_FAN
    //#define AUTO_POWER_E_TEMP        50 // (°C) Turn on PSU over this temperature
    //#define AUTO_POWER_CHAMBER_TEMP  30 // (°C) Turn on PSU over this temperature
    #define POWER_TIMEOUT 30
  #endif
#endif

PT100 с усилителем или без

Для работы PT100 без усилителя настраиваем температурный датчик как 147 и подключаем его в стандартный разъём для датчика, но в таком случае шаг измерений температуры будет 3-4 градуса. Если же мы хотим повысить точность, то нам потребуется усилитель и его мы будем настраивать как датчик с номером 20. Но если подключить усилитель в стандартный разъём, то показания температуры будут искажаться подтягивающим резистором на 4.7кОм. Конечно, резистор можно выпаять с платы, но всё-же это вандализм и можно обойтись без этого:

// Configuration.h Строка 349
/**
 * --NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
 *
 * Temperature sensors available:
 *
 *    -5 : PT100 / PT1000 with MAX31865 (only for sensors 0-1)
 *    -3 : thermocouple with MAX31855 (only for sensors 0-1)
 *    -2 : thermocouple with MAX6675 (only for sensors 0-1)
 *    -4 : thermocouple with AD8495
 *    -1 : thermocouple with AD595
 *     0 : not used
 *     1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
 *   331 : (3.3V scaled thermistor 1 table)
 *     2 : 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
 *     3 : Mendel-parts thermistor (4.7k pullup)
 *     4 : 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
 *     5 : 100K thermistor - ATC Semitec 104GT-2/104NT-4-R025H42G (Used in ParCan & J-Head) (4.7k pullup)
 *   501 : 100K Zonestar (Tronxy X3A) Thermistor
 *   512 : 100k RPW-Ultra hotend thermistor (4.7k pullup)
 *     6 : 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
 *     7 : 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
 *    71 : 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
 *     8 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
 *     9 : 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
 *    10 : 100k RS thermistor 198-961 (4.7k pullup)
 *    11 : 100k beta 3950 1% thermistor (4.7k pullup)
 *    12 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
 *    13 : 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
 *    15 : 100k thermistor calibration for JGAurora A5 hotend
 *    18 : ATC Semitec 204GT-2 (4.7k pullup) Dagoma.Fr - MKS_Base_DKU001327
 *    20 : Pt100 with circuit in the Ultimainboard V2.x
 *   201 : Pt100 with circuit in Overlord, similar to Ultimainboard V2.x
 *    60 : 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
 *    61 : 100k Formbot / Vivedino 3950 350C thermistor 4.7k pullup
 *    66 : 4.7M High Temperature thermistor from Dyze Design
 *    67 : 450C thermistor from SliceEngineering
 *    70 : the 100K thermistor found in the bq Hephestos 2
 *    75 : 100k Generic Silicon Heat Pad with NTC 100K MGB18-104F39050L32 thermistor
 *    99 : 100k thermistor with a 10K pull-up resistor (found on some Wanhao i3 machines)
 *
 *       1k ohm pullup tables - This is atypical, and requires changing out the 4.7k pullup for 1k.
 *                              (but gives greater accuracy and more stable PID)
 *    51 : 100k thermistor - EPCOS (1k pullup)
 *    52 : 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
 *    55 : 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
 *
 *  1047 : Pt1000 with 4k7 pullup
 *  1010 : Pt1000 with 1k pullup (non standard)
 *   147 : Pt100 with 4k7 pullup
 *   110 : Pt100 with 1k pullup (non standard)
 *
 *  1000 : Custom - Specify parameters in Configuration_adv.h
 *
 *         Use these for Testing or Development purposes. NEVER for production machine.
 *   998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below.
 *   999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below.
 */
#define TEMP_SENSOR_0 20

Для этого мы подключим усилитель в аналоговый пин 4 (см. подключение выше) и переопределим используемый пин в определении самой платы(файл Marlin/src/pins/lpc1768/pins_BTT_SKR_common.h независимо от версии платы):

// Marlin/src/pins/lpc1768/pins_BTT_SKR.h Строка 48
// Temperature Sensors
//  3.3V max when defined as an analog input
//
#ifndef TEMP_0_PIN
  #define TEMP_0_PIN       P1_30_A4   // A1 (T1) - (68) - TEMP_0_PIN
#endif

Если после этого показывается температура ~180-190 градусов, то вы пропустили часть инструкции по подключению, где было сказано, что не смотря на то, что на плате усилителя написано 5V, мы подключаем его к 3.3V.

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

BLTouch (3DTouch)

Включаем "двигающийся вверх"(PULLUP) концевик пробы оси Z:

// Configuration.h Строка 612
// Enable pullup for all endstops to prevent a floating state
#define ENDSTOPPULLUPS
#if DISABLED(ENDSTOPPULLUPS)
  // Disable ENDSTOPPULLUPS to set pullups individually
  //#define ENDSTOPPULLUP_XMAX
  //#define ENDSTOPPULLUP_YMAX
  //#define ENDSTOPPULLUP_ZMAX
  //#define ENDSTOPPULLUP_XMIN
  //#define ENDSTOPPULLUP_YMIN
  //#define ENDSTOPPULLUP_ZMIN
  #define ENDSTOPPULLUP_ZMIN_PROBE
#endif

Инвертируем его поведение:

// Configuration.h Строка 645
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // Set to true to invert the logic of the probe.

Если вы следуя инструкции по подключению выше подключили концевик BLTouch в разъём концевика оси Z, указываем на это плате:

// Configuration.h Строка 810
/**
 * Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
 *
 * Enable this option for a probe connected to the Z Min endstop pin.
 */
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

Включаем непосредственно BLTouch:

// Configuration.h Строка 862
/**
 * The BLTouch probe uses a Hall effect sensor and emulates a servo.
 */
#define BLTOUCH

Настраиваем положение концевика датчика относительно сопла следуя псевдографике ниже:

// Configuration.h Строка 902
/**
 * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
 *
 * In the following example the X and Y offsets are both positive:
 *
 *   #define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 }
 *
 *     +-- BACK ---+
 *     |           |
 *   L |    (+) P  | R <-- probe (20,20)
 *   E |           | I
 *   F | (-) N (+) | G <-- nozzle (10,10)
 *   T |           | H
 *     |    (-)    | T
 *     |           |
 *     O-- FRONT --+
 *   (0,0)
 *
 * Specify a Probe position as { X, Y, Z }
 */
#define NOZZLE_TO_PROBE_OFFSET { -40, 40, 0 }

Изменяем высокую скорость движения осей X и Y на что-то более скромное:

// Configuration.h Строка 927
// X and Y axis travel speed (mm/m) between probes
#define XY_PROBE_SPEED 5000

Отключаем программное ограничение перемещения оси Z в минусовую зону:

// Configuration.h Строка 1073
// Min software endstops constrain movement within minimum coordinate bounds
#define MIN_SOFTWARE_ENDSTOPS
#if ENABLED(MIN_SOFTWARE_ENDSTOPS)
  #define MIN_SOFTWARE_ENDSTOP_X
  #define MIN_SOFTWARE_ENDSTOP_Y
  //#define MIN_SOFTWARE_ENDSTOP_Z
#endif

Включаем режим автоуровня стола. Для простоты и удобства рекомендуется использовать AUTO_BED_LEVELING_BILINEAR:

//Строка 1130
/**
 * Choose one of the options below to enable G29 Bed Leveling. The parameters
 * and behavior of G29 will change depending on your selection.
 *
 *  If using a Probe for Z Homing, enable Z_SAFE_HOMING also!
 *
 * - AUTO_BED_LEVELING_3POINT
 *   Probe 3 arbitrary points on the bed (that aren't collinear)
 *   You specify the XY coordinates of all 3 points.
 *   The result is a single tilted plane. Best for a flat bed.
 *
 * - AUTO_BED_LEVELING_LINEAR
 *   Probe several points in a grid.
 *   You specify the rectangle and the density of sample points.
 *   The result is a single tilted plane. Best for a flat bed.
 *
 * - AUTO_BED_LEVELING_BILINEAR
 *   Probe several points in a grid.
 *   You specify the rectangle and the density of sample points.
 *   The result is a mesh, best for large or uneven beds.
 *
 * - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
 *   A comprehensive bed leveling system combining the features and benefits
 *   of other systems. UBL also includes integrated Mesh Generation, Mesh
 *   Validation and Mesh Editing systems.
 *
 * - MESH_BED_LEVELING
 *   Probe a grid manually
 *   The result is a mesh, suitable for large or uneven beds. (See BILINEAR.)
 *   For machines without a probe, Mesh Bed Leveling provides a method to perform
 *   leveling in steps so you can manually adjust the Z height at each grid-point.
 *   With an LCD controller the process is guided step-by-step.
 */
//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING

Настраиваем количество точек автоуровня. Вариант с 3 точками по каждой из осей - ужасен, т.к. чаще всего именно углы оказываются искаженными относительно всего стола, но плоскость стола выравнивается раньше, чем алгоритм плавного устранения искажений сделает это за вас и как итог сопло будет цепляться за стол. Вариант с 4мя точками не проверяет значение высоты в центре стола, а именно по нему устанавливается уровень оси Z - так что имеет смысл использовать если вы уверены в ровности стола в широком диапазоне его центра или при смещении точки Z_SAFE_HOMING про которую речь пойдёт на пункт ниже.

// Configuration.h Строка 1208
#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)

  // Set the number of grid points per dimension.
  #define GRID_MAX_POINTS_X 5
  #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

Включаем безопасное определение высоты стола. По умолчанию это происходит в его центре, но если вы решили использовать сетку 4х4 в прошлом шаге, то замените координаты на деленные на 3.

// Configuration.h Строка 1307
// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
//
// With this feature enabled:
//
// - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
// - If stepper drivers time out, it will need X and Y homing again before Z homing.
// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
// - Prevent Z homing when the Z probe is outside bed area.
//
#define Z_SAFE_HOMING

#if ENABLED(Z_SAFE_HOMING)
  #define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2)    // X point for Z homing when homing all axes (G28).
  #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2)    // Y point for Z homing when homing all axes (G28).
#endif

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

// Configuration.h Строка 2191
/**
 * Number of servos
 *
 * For some servo-related options NUM_SERVOS will be set automatically.
 * Set this manually if there are extra servos needing manual control.
 * Leave undefined or set to 0 to entirely disable the servo subsystem.
 */
#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command

// (ms) Delay  before the next move will start, to give the servo time to reach its target angle.
// 300ms is a good value but you can try less delay.
// If the servo can't reach the requested position, increase it.
#define SERVO_DELAY { 300 }

Также включаем режим работы - от 5V:

// Configuration_adv.h Строка 570
  /**
   * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
   * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
   * If disabled, OD mode is the hard-coded default on 3.0
   * On startup, Marlin will compare its eeprom to this vale. If the selected mode
   * differs, a mode set eeprom write will be completed at initialization.
   * Use the option below to force an eeprom write to a V3.1 probe regardless.
   */
  #define BLTOUCH_SET_5V_MODE