Автоматическое выравнивание стола Anet A8 — автоматическое центрирование не центрируется с новой конфигурацией Marlin 1.1.9

Недавно я добавил датчик к своему Anet A8 для автоматического выравнивания стола, при необходимости были добавлены расчеты на основе положения датчика на хотенде. Я использую Marlin 1.1.9.

Когда я захожу в «Подготовка» в настройках принтера, чтобы выбрать автоматический возврат в исходное положение, он не центрируется на столе, а кажется, перемещается сзади справа. Я полагаю, это должно быть в центре стола? Не могу найти где это изменить в конфиге. Обратите внимание, что на ЖК-экране отображается X:153, Y:114. Конфигурация ниже.

//============================= Настройки конечной остановки ========== =================

// @section возвращение домой

// Укажите здесь все разъемы концевых упоров, которые подключаются к любому концевому упору или датчику.
// Почти все принтеры будут использовать по одному на ось. Зонды будут использовать один или несколько
// дополнительные соединители. Оставьте неопределенным все, что используется для целей, не связанных с концевым остановом и тестированием.
#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
//#определить USE_XMAX_PLUG
//#определить USE_YMAX_PLUG
//#определить USE_ZMAX_PLUG

// Включаем подтягивание для всех конечных точек, чтобы предотвратить плавающее состояние
#define ENDSTOPPULLUPS
#if DISABLED(ENDSTOPPULLUPS)
  // Отключаем ENDSTOPPULLUPS, чтобы устанавливать подтягивания индивидуально
  //#define ENDSTOPPULLUP_XMAX
  //#define ENDSTOPPULLUP_YMAX
  //#define ENDSTOPPULLUP_ZMAX
  //#define ENDSTOPPULLUP_XMIN
  //#define ENDSTOPPULLUP_YMIN
  //#define ENDSTOPPULLUP_ZMIN
  //#define ENDSTOPPULLUP_ZMIN_PROBE
#endif

// Механический концевой упор с COM на землю и NC на сигнал использует "false" здесь (самая распространенная настройка).
#define X_MIN_ENDSTOP_INVERTING true  // установите значение true, чтобы инвертировать логику конечной остановки.
#define Y_MIN_ENDSTOP_INVERTING true  // установите значение true, чтобы инвертировать логику конечной остановки.
#define Z_MIN_ENDSTOP_INVERTING true  // установите значение true, чтобы инвертировать логику конечной остановки.
#define X_MAX_ENDSTOP_INVERTING false // установите значение true, чтобы инвертировать логику конечной остановки.
#define Y_MAX_ENDSTOP_INVERTING false // установите значение true, чтобы инвертировать логику конечной остановки.
#define Z_MAX_ENDSTOP_INVERTING false // установите значение true, чтобы инвертировать логику конечной остановки.
#define Z_MIN_PROBE_ENDSTOP_INVERTING true  // установите значение true, чтобы инвертировать логику проверки.

// Включите эту функцию, если все включенные контакты концевого упора поддерживают прерывание.
// Это избавит от необходимости опрашивать контакты прерываний, что сэкономит много циклов процессора.
//#define ENDSTOP_INTERRUPTS_FEATURE

/**
* Концевой шумовой фильтр
*
* Включите эту опцию, если концевые ограничители срабатывают ошибочно из-за шума.
* ПРИМЕЧАНИЕ. Включение этой функции означает добавление погрешности +/- 0,2 мм, поэтому возврат в исходное положение
* на каждом G28 окажется в несколько разной позиции. Это также будет
* снижают точность некоторых настольных датчиков.
* Для механических переключателей лучшим способом снижения шума является установка
* Керамический конденсатор емкостью 100 нанофарад, подключенный параллельно переключателю, что делает его
* по существу помехозащищенный без ущерба для точности.
* Эта опция также увеличивает нагрузку на MCU, когда включены концевые упоры или датчик.
* Так что это не рекомендуется. ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК.
* (Эта функция не требуется для обычных микропереключателей, установленных на печатных платах.
* на основе конструкции Makerbot, поскольку они уже включают конденсатор емкостью 100 нФ.)
*/
//#определить ENDSTOP_NOISE_FILTER

//============================================== ============================
//============================= Настройки движения =============== ============
//============================================== ============================
// движение @section

/**
* Настройки по умолчанию
*
* Эти настройки можно сбросить с помощью M502.
*
* Обратите внимание, что если EEPROM включено, сохраненные значения будут иметь приоритет над ними.
*/

/**
* При использовании этой опции каждый шаговый двигатель E может иметь свои собственные коэффициенты для
* следующие настройки движения. Если дано меньше факторов, чем
* общее количество экструдеров, к остальным относится последнее значение.
*/
//#define DISTINCT_E_FACTORS

/**
* Шаги по оси по умолчанию на единицу (шаги/мм)
* Переопределить с помощью M92
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
*/
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 100, 100, 400, 100 }

/**
* Максимальная скорость подачи по умолчанию (мм/с)
* Переопределение с помощью M203
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
*/
#define DEFAULT_MAX_FEEDRATE          { 400, 400, 8, 50 }

/**
 * Default Max Acceleration (change/s) change = mm/s
 * (Maximum start speed for accelerated moves)
 * Override with M201
 *                                      X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
 */
#define DEFAULT_MAX_ACCELERATION      { 2000, 2000, 100, 10000 }

/**
 * Default Acceleration (change/s) change = mm/s
 * Override with M204
 *
 *   M204 P    Acceleration
 *   M204 R    Retract Acceleration
 *   M204 T    Travel Acceleration
 */
#define DEFAULT_ACCELERATION          400     // ускорение X, Y, Z и E для печати движений
#define DEFAULT_RETRACT_ACCELERATION  1000    // ускорение E для втягивания
#define DEFAULT_TRAVEL_ACCELERATION   1000    // ускорение X, Y, Z для перемещений (непечатаемых)

/**
 * Default Jerk (mm/s)
 * Override with M205 X Y Z E
 *
 * "Jerk" specifies the minimum speed change that requires acceleration.
 * When changing speed and direction, if the difference is less than the
 * value set here, it may happen instantaneously.
 */
#define DEFAULT_XJERK                 10.0
#define DEFAULT_YJERK                 10.0
#define DEFAULT_ZJERK                  0.3
#define DEFAULT_EJERK                  5.0

/**
 * 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

//============================================== ==========================
//============================ Опции Z-зонда =============== =============
//============================================== ==========================
// @section зонды

//
// См. http://marlinfw.org/docs/configuration/probes.html.
//

/**
 * 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

/**
 * Z_MIN_PROBE_ENDSTOP
 *
 * Enable this option for a probe connected to any pin except Z-Min.
 * (By default Marlin assumes the Z-Max endstop pin.)
 * To use a custom Z Probe pin, set Z_MIN_PROBE_PIN below.
 *
 *  - The simplest option is to use a free endstop connector.
 *  - Use 5V for powered (usually inductive) sensors.
 *
 *  - RAMPS 1.3/1.4 boards may use the 5V, GND, and Aux4->D32 pin:
 *    - For simple switches connect...
 *      - normally-closed switches to GND and D32.
 *      - normally-open switches to 5V and D32.
 *
 * WARNING: Setting the wrong pin may have unexpected and potentially
 * disastrous consequences. Use with caution and do your homework.
 *
 */
//#define Z_MIN_PROBE_ENDSTOP

/**
 * Probe Type
 *
 * Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
 * Activate one of these to use Auto Bed Leveling below.
 */

/**
 * The "Manual Probe" provides a means to do "Auto" Bed Leveling without a probe.
 * Use G29 repeatedly, adjusting the Z height at each point with movement commands
 * or (with LCD_BED_LEVELING) the LCD controller.
 */
//#определить PROBE_MANUALLY
//#define MANUAL_PROBE_START_Z 0.2

/**
 * A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
 *   (e.g., an inductive probe or a nozzle-based probe-switch.)
 */
#define FIX_MOUNTED_PROBE

/**
 * Z Servo Probe, such as an endstop switch on a rotating arm.
 */
//#define Z_PROBE_SERVO_NR 0 // По умолчанию используется разъем SERVO 0.
//#define Z_SERVO_ANGLES {70,0} // Углы развертывания и складывания Z-сервопривода

/**
 * The BLTouch probe uses a Hall effect sensor and emulates a servo.
 */
//#определить БЛТАЧ
#if ENABLED(BLTOUCH)
  //#define BLTOUCH_DELAY 375 // (мс) Включить и увеличить при необходимости
#endif

/**
 * Enable one or more of the following if probing seems unreliable.
 * Heaters and/or fans can be disabled during probing to minimize electrical
 * noise. A delay can also be added to allow noise and vibration to settle.
 * These options are most useful for the BLTouch probe, but may also improve
 * readings with inductive probes and piezo sensors.
 */
//#define PROBING_HEATERS_OFF // Выключаем нагреватели при зондировании
#if ENABLED(PROBING_HEATERS_OFF)
  //#define WAIT_FOR_BED_HEATER // Подождите, пока стол снова нагреется между датчиками (для повышения точности)
#endif
//#define PROBING_FANS_OFF // Выключаем вентиляторы при проверке
//#define DELAY_BEFORE_PROBING 200 // (мс) Чтобы предотвратить срабатывание пьезодатчиков вибрациями

// Зонд, который развернут и уложен с помощью штифта соленоида (SOL1_PIN)
//#определить SOLENOID_PROBE

// Зонд, установленный на салазках, подобный тем, что разработал Чарльз Белл.
//#определить Z_PROBE_SLED
//#define SLED_DOCKING_OFFSET 5 // Дополнительное расстояние, которое должна пройти ось X, чтобы поднять сани. 0 должно быть хорошо, но вы можете расширить его, если хотите.

//
// Для Z_PROBE_ALLEN_KEY см. примеры конфигураций Delta.
//

/**
 *   Z Probe to nozzle (X,Y) offset, relative to (0, 0).
 *   X and Y offsets must be integers.
 *
 *   In the following example the X and Y offsets are both positive:
 *   #define X_PROBE_OFFSET_FROM_EXTRUDER 10
 *   #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
 *
 *      +-- BACK ---+
 *      |           |
 *    L |    (+) P  | R <-- probe (20,20)
 *    E |           | I
 *    F | (-) N (+) | G <-- nozzle (10,10)
 *    T |           | H
 *      |    (-)    | T
 *      |           |
 *      O-- FRONT --+
 *    (0,0)
 */
#define X_PROBE_OFFSET_FROM_EXTRUDER -43
#define Y_PROBE_OFFSET_FROM_EXTRUDER -4
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0
// Смещение по оси X: -left +right [от сопла]
// Смещение по оси Y: -front +behind [форсунка]
// Смещение по оси Z: -ниже +выше [сопло]

// Определенным типам датчиков необходимо держаться подальше от краев
#define MIN_PROBE_EDGE 10

// Скорость перемещения по осям X и Y (мм/м) между датчиками
#define XY_PROBE_SPEED 6000

// Скорость подачи (мм/м) для первого подхода при двойном измерении (MULTIPLE_PROBING == 2)
#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z

// Скорость подачи (мм/м) для «точной» обработки; зонд каждой точки
#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)

// Количество зондов, выполняемых в каждой точке.
// Установите значение 2 для быстрого/медленного теста, используя результат второго теста.
// Установите значение 3 или более для медленных проб и усреднения результатов.
#define MULTIPLE_PROBING 3

/**
 * Z probes require clearance when deploying, stowing, and moving between
 * probe points to avoid hitting the bed and other hardware.
 * Servo-mounted probes require extra space for the arm to rotate.
 * Inductive probes need space to keep from triggering early.
 *
 * Use these settings to specify the distance (mm) to raise the probe (or
 * lower the bed). The values set here apply over and above any (negative)
 * probe Z Offset set with Z_PROBE_OFFSET_FROM_EXTRUDER, M851, or the LCD.
 * Only integer values >= 1 are valid here.
 *
 * Example: `M851 Z-5` with a CLEARANCE of 4  =>  9mm from bed to nozzle.
 *     But: `M851 Z+1` with a CLEARANCE of 2  =>  2mm from bed to nozzle.
 */
#define Z_CLEARANCE_DEPLOY_PROBE   10 // Зазор по оси Z для развертывания/укладки
#define Z_CLEARANCE_BETWEEN_PROBES  5 // Зазор Z между точками измерения
#define Z_CLEARANCE_MULTI_PROBE     5 // Зазор Z между несколькими датчиками
//#define Z_AFTER_PROBING 5 // Положение Z после завершения зондирования

#define Z_PROBE_LOW_POINT          -2 // Самое дальнее расстояние ниже точки срабатывания, которое нужно пройти, прежде чем остановиться

// Для M851 укажите диапазон регулировки смещения датчика Z
#define Z_PROBE_OFFSET_RANGE_MIN -20
#define Z_PROBE_OFFSET_RANGE_MAX 20

// Включите тест повторяемости M48 для проверки точности датчика
//#define Z_MIN_PROBE_REPEATABILITY_TEST

// Для контактов включения инвертирующего шагового двигателя (активный низкий уровень) используйте 0, для неинвертирующих (активный высокий уровень) используйте 1
// :{ 0:'Низкий', 1:'Высокий' }
#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0 // Для всех экструдеров

// Немедленно отключает шаговый двигатель оси, когда он не используется.
// ВНИМАНИЕ: при выключении двигателей существует вероятность потери точности позиционирования!
#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false
// Предупреждаем на дисплее о возможном снижении точности
//#define DISABLE_REDUCED_ACCURACY_WARNING

// @section экструдер

#define DISABLE_E false // Для всех экструдеров
#define DISABLE_INACTIVE_EXTRUDER true // Оставляем включенным только активный экструдер.

// машина @section

// Инвертируем направление шагового двигателя. Замените (или поменяйте местами разъем двигателя), если ось идет не в ту сторону.
#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true

// @section экструдер

// Для экструдера с прямым приводом v9 установлено значение true, для экструдера с редуктором установлено значение 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

// @section возвращение домой

//#define NO_MOTION_BEFORE_HOMING // Запретить движение до тех пор, пока все оси не будут возвращены в исходное положение

//#define UNKNOWN_Z_NO_RAISE // Не поднимать Z (опускать стол), если Z "неизвестно" Для кроватей, которые падают при выключении Z.

//#define Z_HOMING_HEIGHT 4 // (в мм) Минимальная высота Z до начала отсчета (G28) для зазора Z над столом, зажимами, ...
                             // На всякий случай убедитесь, что это расстояние превышает Z_MAX_POS.

// Направление конечных точек при возврате в исходное положение; 1=МАКС, -1=МИН
// :[-1,1]
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

// машина @section

// Размер печатной платформы
#define X_BED_SIZE 220
#define Y_BED_SIZE 220

// Пределы перемещения (мм) после возврата в исходное положение, соответствующие конечным положениям.
#define X_MIN_POS -33
#define Y_MIN_POS -10
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 240

/**
 * Software Endstops
 *
 * - Prevent moves outside the set machine bounds.
 * - Individual axes can be disabled, if desired.
 * - X and Y only apply to Cartesian robots.
 * - Use 'M211' to set software endstops on/off or report current state
 */

// Минимальные программные конечные упоры ограничивают движение в пределах минимальных границ координат.
#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

// Программные ограничители Max ограничивают движение в пределах максимальных координат.
#define MAX_SOFTWARE_ENDSTOPS
#if ENABLED(MAX_SOFTWARE_ENDSTOPS)
  #define MAX_SOFTWARE_ENDSTOP_X
  #define MAX_SOFTWARE_ENDSTOP_Y
  #define MAX_SOFTWARE_ENDSTOP_Z
#endif

#if ENABLED(MIN_SOFTWARE_ENDSTOPS) || ENABLED(MAX_SOFTWARE_ENDSTOPS)
  //#define SOFT_ENDSTOPS_MENU_ITEM // Включение/выключение программной остановки с ЖК-дисплея
#endif

/**
 * Filament Runout Sensors
 * Mechanical or opto endstops are used to check for the presence of filament.
 *
 * RAMPS-based boards use SERVO3_PIN for the first runout sensor.
 * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc.
 * By default the firmware assumes HIGH=FILAMENT PRESENT.
 */
//#define FILAMENT_RUNOUT_SENSOR
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
  #define NUM_RUNOUT_SENSORS   1     // Количество датчиков, до одного на экструдер. Определите FIL_RUNOUT#_PIN для каждого.
  #define FIL_RUNOUT_INVERTING false // установите значение true, чтобы инвертировать логику датчика.
  #define FIL_RUNOUT_PULLUP          // Использовать внутреннее подтягивание для выводов биения нити.
  #define FILAMENT_RUNOUT_SCRIPT "M600"
#endif

//============================================== ==========================
//============================== Выравнивание стола ============== ===============
//============================================== ==========================
// Калибровка @section

/**
 * 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

/**
 * Normally G28 leaves leveling disabled on completion. Enable
 * this option to have G28 restore the prior leveling state.
 */
//#define RESTORE_LEVELING_AFTER_G28

/**
 * Enable detailed logging of G28, G29, M48, etc.
 * Turn on with the command 'M111 S32'.
 * NOTE: Requires a lot of PROGMEM!
 */
//#define DEBUG_LEVELING_FEATURE

#if ENABLED(MESH_BED_LEVELING) || ENABLED(AUTO_BED_LEVELING_BILINEAR) || ENABLED(AUTO_BED_LEVELING_UBL)
  // Постепенно уменьшаем коррекцию выравнивания, пока не будет достигнута заданная высота,
  // в этот момент движение будет на уровне плоскости XY машины.
  // Высоту можно установить с помощью M420 Z<height>
  #define ENABLE_LEVELING_FADE_HEIGHT

  // Для декартовых машин вместо разделения ходов по границам сетки,
  // разбиваем движения на короткие сегменты, например, дельту. Это следует из
  // контуры стола более точные, чем прямые движения от края до края.
  #define SEGMENT_LEVELED_MOVES
  #define LEVELED_SEGMENT_LENGTH 5.0 // (мм) Длина всех сегментов (кроме последнего)

  /**
   * Enable the G26 Mesh Validation Pattern tool.
   */
  //#define G26_MESH_VALIDATION
  #if ENABLED(G26_MESH_VALIDATION)
    #define MESH_TEST_NOZZLE_SIZE    0.4  // (мм) Диаметр первичного сопла.
    #define MESH_TEST_LAYER_HEIGHT   0.2  // (мм) Высота слоя по умолчанию для инструмента проверки сетки G26.
    #define MESH_TEST_HOTEND_TEMP  205.0  // (°C) Температура сопла по умолчанию для инструмента проверки сетки G26.
    #define MESH_TEST_BED_TEMP      60.0  // (°C) Температура стола по умолчанию для инструмента проверки сетки G26.
  #endif

#endif

#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR)

  // Установите количество точек сетки для каждого измерения.
  #define GRID_MAX_POINTS_X 3
  #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

  // Устанавливаем границы зондирования (куда зонд может дойти).
  //#define LEFT_PROBE_BED_POSITION MIN_PROBE_EDGE 10
  //#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - MIN_PROBE_EDGE) 167
  //#define FRONT_PROBE_BED_POSITION MIN_PROBE_EDGE 10
  //#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - MIN_PROBE_EDGE) 202
  #define LEFT_PROBE_BED_POSITION 10
  #define RIGHT_PROBE_BED_POSITION 167
  #define FRONT_PROBE_BED_POSITION 10
  #define BACK_PROBE_BED_POSITION 206


  // Зондируем по оси Y, перемещая X после каждого столбца
  //#define PROBE_Y_FIRST

  #if ENABLED(AUTO_BED_LEVELING_BILINEAR)

    // За пределами исследуемой сетки продолжить подразумеваемый наклон?
    // По умолчанию сохраняется высота ближайшего края.
    //#define EXTRAPOLATE_BEYOND_GRID

    //
    // Экспериментальное разбиение сетки методом Катмулла-Рома.
    // Синтезирует промежуточные точки для создания более детальной сетки.
    //
    //#define ABL_BILINEAR_SUBDIVISION
    #if ENABLED(ABL_BILINEAR_SUBDIVISION)
      // Количество подразделений между точками зонда
      #define BILINEAR_SUBDIVISIONS 3
    #endif

  #endif

#elif ENABLED(AUTO_BED_LEVELING_UBL)

  //============================================== ==========================
  //======================== Единая система выравнивания рабочего стола =================== ========
  //============================================== ==========================

  //#define MESH_EDIT_GFX_OVERLAY // Отображение наложения графики при редактировании сетки

  #define MESH_INSET 1              // Установить границы сетки как вложенную область слоя
  #define GRID_MAX_POINTS_X 10      // Не используйте более 15 точек на ось, реализация ограничена.
  #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

  #define UBL_MESH_EDIT_MOVES_Z     // Опытные пользователи предпочитают, чтобы сопло не двигалось
  #define UBL_SAVE_ACTIVE_ON_M500   // Сохраняем текущую активную сетку в текущем слоте на M500

  //#define UBL_Z_RAISE_WHEN_OFF_MESH 2.5 // Когда сопло находится за пределами сетки, используется это значение
                                          // как значение коррекции Z-высоты.

#elif ENABLED(MESH_BED_LEVELING)

  //============================================== ==========================
  //================================== Сетка ============ ======================
  //============================================== ==========================

  #define MESH_INSET 10          // Установить границы сетки как вложенную область слоя
  #define GRID_MAX_POINTS_X 3    // Не используйте более 7 точек на ось, реализация ограничена.
  #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

  //#define MESH_G28_REST_ORIGIN // После возврата всех осей в исходное положение ('G28' или 'G28 XYZ') оставьте Z в Z_MIN_POS

#endif // УРОВЕНЬ_КРОВАТИ

/**
 * Points to probe for all 3-point Leveling procedures.
 * Override if the automatically selected points are inadequate.
 */
#if ENABLED(AUTO_BED_LEVELING_3POINT) || ENABLED(AUTO_BED_LEVELING_UBL)
  #define PROBE_PT_1_X 20
  #define PROBE_PT_1_Y 160
  #define PROBE_PT_2_X 20
  #define PROBE_PT_2_Y 10
  #define PROBE_PT_3_X 180
  #define PROBE_PT_3_Y 10
#endif

/**
 * Add a bed leveling sub-menu for ABL or MBL.
 * Include a guided procedure if manual probing is enabled.
 */
//#define LCD_BED_LEVELING

#if ENABLED(LCD_BED_LEVELING)
  #define MBL_Z_STEP 0.025    // Размер шага при ручном измерении оси Z.
  #define LCD_PROBE_Z_RANGE 4 // Диапазон Z по центру Z_MIN_POS для регулировки Z ЖК-дисплея
#endif

// Добавляем пункт меню для перемещения между углами стола для ручной регулировки стола
//#define LEVEL_BED_CORNERS

#if ENABLED(LEVEL_BED_CORNERS)
  #define LEVEL_CORNERS_INSET 30    // (мм) Вставка для выравнивания угла
  //#define LEVEL_CENTER_TOO // Перемещение в центр после последнего угла
#endif

/**
 * Commands to execute at the end of G29 probing.
 * Useful to retract or move the Z probe out of the way.
 */
//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10"


// @section возвращение домой

// Центр стола находится в точке (X=0, Y=0)
//#define BED_CENTER_AT_0_0

// Вручную устанавливаем исходное положение. Оставьте эти значения неопределенными для автоматических настроек.
// Для DELTA это верхняя и центральная часть декартового объема печати.
//#define MANUAL_X_HOME_POS 0
//#define MANUAL_Y_HOME_POS 0
//#define MANUAL_Z_HOME_POS 0

// Использовать «Z Safe Homing»; чтобы избежать наведения Z-зонда за пределы рабочего места.
//
// Если эта функция включена:
//
// - Разрешить перемещение по оси Z только после того, как перемещение по X и Y И шаговые драйверы все еще включены.
// - Если время ожидания шагового драйвера истекло, ему потребуется снова вернуться в исходное положение по X и Y перед возвращением в исходное положение по Z.
// - Переместите датчик Z (или сопло) в определенную точку XY перед перемещением по Z при возврате в исходное положение всех осей (G28).
// - Запретить возвращение Z, когда датчик Z находится за пределами рабочего стола.
//
#define Z_SAFE_HOMING

#if ENABLED(Z_SAFE_HOMING)
  #define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2)     // Точка X для возврата в исходное положение по Z при возврате в исходное положение всех осей (G28).
  #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2)     // Точка Y для возврата в исходное положение по оси Z при возврате в исходное положение всех осей (G28).
#endif

// Скорость возврата в исходное положение (мм/м)
#define HOMING_FEEDRATE_XY (100*60)
#define HOMING_FEEDRATE_Z  (4*60)

// Калибровка @section

/**
 * Bed Skew Compensation
 *
 * This feature corrects for misalignment in the XYZ axes.
 *
 * Take the following steps to get the bed skew in the XY plane:
 *  1. Print a test square (e.g., https://www.thingiverse.com/thing:2563185).
 *  2. For XY_DIAG_AC measure the diagonal A to C
 *  3. For XY_DIAG_BD measure the diagonal B to D
 *  4. For XY_SIDE_AD measure the edge A to D
 *
 * Marlin automatically computes skew factors from these measurements.
 * Skew factors may also be computed and set manually:
 *
 *  - Compute AB     : SQRT(2*AC*AC+2*BD*BD-4*AD*AD)/2
 *  - XY_SKEW_FACTOR : TAN(PI/2-ACOS((AC*AC-AB*AB-AD*AD)/(2*AB*AD)))
 *
 * If desired, follow the same procedure for XZ and YZ.
 * Use these diagrams for reference:
 *
 *    Y                     Z                     Z
 *    ^     B-------C       ^     B-------C       ^     B-------C
 *    |    /       /        |    /       /        |    /       /
 *    |   /       /         |   /       /         |   /       /
 *    |  A-------D          |  A-------D          |  A-------D
 *    +-------------->X     +-------------->X     +-------------->Y
 *     XY_SKEW_FACTOR        XZ_SKEW_FACTOR        YZ_SKEW_FACTOR
 */
//#определить SKEW_CORRECTION

#if ENABLED(SKEW_CORRECTION)
  // Введите сюда все измерения длины:
  #define XY_DIAG_AC 282.8427124746
  #define XY_DIAG_BD 282.8427124746
  #define XY_SIDE_AD 200

  // Или установите коэффициенты асимметрии по умолчанию прямо здесь
  // чтобы переопределить приведенные выше измерения:
  #define XY_SKEW_FACTOR 0.0

  //#define SKEW_CORRECTION_FOR_Z
  #if ENABLED(SKEW_CORRECTION_FOR_Z)
    #define XZ_DIAG_AC 282.8427124746
    #define XZ_DIAG_BD 282.8427124746
    #define YZ_DIAG_AC 282.8427124746
    #define YZ_DIAG_BD 282.8427124746
    #define YZ_SIDE_AD 200
    #define XZ_SKEW_FACTOR 0.0
    #define YZ_SKEW_FACTOR 0.0
  #endif

  // Включите эту опцию, чтобы M852 устанавливал перекос во время выполнения
  //#define SKEW_CORRECTION_GCODE
#endif

, 👍1

Обсуждение

Поскольку это Marlin 1.1.9, дополнительную справочную информацию можно найти в разделе Как установить граничные пределы Z-зонда в прошивке при использовании автоматического выравнивания стола? на как ограничения (раньше) работали в Marlin, @0scar


1 ответ


Лучший ответ:

0

Ваша конфигурация выглядит нормально для большинства определений, которые сравнивались с известными настройками при использовании зонда.

Вы должны знать, что с помощью #define Z_SAFE_HOMING вы определяете, что датчик находится в середине стола, однако сопло затем смещается от середины стола в соответствии с #define X_PROBE_OFFSET_FROM_EXTRUDER -43 и #define Y_PROBE_OFFSET_FROM_EXTRUDER -4 определенные смещения.

Итак, при команде G28 каретка переместится в (110, 110) для датчика, который отображается как (110 - -43, 110 - -4) = (153, 114) ) для сопла.

Так что с настройкой все в порядке, все работает как надо.


,

Спасибо за это. Принтер хранился у меня несколько лет, и я практически потерял счет всему, чему научился ранее. Приятно знать, что конфигурация правильная. То есть, по сути, теперь датчик не должен быть неисправным, стартовый Gcode запустит его настройку, и все в порядке?, @Raynbow

@Raynbow Пожалуйста, но благодарность осуществляется посредством [принятия](https://3dprinting.stackexchange.com/help/someone-answers) и [голосования за (хотя требуется не менее 15 представителей)](https:/ /3dprinting.stackexchange.com/help/privileges/vote-up) ответы. Пожалуйста, посетите [тур] и прочитайте нашу [справку], чтобы узнать все о том, что такое Stack Exchange 3DPrinting. Мы все рады помочь! Я когда-то начинал с Анет А8., @0scar