Сегодня 6 мая, понедельник ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7272
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
3D-принтеры сегодня!
3D-принтеры сегодня!
Голосов: 1
Адрес блога: http://3dtoday.ru
Добавлен: 2014-04-22 17:41:45
 

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

2017-05-04 23:55:35 (читать в оригинале)

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

Итак, для начала немного теории и о калькуляторах для калибровки дельт - о чем не написано (либо я просто не нашел), но наверное многих интересует. В поисках информации, как же быстро и правильно настроить свой принтер, задался вопросом - а почему же в разных калькуляторах предлагаются разные корректировки настроек прошивки? Возьмем два, думаю наиболее популярных калькулятора - Эшера и deltaCalibrationTool, сократим последний до DCT (ссылки приводить не буду, они думаю всем известны, кому нужно, можете найти в посте по ссылке в начале). Рассматривать Diagonal_Rod не вижу особого смысла, думаю все калькуляторы справляются с этой задачей хорошо, да и вручную калибровать его совсем несложно, измеряя распечатанные калибровочные детали. Основное внимание хотелось бы уделить так сказать 2D, геометрической калибровке, то есть альфа-ротации и дельта-радиусу. Собственно эта калибровка делается для того, чтобы "система" четко понимала, где относительно каждой "башни" находится ноль координат XY, от этого зависит корректность расчета перемещений по каждой направляющей для перемещения экструдера на заданное расстояние от начала координат.
Поковырявшись в геометрических построениях, пришел к выводу, что калькуляторы используют две разные методики:
  1. Калибровка относительно "идеального" нуля координат, без его смещения (DCT). В этом варианте вводятся поправки на все углы и дельта-радиусы каждой "башни", чтобы в итоге эти радиусы сходились в "идеальном" нуле координат. При этом общий дельта-радиус можно не менять, достаточно сделать поправки для каждой "башни".
  2. Калибровка относительно "башни" С со смещением нуля координат (Эшер). В этом варианте считается, что "башня" С всегда остается на оси Z, поэтому вся геометрия "поворачивается" относительно "идеального" нуля координат, чтобы альфа-угол C был равен 90гр. (либо от "башни" С строится новая ось Y, по которой строится новый ноль по XY, думаю это вопрос геометрического восприятия, а расчеты одинаковы). При этом Эшер не дает корректировок дельта-радиусов по "башням", вероятно из-за того, что смещая ноль координат по XY, считает, что все "башни" расположены на одной окружности с новым центром, равным началу координат XY, следовательно дельта-радиусы одинаковы для всех "башен", обязательно задается только новый общий дельта-радиус.
Немного рисунка, для наглядности сделал утрированно большие отклонения "реального" расположения "башен" (сплошные линия и окружности) от "идеального" треугольника (пунктир):
890724b994f7df492a63a51351e22383.png

Отсюда можно сделать вывод, что делать калибровку сразу по нескольким калькуляторам не имеет большого смысла, они будут давать разные результаты, в зависимости от метода построения и расчета координат "башен" относительно нуля 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 для каждой "башни".
Надеюсь это кому-нибудь пригодится, спасибо за внимание и всем удачи!
Подробнее...

Тэги: техничка

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по сумме баллов (758) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.