Auto Bed Leveling для DR-принтера ч.2 Code

Auto Bed Leveling для DR-принтера ч.2 Code

В продолжении темы Автоуровня стола хочу привести кусок рабочего кода из Marlin_main.cpp

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

static void run_z_probe() {

#ifdef DELTA

if (current_position[Z_AXIS] > (-1*zprobe_zoffset + 10)){ // move down
destination[Z_AXIS] = -1*zprobe_zoffset + 10;
enable_endstops(false);
feedrate = homing_feedrate[Z_AXIS];
prepare_move_raw();
st_synchronize();
}

// move down until you find the bed
for ( int i = 1; READ(Z_MIN_PIN) < 1; i++ ){
destination[Z_AXIS] = destination[Z_AXIS] — 1;
feedrate = homing_feedrate[X_AXIS];
prepare_move_raw();
st_synchronize();
}

// move up 2mm
feedrate = homing_feedrate[Z_AXIS];
destination[Z_AXIS] = destination[Z_AXIS] + 3;
prepare_move_raw();
st_synchronize();

// move slowly down until you find the bed
for ( int i = 1; READ(Z_MIN_PIN) < 1; i++ ){
destination[Z_AXIS] = destination[Z_AXIS] — 0.01;
feedrate = homing_feedrate[X_AXIS]/2;
prepare_move_raw();
st_synchronize();
}

При этом отпадает необходимость использовать Forward — алгоритм, и он может быть полностью удален из прошивки.

 

2 Коммент.

  1. Денис

    Кажется в Марлине 1.1 запилили автолевел для дельт. Сам пока нет смотрел, сижу на 1.0

    • Здравствуйте, Денис!
      Автолевел для обычных дельт существует давно. Тут суть в особенностях данной конструкции, которая обуславливает некоторые нюансы работы алгоритма.
      Дельта-роботы перемещаются в отрицательной плоскости по Z, т.е. ноль над эффектором. Если для обычного принтера существует отрицательная координата по Z, то для дельта-робота все будет не так однозначно. Чтобы дельта-робот заработал в привычной для нас системе координат, когда ноль находится под печатающей головой, нужно выполнить некоторые преобразования координат, которые зависят от геометрии конструкции. Вот этот нюанс и приводит к искажениям при калибровке.
      В принципе, можно задать позицию нуля гораздо ниже плоскости стола, тогда стандартный алгоритм автолевела заработает, но возникнут проблемы с калибровкой принтера.
      В общем, все неоднозначно)

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *