ANet A8 работает под управлением Marlin v1.1.9 Автоматический уровень стола с ROKO SN04-N

Я пытаюсь заставить датчик ROKO (SN04-N) работать с моим Anet A8. Во-первых, пытаясь привинтить его к экструдеру, я слишком сильно затянул его и как бы сломал акриловую пластину... вроде того. Мне пришлось использовать очень тонкую стальную пластину с двумя отверстиями, чтобы закрепить акриловую пластину. Это все еще работает.

Теперь я следовал инструкциям в этом видео. (Пожалуйста, обратите внимание, что видео не на английском языке.) После первой операции "Авто Домой" парень рисует на столе, а затем измеряет. Мои размеры немного отличаются.

На 19-минутной отметке парень жестко кодирует значения, но я не понимаю, как он их рассчитал? Мои измеренные смещения: X_PROBE_OFFSET_FROM_EXTRUDER 16 и Y_PROBE_OFFSET_FROM_EXTRUDER 58. В своем видео он подсчитал, что смещение X составляет 18 мм, а смещение Y-57 мм. В любом случае, я не могу скомпилировать код, так как проверка на вменяемость не удалась:

`static_assert(ПОЛОЖЕНИЕ FRONT_PROBE_BED_POSITION >= MIN_PROBE_Y, "ПОЛОЖЕНИЕ FRONT_PROBE_BED_POSITION находится за пределами области зонда.");`

Вот значения ограничения датчика из файла конфигурации:

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

Что я делаю не так?

Обратите внимание, что я использую прошивку Marlin v1.1.9

, 👍4


1 ответ


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

5

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

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

 * +-- НАЗАД ---+
 *      |           |
 * L | (+) P | R -- зонд (20,20)
 *    E |           | I
 * F | (-) N (+) | G -- сопло (10,10)
 * Т | | Ч
 * | (-) | Т
 *      |           |
 * O - СПЕРЕДИ -+
 *    (0,0)

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

#define X_PROBE_OFFSET_FROM_EXTRUDER 16 // Смещение X: -влево +вправо [сопла]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 58 // Смещение по оси Y: -спереди +сзади [сопло]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Смещение Z: -ниже +выше [сопла]

Чтобы рассчитать правильные пределы перемещения датчика, вам необходимо вычесть значения смещения из размера стола в максимальных пределах.

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

#define MIN_PROBE_EDGE 10

Так как датчик расположен не по центру относительно своего сопла, можно лишь предположить, что у вас нет дополнительного пространства, чтобы переместить весь печатающей головки и, следовательно, нужно ограничить в пределах макс./мин. рабочий стол размер (не должно быть дополнительное пространство, это видно из смещения для источника в качестве значений для X_MIN_POS и Y_MIN_POS, но для простоты они не будут учитываться).

В принципе, ваше положительное смещение Y и положительное смещение X приводят к следующей схеме. Schematic of the desk and the sensor limits

Или, если вы включаете #define MIN_PROBE_EDGE [значение] Schematic of the desk and the sensor limits including MIN_PROBE_EDGE

Пределы рабочего стола для датчика затем необходимо будет рассчитать на основе значений вашего смещения датчика. Например, когда ваше сопло находится на (X=0, Y-0) или (0, 0), ваш датчик находится на (16, 58). Если вы не хотите перемещать головку дальше влево и вперед (в соответствии с началом координат как предел!), это минимальное положение датчика. Когда датчик находится в заднем правом положении (220, 220), фактическая головка находится в (220-16=204, 220-58=162).

Это означает, что пределы для датчика без минимального смещения равны (16, 58) и (220, 220):

#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 = 0 в:

#define ПОЛОЖЕНИЕ LEFT_PROBE_BED_POSITION 16
#define ПРАВИЛЬНУЮ ПОЗИЦИЮ RIGHT_PROBE_BED_POSITION 220 
#define ПОЗИЦИЮ FRONT_PROBE_BED_POSITION 58
#define BACK_PROBE_BED_POSITION 220

и перевел бы с помощью MIN_PROBE_EDGE = 10 в:

#define ПОЛОЖЕНИЕ LEFT_PROBE_BED_POSITION 26
#define ПРАВИЛЬНУЮ ПОЗИЦИЮ RIGHT_PROBE_BED_POSITION 210 
#define FRONT_PROBE_BED_POSITION 68
#define BACK_PROBE_BED_POSITION 210

Утверждение в коде: FRONT_PROBE_BED_POSITION >= MIN_PROBE_Y> теперь будет переведено в (58 >= 58) (или 68 >>= 58), в вашем случае это было (47 >>>= 58), что явно неверно.


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


,