Как установить границы Z-зонда в прошивке при использовании автоматического выравнивания стола?

При настройке зонда для автоматического выравнивания стола пределы зоны зондирования должны быть введены в встроенное программное обеспечение 3D-принтера.

При использовании датчика, как вы определяете пределы рабочего стола для датчика в прошивке Marlin?

Например, конфигурация Marlin (1.1.x). h содержит следующие неактивные операторы:

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

Как вы устанавливаете значения констант вашей пользовательской настройки? Является ли это общим или специфическим?

Позиционирование зонда определяется в конфигурации Marlin следующим образом:

 *      +-- BACK ---+
 *      |           |
 *    L |    (+) P  | R
 *    E |           | I
 *    F | (-) N (+) | G
 *    T |           | H
 *      |    (-)    | T
 *      |           |
 *      O-- FRONT --+
 *    (0,0)

Зонд может быть помещен с положительным или отрицательным значением X и Y. Учитывая это положение, как настроить пределы рабочего стола датчика?

, 👍20


1 ответ


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

29

Есть несколько вопросов на эту тему, поэтому более общее решение будет информативным и предотвратит многократный вопрос других, когда их датчик имеет немного другое местоположение. Этот ответ предназначен для охвата любого положения относительно сопла. Также не имеет значения, что это за датчик, он может быть 3DTouch, BLTouch, индуктивный, емкостный и т. Д., главное, чтобы вы могли определить смещение сопла (от центра к центру).

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

Во-первых, определите смещение датчика (например, путем измерения или взятия из информации печатаемого кронштейна датчика, найденной на многих общих сайтах в Интернете; Thingiverse является хорошим источником для таких кронштейнов).


ПОДСКАЗКА для Marlin 2.x

Обратите внимание на версию (ветвь) Марлина! Ответ написан во время ветви 1.1.x и как таковой совершенно справедлив для последней версии 1.1.x (1.1.9). Для ветви 2.0.x Marlin используются другие имена констант и используется другая стратегия (более простая для настройки). Имена констант не найдены в конфигурации.h, но ответ (и теория) все еще полезен. Постоянные значения смещения зонда теперь находятся в файле Configuration_adv.h:

  • MIN_PROBE_EDGE_LEFT
  • MIN_PROBE_EDGE_RIGHT
  • MIN_PROBE_EDGE_FRONT
  • MIN_PROBE_EDGE_BACK

Обратите внимание, что в Marlin 1.1.x границы задаются в абсолютных положениях, в то время как в Marlin 2.0.x они описываются в значениях смещения от края стола.


Смещение датчика

Положение датчика устанавливается с помощью следующих констант:

#define X_PROBE_OFFSET_FROM_EXTRUDER [XXX] // смещение X: -влево +вправо [сопла]
#define Y_PROBE_OFFSET_FROM_EXTRUDER [YYY] // смещение Y: -спереди +сзади [сопло]

где [XXX] и [YYY] - значения смещения, задающие центр датчика относительно сопла. Если оба значения положительные, то датчик расположен сзади справа, если оба отрицательные, то положение спереди слева (как видно из передней части машины, используя определение в конфигурационном файле Marlin). Другие возможные позиции-задняя левая и передняя правая (одно положительное и одно отрицательное значение).


ПОДСКАЗКА для Marlin 2.x

Обратите внимание, что в Marlin 2.x эти константы заменяются определением массива:

#define NOZZLE_TO_PROBE_OFFSET { XXX, YYY, ZZZ }

Где ZZZ-это смещение Z. Если вы используете старые константы, проверка здравомыслия при компиляции выдаст утверждение, что эти константы больше не используются и должны быть удалены.


Во-вторых, давайте установим границы зоны действия датчиков!

Пределы площади Датчика

На следующих изображениях сопло, датчик и смещения определяются следующим образом:: Legend of nozzle, sensor and offset

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

1. Датчик сзади справа:

Probe area for back-right probe

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

#define LEFT_PROBE_BED_POSITION (X_PROBE_OFFSET_FROM_EXTRUDER)
#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE)
#define FRONT_PROBE_BED_POSITION (Y_PROBE_OFFSET_FROM_EXTRUDER)
#define BACK_PROBE_BED_POSITION (Y_BED_SIZE)

Обратите внимание, что если минимальное смещение зонда определяется параметром #define MIN_PROBE_EDGE [value] в конфигурации (для учета ширины/размера датчика), то пределы стола изменяются, что приводит к (где t = MIN_PROBE_EDGE):

Probe area for back-right probe with MIN_PROBE_EDGE offset

Затем лимиты устанавливаются следующим образом:

#define LEFT_PROBE_BED_POSITION (X_PROBE_OFFSET_FROM_EXTRUDER + MIN_PROBE_EDGE)
#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - MIN_PROBE_EDGE)
#define FRONT_PROBE_BED_POSITION (Y_PROBE_OFFSET_FROM_EXTRUDER + MIN_PROBE_EDGE)
#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - MIN_PROBE_EDGE)

При следующих размещениях положения датчика это смещение для MIN_PROBE_EDGE будет учтено.

2. Датчик сзади слева:

Probe area for back-left probe

Это означает, что датчик может достигать задней и левой границ (для нулевого MIN_PROBE_EDGE), поэтому пределы устанавливаются следующим образом:

#define LEFT_PROBE_BED_POSITION (MIN_PROBE_EDGE)
#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE + X_PROBE_OFFSET_FROM_EXTRUDER - MIN_PROBE_EDGE)
#define FRONT_PROBE_BED_POSITION (Y_PROBE_OFFSET_FROM_EXTRUDER + MIN_PROBE_EDGE)
#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - MIN_PROBE_EDGE)

3. Датчик спереди слева:

Probe area for front-left probe

Это означает, что датчик может достигать передней и левой границ (для нулевого MIN_PROBE_EDGE), поэтому пределы устанавливаются следующим образом:

#define LEFT_PROBE_BED_POSITION (MIN_PROBE_EDGE)
#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE + X_PROBE_OFFSET_FROM_EXTRUDER - MIN_PROBE_EDGE)
#define FRONT_PROBE_BED_POSITION (MIN_PROBE_EDGE)
#define BACK_PROBE_BED_POSITION (Y_BED_SIZE + Y_PROBE_OFFSET_FROM_EXTRUDER - MIN_PROBE_EDGE)

4. Датчик спереди справа:

Probe area for back-right probe

Это означает, что датчик может достигать передней и правой границ (для нулевого MIN_PROBE_EDGE), поэтому ограничения устанавливаются:

#define LEFT_PROBE_BED_POSITION (X_PROBE_OFFSET_FROM_EXTRUDER + MIN_PROBE_EDGE)
#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - MIN_PROBE_EDGE)
#define FRONT_PROBE_BED_POSITION (MIN_PROBE_EDGE)
#define BACK_PROBE_BED_POSITION (Y_BED_SIZE + Y_PROBE_OFFSET_FROM_EXTRUDER - MIN_PROBE_EDGE)

Это должно было касаться основ определения границ зоны действия датчиков. Это становится немного сложнее, когда есть дополнительное пространство для перемещения. Очень простое использование дополнительного пространства для перемещения можно найти в конфигурационном файле, например:

// Пределы хода (мм) после самонаведения, соответствующие положениям концевого упора.
#define X_MIN_POS [XX]
#define Y_MIN_POS [YY]

где [XX] и [YY] - значения смещения от конечной точки к началу координат (оранжевые стрелки обозначают X_MIN_POS и Y_MIN_POS):

Probe area for back-right probe including homing endstop offsets Это приводит к константам смещения для заднего правого зонда:

#define LEFT_PROBE_BED_POSITION (X_PROBE_OFFSET_FROM_EXTRUDER + X_MIN_POS + MIN_PROBE_EDGE)
#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - MIN_PROBE_EDGE)
#define FRONT_PROBE_BED_POSITION (Y_PROBE_OFFSET_FROM_EXTRUDER + Y_MIN_POS + MIN_PROBE_EDGE)
#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - MIN_PROBE_EDGE)

Для всех остальных вариантов может быть применено аналогичное добавление смещений самонаведения.

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


Мысли о решении для Marlin 2.0.x

Как я уже упоминал ранее, Marlin 2.0.x использует смещения краев стола, а не абсолютные позиции. По аналогии с предыдущими графиками мы можем нарисовать диаграмму пределов стола (пример ниже предполагает задний правый установленный зонд!):

Marlin 2.0.x desk sensor limits

Обратите внимание, что смещения от края должны быть определены, чтобы правильно сделать это, нам нужен доступ к определению смещения сопла:

#define NOZZLE_TO_PROBE_OFFSET { XXX, YYY, ZZZ }

Поскольку это та часть, которая определяет значения массива, вам сначала нужно создать массив (обратите внимание, что это простое решение, которое многие люди должны быть в состоянии понять с ограниченными навыками программирования, более элегантные решения используют структуру XYZ для доступа к свойствам X, Y или Z):

Обратите внимание, что Marlin 2.0.x автоматически регулирует площадь зонда на основе определенного смещения и MIN_PROBE_EDGE, определенного для всех 4 сторон стола.

смотрите:

#if PROBE_SELECTED && !IS_KINEMATIC
  #define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_RIGHT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_FRONT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_BACK MIN_PROBE_EDGE
#endif


,

Для Marlin 2.0.7.2 размер печатного стола и ограничения на поездки указаны отдельно. В моем случае (печатный стол размером 220 мм, но инструмент может перемещаться на 30 мм дальше) я изменил "#define X_MAX_POS X_BED_SIZE" на "#define X_MAX_POS 250" (в конфигурации.h), и принтер теперь зондирует ближе к правому краю., @Klaws

Привет, небольшое замечание ... они снова сменили название на... PROBING_MARGIN_LEFT и т. Д, @zwep

Не следует ли проверить, чтобы смещение точки зондирования+не превышало область печати? Я перешел на обновление до 2.0.x, но использовал рекомендуемый вентилятор microswiss, который смещает X примерно на -40. В первый раз, когда я перешел на автоматический уровень стола, прошивка попыталась прощупать крайнюю правую сторону и заземлить X-шаг, пытаясь превысить допустимый для печати предел., @Scott