Индивидуальные длины тяг Anycubic Kossel Plus
Всем привет.
На моем Anycubic Kossel Plus окружности печатаются эллипсами с отклонением 0,4 мм, что иногда весьма критично. Прошивка Marlin 1.1.9 https://www.thingiverse.com/thing:3094837
По методике https://www.thingiverse.com/thing:1274733 вычислил длины тяг, по этой https://www.thingiverse.com/thing:745523 понял, что углы между башнями по 120 град. Но вопрос - как теперь ввести длины тяг для каждой из башен? Видимо в Marlin 1.1.9 другая методика расчета, чем представленная авторами по ссылкам выше.
В Configuration.h прописал переменные
// Center-to-center distance of the holes in the diagonal push rods.
#define DELTA_DIAGONAL_ROD_A 267.116
#define DELTA_DIAGONAL_ROD_B 266.522
#define DELTA_DIAGONAL_ROD_C 267.577
В Marlin_main.cpp
#if ENABLED(DELTA)
/**
* Recalculate factors used for delta kinematics whenever
* settings have been changed (e.g., by M665).
*/
void recalc_delta_settings() {
const float trt[ABC] = DELTA_RADIUS_TRIM_TOWER,
drt[ABC] = DELTA_DIAGONAL_ROD_TRIM_TOWER;
delta_tower[A_AXIS][X_AXIS] = cos(RADIANS(210 + delta_tower_angle_trim[A_AXIS])) * (delta_radius + trt[A_AXIS]); // front left tower
delta_tower[A_AXIS][Y_AXIS] = sin(RADIANS(210 + delta_tower_angle_trim[A_AXIS])) * (delta_radius + trt[A_AXIS]);
delta_tower[B_AXIS][X_AXIS] = cos(RADIANS(330 + delta_tower_angle_trim[B_AXIS])) * (delta_radius + trt[B_AXIS]); // front right tower
delta_tower[B_AXIS][Y_AXIS] = sin(RADIANS(330 + delta_tower_angle_trim[B_AXIS])) * (delta_radius + trt[B_AXIS]);
delta_tower[C_AXIS][X_AXIS] = cos(RADIANS( 90 + delta_tower_angle_trim[C_AXIS])) * (delta_radius + trt[C_AXIS]); // back middle tower
delta_tower[C_AXIS][Y_AXIS] = sin(RADIANS( 90 + delta_tower_angle_trim[C_AXIS])) * (delta_radius + trt[C_AXIS]);
delta_diagonal_rod_2_tower[A_AXIS] = sq(delta_diagonal_rod_A + drt[A_AXIS]);
delta_diagonal_rod_2_tower[B_AXIS] = sq(delta_diagonal_rod_B + drt[B_AXIS]);
delta_diagonal_rod_2_tower[C_AXIS] = sq(delta_diagonal_rod_C + drt[C_AXIS]);
update_software_endstops(Z_AXIS);
axis_homed = 0;
}
Но сборка не компилируется. Не могу понять что я упустил, или вообще калибровка в принципе не так работает.
Буду благодарен за подсказки. Архив с прошивкой https://yadi.sk/d/eOkZdPZoByrN2g
На моем Anycubic Kossel Plus окружности печатаются эллипсами с отклонением 0,4 мм, что иногда весьма критично. Прошивка Marlin 1.1.9 https://www.thingiverse.com/thing:3094837
По методике https://www.thingiverse.com/thing:1274733 вычислил длины тяг, по этой https://www.thingiverse.com/thing:745523 понял, что углы между башнями по 120 град. Но вопрос - как теперь ввести длины тяг для каждой из башен? Видимо в Marlin 1.1.9 другая методика расчета, чем представленная авторами по ссылкам выше.
В Configuration.h прописал переменные
// Center-to-center distance of the holes in the diagonal push rods.
#define DELTA_DIAGONAL_ROD_A 267.116
#define DELTA_DIAGONAL_ROD_B 266.522
#define DELTA_DIAGONAL_ROD_C 267.577
В Marlin_main.cpp
#if ENABLED(DELTA)
/**
* Recalculate factors used for delta kinematics whenever
* settings have been changed (e.g., by M665).
*/
void recalc_delta_settings() {
const float trt[ABC] = DELTA_RADIUS_TRIM_TOWER,
drt[ABC] = DELTA_DIAGONAL_ROD_TRIM_TOWER;
delta_tower[A_AXIS][X_AXIS] = cos(RADIANS(210 + delta_tower_angle_trim[A_AXIS])) * (delta_radius + trt[A_AXIS]); // front left tower
delta_tower[A_AXIS][Y_AXIS] = sin(RADIANS(210 + delta_tower_angle_trim[A_AXIS])) * (delta_radius + trt[A_AXIS]);
delta_tower[B_AXIS][X_AXIS] = cos(RADIANS(330 + delta_tower_angle_trim[B_AXIS])) * (delta_radius + trt[B_AXIS]); // front right tower
delta_tower[B_AXIS][Y_AXIS] = sin(RADIANS(330 + delta_tower_angle_trim[B_AXIS])) * (delta_radius + trt[B_AXIS]);
delta_tower[C_AXIS][X_AXIS] = cos(RADIANS( 90 + delta_tower_angle_trim[C_AXIS])) * (delta_radius + trt[C_AXIS]); // back middle tower
delta_tower[C_AXIS][Y_AXIS] = sin(RADIANS( 90 + delta_tower_angle_trim[C_AXIS])) * (delta_radius + trt[C_AXIS]);
delta_diagonal_rod_2_tower[A_AXIS] = sq(delta_diagonal_rod_A + drt[A_AXIS]);
delta_diagonal_rod_2_tower[B_AXIS] = sq(delta_diagonal_rod_B + drt[B_AXIS]);
delta_diagonal_rod_2_tower[C_AXIS] = sq(delta_diagonal_rod_C + drt[C_AXIS]);
update_software_endstops(Z_AXIS);
axis_homed = 0;
}
Но сборка не компилируется. Не могу понять что я упустил, или вообще калибровка в принципе не так работает.
Буду благодарен за подсказки. Архив с прошивкой https://yadi.sk/d/eOkZdPZoByrN2g
Популярные вопросы
Ender 3 v2 выбивает УЗО?
Ответ на вопрос кажется очевидным, но не все так просто - выбивает так называемое противопожарное aka селективное УЗО на 300 мА во вводном щитке. Это...
Marlin: Baby Step и Z Offset
К стыду своему за 10 лет 3D-печати так и не научился кое-каким мелочам, поэтому прошу помощи.
Итак, есть принтер с автоуровнем. В EEP...
Итак, есть принтер с автоуровнем. В EEP...
Вопрос по датчику Auto-leveling Sensor и g code
Всем добрый вечер!, купил датчик авто уровня , и теперь есть пару вопросов у тех кто таким пользовал, скажите его на горячую не льзя использовать я та...

Комментарии и вопросы
Не очень и хотелось убеждать.....
Таблицы резьб ни разу не совпа...
Прямо сейчас в канале выбираем...
Всем привет! Ранее задавал воп...
В общем сейчас обычный бутербр...
Имеется принтер, у которого 2...
Добрый день. Подскажи, что выб...