Разработка электроники,
Систем автоматики,
Программного обеспечения
ООО "Антех ПСБ",
Санкт-Петербург
+79811865082
anteh@bk.ru
30.09.2016 Сайт https://anteh.ru
Проверена точность справедливой формулы: [количество импульсов на миллиметр для XYZ] = ([количество шагов на оборот шагового двигателя]*[шаг дробления])/([шаг ремня]*[количество зубьев шкива XYZ]). Пример (200*16)/(2*20)=80. Изюминка формулы именно в ремне.
Для экструдера формула такая:
[количество импульсов на миллиметр для E] = (([количество шагов на оборот шагового двигателя]*[шаг дробления])/([наименьший диаметр в центре штока экструдера]*Pi))*1.1 пример: ((200*16)/(7.2*3.14))*1.1~=155
Возможно, коэффициент 1.1 учитывает факт того, что филамент прижимаясь к зубцам штока экструдера, немного вдавливается в него и тем самым диаметр штока немного уменьшается. Получаемая цифра довольно условна, при печати всё равно нужно подбирать скорость подачи филаментаиндивидуально. Дальше описан некоторый эксперимент связанный с разрешением движения кареток по осям. И догадки, связанные с настройкой микро шага.
При движении экструдера/кареток по вертикали, посредством команд pronterface на минимальном шаге, шаг чередуется как 70 и 80 мкм. Используется микрометр разрешение 10мкм самый стандартный, дешёвый. Шаговые двигатели, на слух, отрабатывают следующие значения по высоте, напряжение питания шаговых двигателей увеличено с +12VDC до +18VDC:
Команда | Показания микрометра, десятые определялись на глаз | Дельта команды | Дельта измеренная |
G1Z246 | 0 | ||
G1Z246.08 | 940 | ||
G1Z246.15 | 860 | 70 | 80 |
G1Z246.23 | 782 | 80 | 78 |
G1Z246.30 | 712 | 70 | 70 |
G1Z246.38 | 640 | 80 | 72 |
G1Z246.45 | 568 | 70 | 72 |
G1Z246.53 | 493 | 80 | 75 |
G1Z246.60 | 415 | 70 | 78 |
G1Z246.68 | 342 | 80 | 73 |
Видим погрешности микрометра + погрешности вращения вала двигателя. После увеличения напряжения питания шаговых двигателей с +12VDC до +18VDC программное чередование 70 и 80 микрон осталось(это из за округления и dropsegments параметра), аппаратное практически потерялось в погрешности микрометра и погрешностях шагового двигателя. Хуже не стало.
Сейчас делается некоторое предположение и в последствии опровергается. Пробуем изменить параметры для XYZ количества импульсов на миллиметр хода каретки. Сейчас этот параметр =80 при выдуманной длине окружности штока 2*20=40мм. Реальная длина окружности 12*Pi = 37.7мм и количество импульсов на миллиметр 200*16/(12*Pi) = 84.88 импульса на миллиметр. Проверяем что получилось:
Команда | Показания микрометра, десятые определялись на глаз | Дельта команды | Дельта измеренная |
G1Z277 | 0; 8 | ||
G1Z277.07 | -930; 930 | ||
G1Z277.14 | -868; 860 | 70 | 62 |
G1Z277.21 | -786; 780 | 70 | 82 |
G1Z277.28 | -708; 700 | 70 | 78 |
G1Z277.35 | -640; 635 | 70 | 68 |
G1Z277.42 | -568; 563 | 70 | 72 |
G1Z277.50 | -498; 493 | 80 | 70 |
G1Z277.57 | -423; 420 | 70 | 75 |
G1Z277.64 | -347; 341 | 70 | 76 |
G1Z277.71 | -280; 279 | 70 | 67 |
G1Z277.78 | -200 | 70 | 80 |
G1Z277.85 | -119 | 70 | 81 |
G1Z277.92 | -50 | 70 | 69 |
G1Z277.99 | 30 | 70 | 80 |
G1Z278.06 | 86 | 70 | 56 |
G1Z278.13 | 166 | 70 | 80 |
G1Z278.20 | 246 | 70 | 80 |
Через ";" повторный замер для проверки повторяемости измерений микрометра. Обращаем внимание на цифру "80" в третьей колонке.
Вывод такой: количество импульсов на миллиметр =80 лучше, чем честные 84.88. Выборка незначительная, нужно хотя бы на одном обороте промерить. Все чередования и выбросы результат округления при расчётах траектории. Разброс реальных положений меньше, когда количество импульсов на миллиметр =80.
По факту, когда количество импульсов на миллиметр было 80, то команда G1Z246 вывела сопло в некоторую точку по высоте. Когда количество импульсов на миллиметр стало 84.88, то команда G1Z246 вывела сопло, на глаз, на сантиметр ниже.
Считаю правильным и точным способом подбора количества импульсов на оборот, это взять металлическую линейку(штангенрейсмас не у каждого найдётся), в моём случае, длиною в метр. Эффектор загнать в home. Не важно, если принтер на несколько сантиметров встанет ниже home. Взять металлическую линейку, выбрать удобную точку на эффекторе или эктсрудере, чтобы удобно было расстояние измерять от стола до этой точки. Для удобства, на минимальном шаге, через ручное управление, подвигать эффектор по оси Z, чтобы выбранная точка совпала с риской на линейке. Записать высоту, которую показывает принтер(800.45мм) и высоту показываемую линейкой(883мм). Прогнать в низ по Z эффектор, в стол сопло упирать не нужно. Снова записываем высоту показываемую принтером(0.5мм) и высоту на линейке(83мм). Зная, что для 3х осей стоит значение 80 импульсов на миллиметр вычисляем количество импульсов, которое произвёл контроллер при движении от верхнего до нижнего значения высот показанных на экране принтера: (800.45-0.5)*80=63996. Фактически по линейке было пройдено 883-83=800. Т.е. истинное количество импульсов на миллиметр: 63996/800 = 79.995 импульсов на миллиметр. Предположение с 84.88 было ошибочным.
Минимальную дискретность шага по высоте принимаем как есть в районе 75микрон, но чередование 70 и 80 совсем не смотрится. Количество импульсов на миллиметр перемещения каретки =80, тогда дискретность шага должна составить 1мм/80 = 12.5 микрометра, а у нас минимальная дискретность в районе 75, тогда получается что на одну дискрету перемещения(0.08/0.07мм) приходится 6 step импульсов. Т.е. разрешение по высоте задаётся где-то в прошивке marlin и по умолчанию это 6 step или 75 микрон. При помощи осциллографа со включённым бесконечным послесвечением и pronterface проверим, что на одну дискрету перемещения приходится 6 step импульсов:
![]() |
Действительно, видим, что для перемещения на 70 или 80, а по факту 75 микрон, контроллер на драйвер выдаёт 6 step импульсов. Каждый импульс 12.5 микрометра. 6 step -75микрон цифра не удобная, удобная 2 -25микрон, 4 -50 микрон, 8 -100микрон или 0.1мм. 50 микрон будет в самый раз. Разумеется, ни о каком серьёзном повышении точности речи не идёт, убираются округления, которые возможно подымут точность, но эта точность будет перекрыта существующей погрешностью в 0.11мм при смене направления движения каретки. За количество step импульсов на минимальное перемещение отвечает параметр dropsegments в Configuration_adv.h прошивки marlin:
8 step импульсов соответствуют dropsegments = 7 ;100микрон или 0.10мм
6 step импульсов соответствуют dropsegments = 5 ;75микрон или 0.075мм. Будет округление
4 step импульсов соответствуют dropsegments = 3 ;50микрон или 0.05мм
2 step импульсов соответствуют dropsegments = 1 ;25микрон или 0.025мм
После установки dropsegments = 3 количество step на минимальное перемещение стало 4:
![]() |
Параметр dropsegments, при обработке G файла модели предписывает пропускать все сегменты/траектории с длиной меньше: (dropsegments+1)*(1mm/количество импульсов step на миллиметр хода). Малый dropsegments может увеличить нагрузку на контроллер. С проблемой и причинами чередования 70 и 80 разобрались, при dropsegments = 3 минимальная дискрета перемещения XYZ кареток составляет 50 микрон.
Рассуждения такие: параметр dropsegments, по сути, задаёт количество импульсов на дискретность перемещения, один импульс =12.5микрон для 80 импульсов на миллиметр. Например dropsegments =3 и количество step на минимальную дискрету перемещения =4. Можно сказать, что dropsegments уменьшает физический шаг дробления, в текущем случае в 4 ре раза. Т.е. 80 step импульсов на миллиметр превращается в 20 дискрет перемещения на миллиметр. Можно считать, что dropsegments уменьшает шаг дробления, т.е. при dropsegments =3 и дроблении 1/16 реальное физическое дробление угла поворота двигателя =1/4. По аналогии при dropsegments =1 и дроблении 1/16 реальное физическое дробление угла поворота двигателя 1/8 это считается пределом физического дробления угла поворота и возникает вопрос, а сможет ли двигатель, при заданном напряжении питания и нарузке обеспечить такое дробление угла, особенно при +12VDC питании. Думаю, что при питании +24VDC сможет, другой вопрос а нужно ли, при всех других существующих погрешностях. Соответственно при dropsegments =7, дробление составит 1/2 и количество step импульсов на дискрету перемещения =8.
Теперь посмотрим на дробление 1/32. Если у Вас питание шагового двигателя +12VDC, то думаю минимальное дробление должно быть минимум 1/4. Т.е. dropsegments должен быть = 7. Т.е. полагаю, что дробление драйвера шагового двигателя и dropsegments это взаимосвязанные переменные. Как правильно выбрать dropsegments? Отбросим рациональность повышения разрешения, допустим что чем больше тем лучше. Тогда нужно ориентироваться на физическую возможность шагового двигателя обеспечить дробление 1/4, 1/8, большие значения для обыкновенных 1.8градусных не используются. Нужно смотреть на наличие пропусков шагов. Здесь есть видео про то, как могут выглядеть пропуски шагов. Желательно +24VDC питание шагового двигателя.
Возможно, когда использовался DRV8825 с дроблением 1/32 и dropsegments был по умолчанию =5, то именно поэтому вместо снижения шума получилось его существенное увеличение.
Остался вопрос, когда говорим о скорости мм/сек дельта принтера, то везде подразумевается скорость движения кареток вдоль осей, но какая при этом реальная скорость перемещения сопла? Какова реальная дискретность X Y перемещений? При движении сопла дельта принтера к краю стола его скорость перемещения замедляется. Возникает ощущение, что у дельта принтера есть область, где печать будет более точной, а также резонансные явления более незначительные. Есть некая путаница, или маркетинговый ход смешивают "дельта робот" без направляющих и кареток, действительно быстрый, со схемой дельта принтера на направляющих. Скорость печати дельта принтера циклически меняется, в зависимости от удалённости от центра стола.