Кремень FMZ Реклама
Kremen FMHM Реклама

Калибровка Delta-принтера в Marlin'е

uotani
Идет загрузка
Загрузка
04.05.2017
21184
22
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

20
Всем привет!

Несмотря на то, что про калибровку дельта-принтеров есть уже немало постов, сам настраивал свой Anycubic plus после прочтения этого поста Калибровка Delta Kossel, хотелось бы остановиться на некоторых аспектах именно прошивки Marlin, которая идет в комплекте к этому, да и наверное многим другим принтерам. Ну и еще несколько моментов, которые я раскопал за несколько недель владения этим пепелацем и которые не нашел в русскоязычном сегменте. Я не делаю выводов какая прошивка лучше, честно не знаю пока, но по некоторым условиям Repetier пока не пошел, поэтому речь пойдет в основном о Marlin.

Итак, для начала немного теории и о калькуляторах для калибровки дельт - о чем не написано (либо я просто не нашел), но наверное многих интересует. В поисках информации, как же быстро и правильно настроить свой принтер, задался вопросом - а почему же в разных калькуляторах предлагаются разные корректировки настроек прошивки? Возьмем два, думаю наиболее популярных калькулятора - Эшера и deltaCalibrationTool, сократим последний до DCT (ссылки приводить не буду, они думаю всем известны, кому нужно, можете найти в посте по ссылке в начале). Рассматривать Diagonal_Rod не вижу особого смысла, думаю все калькуляторы справляются с этой задачей хорошо, да и вручную калибровать его совсем несложно, измеряя распечатанные калибровочные детали. Основное внимание хотелось бы уделить так сказать 2D, геометрической калибровке, то есть альфа-ротации и дельта-радиусу. Собственно эта калибровка делается для того, чтобы 'система' четко понимала, где относительно каждой 'башни' находится ноль координат XY, от этого зависит корректность расчета перемещений по каждой направляющей для перемещения экструдера на заданное расстояние от начала координат.

Поковырявшись в геометрических построениях, пришел к выводу, что калькуляторы используют две разные методики:
  • Калибровка относительно 'идеального' нуля координат, без его смещения (DCT). В этом варианте вводятся поправки на все углы и дельта-радиусы каждой 'башни', чтобы в итоге эти радиусы сходились в 'идеальном' нуле координат. При этом общий дельта-радиус можно не менять, достаточно сделать поправки для каждой 'башни'.
  • Калибровка относительно 'башни' С со смещением нуля координат (Эшер). В этом варианте считается, что 'башня' С всегда остается на оси Z, поэтому вся геометрия 'поворачивается' относительно 'идеального' нуля координат, чтобы альфа-угол C был равен 90гр. (либо от 'башни' С строится новая ось Y, по которой строится новый ноль по XY, думаю это вопрос геометрического восприятия, а расчеты одинаковы). При этом Эшер не дает корректировок дельта-радиусов по 'башням', вероятно из-за того, что смещая ноль координат по XY, считает, что все 'башни' расположены на одной окружности с новым центром, равным началу координат XY, следовательно дельта-радиусы одинаковы для всех 'башен', обязательно задается только новый общий дельта-радиус.

Немного рисунка, для наглядности сделал утрированно большие отклонения 'реального' расположения 'башен' (сплошные линия и окружности) от 'идеального' треугольника (пунктир):
Калибровка Delta-принтера в Marlin'е
Отсюда можно сделать вывод, что делать калибровку сразу по нескольким калькуляторам не имеет большого смысла, они будут давать разные результаты, в зависимости от метода построения и расчета координат 'башен' относительно нуля XY. Забегая вперед, выскажу свое мнение, что выбор метода отчасти зависит от прошивки - для Repetier можно использовать оба метода, для Marlin удобнее Эшер, хотя можно использовать и DCT, если кто захочет посильнее заморочиться с прошивкой.

Дальше перейдем непосредственно к Marlin и калибровке в нем альфа-углов и дельта-радиусов (для прошивки 1.1.0-RC8, в других версиях может отличаться). Для этого понадобиться внести некоторые корректировки в код прошивки. Нужные нам параметры на разных вкладках, поэтому пойдем от простого к сложному.

На вкладке Configuration.h для корректировки дельта-радиуса и диагонального стержня не останавливаемся, кто добрался до калибровки Marlin, наверняка и так это знает.

Корректировку дельта-радиусов и диагональных стержней (diagonal rod) ищем на вкладке Conditionals_post.h, ищем кусок кода, думаю как вводить корректировки, понятно:

#if ENABLED(DELTA)

#ifndef DELTA_RADIUS_TRIM_TOWER_1

#define DELTA_RADIUS_TRIM_TOWER_1 0.0

#endif

#ifndef DELTA_RADIUS_TRIM_TOWER_2

#define DELTA_RADIUS_TRIM_TOWER_2 0.0

#endif

#ifndef DELTA_RADIUS_TRIM_TOWER_3

#define DELTA_RADIUS_TRIM_TOWER_3 0.0

#endif

#ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_1

#define DELTA_DIAGONAL_ROD_TRIM_TOWER_1 0.0

#endif

#ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_2

#define DELTA_DIAGONAL_ROD_TRIM_TOWER_2 0.0

#endif

#ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_3

#define DELTA_DIAGONAL_ROD_TRIM_TOWER_3 0.0

#endif

#endif

Для корректировки diagonal rod может использоваться команда M665 R132.15 L267.05 A0.0 B0.0 C0.0, после первой прошивки изменения можно вносить только через EEPROM с помощью этой команды, не забываем сохранять командой M500. Это же касается delta_radius и diagonal_rod, R и L соответственно. Не забываем, что все параметры имеют определение с плавающей точкой, поэтому значения должны быть с точкой, даже нули 0.0

Самое 'вкусное', а именно корректировка альфа-ротации, находится на вкладке Marlin_main.ccp, ищем кусок кода:

#define SIN_60 0.8660254037844386

#define COS_60 0.5

float delta[ABC],

endstop_adj[ABC] = { 0 };

float delta_radius = DELTA_RADIUS,

delta_tower1_x = -SIN_60 * (delta_radius + DELTA_RADIUS_TRIM_TOWER_1), // front left tower

delta_tower1_y = -COS_60 * (delta_radius + DELTA_RADIUS_TRIM_TOWER_1),

delta_tower2_x = SIN_60 * (delta_radius + DELTA_RADIUS_TRIM_TOWER_2), // front right tower

delta_tower2_y = -COS_60 * (delta_radius + DELTA_RADIUS_TRIM_TOWER_2),

delta_tower3_x = 0, // back middle tower

delta_tower3_y = (delta_radius + DELTA_RADIUS_TRIM_TOWER_3),

Этот кусочек кода как раз и определяет положение 'башен' относительно начала координат XY и в 'чистой' прошивке, как видим, используются параметры 'идеального' треугольника с углом 60гр для 'башен' A и B относительно отрицательной оси Y (вертикали, если смотреть сверху, нормально к осям X и Y). Очевидно, что для расчета координат башни C не используются углы, поэтому в этом случае удобнее пользоваться калькулятором Эшера. Но никто не мешает исправить формулу расчета координат этой 'башни' и использовать DCT.

Для того, чтобы внести поправки альфа-углов для 'башен' А и B, нужно определить новые константы для синуса и косинуса новых углов, раздельно для каждой 'башни', делается несложно, добавляем 4 строки (оставил стандартные 60гр. для наглядности):

#define SIN_60 0.8660254037844386

#define COS_60 0.5

#define SIN_A 0.8645994578287160

#define COS_A 0.5024617174693910

#define SIN_B 0.8634219664278440

#define COS_B 0.5044824158381290

А также внести поправки в формулы расчета координат, заменив SIN_60 и COS_60 на соответствующие синусы и косинусы 'башен', например

delta_tower1_x = -SIN_A * (delta_radius + DELTA_RADIUS_TRIM_TOWER_1)

Эти формулы встречаются 2 раза на этой вкладке, меняем во всех.

Да, это не Repetier, где нужно просто указать новый угол, придется посчитать. Угол в данном случае рассчитывается от отрицательной части оси Y, для 'башни' A по часовой стрелке, для B - против. То есть для A в идеале получаем 270-210=60, для B 330-270=60.

Дальше дело техники и терпения - по калькуляторам получаем углы/корректировки, по ним считаем наши синусы и косинусы, еще для примера:

если получаем альфа-угол А 209.5 гр, значит нужно вычислить синус и косинус угла 270-209.5=60.5 гр,

для альфа-угла B 329гр считаем синус и косинус угла 329-270=59 гр,

подставляем полученные результаты и перепрошиваем (через EEPROM эти параметры не изменяются). Profit.

Информацию взял отсюда, сделал небольшие доработки и поправки на версию прошивки, там же есть калибровочная деталь для грубой настройки углов и тонкой настройки diagonal rod для каждой 'башни'.

Надеюсь это кому-нибудь пригодится, спасибо за внимание и всем удачи!

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

20
Комментарии к статье