Auto Bed Leveling для DR-принтера ч.2 Code
Опубликовано 3DReplicator Апр 5, 2017 ДелайСам, Разное | 4 Коммент.

В продолжении темы Автоуровня стола хочу привести кусок рабочего кода из 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 — алгоритм, и он может быть полностью удален из прошивки.
Кажется в Марлине 1.1 запилили автолевел для дельт. Сам пока нет смотрел, сижу на 1.0
Здравствуйте, Денис!
Автолевел для обычных дельт существует давно. Тут суть в особенностях данной конструкции, которая обуславливает некоторые нюансы работы алгоритма.
Дельта-роботы перемещаются в отрицательной плоскости по Z, т.е. ноль над эффектором. Если для обычного принтера существует отрицательная координата по Z, то для дельта-робота все будет не так однозначно. Чтобы дельта-робот заработал в привычной для нас системе координат, когда ноль находится под печатающей головой, нужно выполнить некоторые преобразования координат, которые зависят от геометрии конструкции. Вот этот нюанс и приводит к искажениям при калибровке.
В принципе, можно задать позицию нуля гораздо ниже плоскости стола, тогда стандартный алгоритм автолевела заработает, но возникнут проблемы с калибровкой принтера.
В общем, все неоднозначно)
Спасибо, возьму на заметку
Спасибо! Успехов!