XYZ-шаги

XYZ-steps — сколько шагов мотор делает на 1 мм каждой оси. Если размеры готовой модели систематически отличаются от STL — это именно сюда. Печатаем 20-мм кубик, меряем, считаем поправку: M92 для Marlin и rotation_distance для Klipper.

Цель:

Убедиться, что когда прошивка задаёт определённое перемещение по X, Y и Z, фактическое движение машины точно ему соответствует.

Когда необходимо:

Этот шаг не обязателен для многих, но всё равно стоит его сделать, если вы детально проходите по машине. Считайте эту процедуру необходимой, если ваши печатные детали явно больше или меньше нужного размера.

Инструменты:

Лучший инструмент для этого — индикатор часового типа. Это прецизионный измерительный прибор, который отлично подходит. Можно использовать и цифровой штангенциркуль, но он будет менее полезен.

Индикатор также нужно закрепить. Универсальную конструкцию сделать сложно из-за различий в 3D-принтерах и индикаторах, но пример, который я использовал, здесь: Крепление индикатора на Thingiverse

Также на этой странице упоминается калибровочный куб XYZ 20 мм от iDig3Dprinting, но его печать не является обязательной частью процесса калибровки.

У пользователей 3D-принтеров принято измерять калибровочный куб 20 мм, чтобы оценить геометрическую точность машины. Хотя это вполне корректный тест для оценки точности печатных деталей, он не подходит как измерение для корректировки шагов на мм по X, Y и Z.

Шаги на единицу длины по X, Y и Z

Многие знакомы с E-шагами — это значение в прошивке, которое определяет, сколько шагов должен сделать шаговый двигатель экструдера, чтобы протолкнуть 1 единицу материала (обычно миллиметры). В зависимости от того, редукторный экструдер или нет, это число может сильно варьироваться и должно быть установлено точно, чтобы печать выходила корректно. Калибровка E-шагов уже имеет свою отдельную вкладку.

Если печатаемые объекты получаются неправильного размера, регулировка XYZ-шагов — подходящий способ решить проблему. Однако, как вы увидите на этой странице, есть и другие факторы, влияющие на точность печати, которые стоит рассмотреть в первую очередь.

Как узнать текущие значения шагов по X, Y и Z

Здесь есть два удобных варианта:

  1. В LCD-меню Marlin перейдите в Configuration > Advanced Configuration > Steps per mm. В вашей машине может быть указано steps per inch, если она так настроена. Значения будут показаны на LCD:
  2. Подключитесь через терминал и отправьте M503. Это выведет переменные, используемые прошивкой. Где-то в длинном выводе будет строка «Steps per unit», а в следующей строке — ваши значения:

Как обычно рассчитываются XYZ-шаги?

Шаги на единицу длины по осям X, Y и Z — это функция механических и электронных компонентов принтера. Сюда входят тип шагового двигателя, тип ремня/ходового винта, величина микрошага и так далее. Отличный ресурс — Prusa RepRap Calculator. В разделе «Stepper Motor» можно ввести характеристики вашей машины, и будут рассчитаны правильные шаги на единицу длины.

Чего делать не надо — измерять печатные детали

Часто люди печатают калибровочный куб 20 мм и измеряют внешние грани, чтобы оценить точность машины. Хотя это корректное измерение для определения точности результата печати, оно НЕ является правильным для калибровки XYZ-шагов. Это связано с тем, что печатная деталь является результатом многих других переменных, помимо того, насколько далеко перемещаются оси X, Y и Z во время печати.

Простую демонстрацию этого можно сделать, напечатав три калибровочных куба 20 мм без изменений в машине, но с изменённым потоком экструдера для каждого теста. На изображении ниже у кубов поток 80%, 96% и 120%. Хотя издалека они выглядят одинаково, при измерении штангенциркулем в их внешних размерах есть явная разница.

Если куб может так сильно отличаться без изменения шагов на единицу длины, это показывает, что печатные детали не являются надёжным индикатором правильности настройки шагов. Комментаторы видео также отмечали, что напечатанный пластик усаживается при охлаждении, и это будет различаться для разных материалов и даже для разных цветов/возраста/состояния филамента. Ещё одна переменная, портящая результаты. Да, точность готовой детали нам важна, но нужен лучший способ измерять движение по X, Y и Z.

Что делать — измерять чистое движение осей

Главная переменная, которую нужно исключить, — это экструдированный пластик. Поэтому мы хотим измерять движение каждой оси, когда печать не идёт, сравнивая заданное и фактическое перемещение. Тут и пригодится штангенциркуль или, лучше, индикатор часового типа. Наша цель — закрепить индикатор так, чтобы при движении оси он измерял ровно то расстояние, на которое она переместилась.

Крепление индикатора

Есть потенциально два способа закрепить индикатор:

  1. На печатающей головке, чтобы он мог измерять относительное движение оси Z вверх-вниз.
  2. Вне машины, так чтобы наконечник индикатора упирался в подвижные части принтера для измерения относительного движения осей X и Y.

В любом случае при креплении нужно соблюдать несколько правил:

  • Индикатор должен быть закреплён жёстко. Если он может шевелиться или крепление может прогибаться, показания будут неточными.
  • Линейное движение индикатора должно быть параллельно движению измеряемой оси или перпендикулярно объекту, в который он упирается. Если представить, что индикатор закреплён под углом 45 градусов к измеряемой оси, видно, что показание будет лишь половиной фактического движения.
  • При креплении на машине для измерения перемещения по Z убедитесь, что машина по-прежнему может безопасно выполнить хоуминг без выхода индикатора за пределы хода. Если это невозможно, сначала выполните хоуминг, а затем установите индикатор.

Если поискать на Thingiverse или других файлообменниках, можно найти крепление индикатора для вашей конкретной машины. Это может быть сложно, потому что крепление также должно подходить под ваш индикатор. Для этого руководства я разработал и распечатал собственное крепление индикатора под основание-стержень 12 мм и крепление на печатающую головку под систему printermods.com xchange: Крепление индикатора на Thingiverse

Ручные перемещения и измерения

Ручные перемещения можно делать с LCD-контроллера принтера, через подключение по USB с помощью Octoprint или Pronterface и кнопок их интерфейса, или, если у вас сенсорный экран, кнопками для ручных перемещений по 10 мм.

Возможно, сначала придётся выполнить хоуминг машины, так как некоторые конфигурации прошивки не разрешают ручные перемещения до этого. Как описано в предыдущем разделе, безопаснее выполнять хоуминг без установленного индикатора.

Перед измерением нужно знать диапазон хода индикатора и крепить его соответственно. Если индикатор может пройти только 25 мм, нет смысла запрашивать перемещение 30 мм. Так можно повредить индикатор, когда он упрётся в конец хода.

Расположите индикатор так, чтобы он находился в середине своего диапазона хода, и обнулите показания.

Кнопками в выбранном вами ПО переместите одну ось на заданное расстояние. Обычно подходит 10 мм, и это укладывается в диапазон хода большинства индикаторов. (100 мм было бы ещё лучше, но это за пределами диапазона индикатора.) Запишите показание. Реверсируйте движение противоположной кнопкой и посмотрите, вернётся ли машина на 0,00 на индикаторе.

Можно также выполнить два перемещения по 10 мм и посмотреть, остаётся ли ошибка стабильной. Например, если первое перемещение составило 9,95 мм, то второе должно завершиться на 19,90 мм, сохраняя расхождение 0,05 мм на каждые 10 мм.

Насколько неточно — это уже слишком неточно?

В ходе тестирования вы можете обнаружить, что перемещение каждой оси отличается, например, на 0,05 мм. Учитывая, как сложно идеально выставить индикатор перпендикулярно направлению движения, это, скорее всего, вполне укладывается в допустимую погрешность. Добавьте крохотные движения рук, поддерживающих индикатор, — и вот ещё один источник.

Важно помнить, насколько мала эта величина. Расхождение 0,05 мм на перемещении 10 мм — это ошибка всего 0,5%. Во многих случаях это не имеет значения для печатного объекта. Однако каждый сам решает, какие допуски он ожидает от своей машины и нужно ли что-то делать для улучшения.

Что проверить, если движение неточное

Прежде чем менять шаги на единицу длины, стоит помнить, что эти значения уже должны быть правильными, поскольку они основаны на характеристиках вашей машины. Поэтому стоит дополнительно проверить следующие аспекты принтера:

  • Ремни достаточно натянуты
  • Винты внутри шкивов ремня затянуты
  • V-ролики натянуты корректно
  • Ходовые винты Z смазаны
  • Ток драйвера шагового двигателя установлен правильно
  • Переключение функций вроде SQUARE_WAVE_STEPPING в прошивке Marlin

Если измеренное движение неверное и при этом непостоянное — например, всё дальше уходит от 0 при каждом возврате в стартовую точку — это может указывать на люфт или заедание этой оси. Для движения на ходовом винте можно установить антилюфтную гайку как возможное решение.

Если всё вышеперечисленное проверено и вы уверены, что шаги на единицу длины нужно скорректировать, переходите к следующему разделу.

Корректировка XYZ-шагов в прошивке

Если вам всё-таки нужно скорректировать шаги на единицу длины, используйте следующий калькулятор для определения правильного значения на основе показаний индикатора:

Калькулятор X / Y / Z-шагов

X Y Z

Ваши новые -шаги должны быть

Введите в терминале следующее:

M92 

Затем M500 для сохранения в EEPROM.

M500

Возможно, вы захотите повторить этот тест с новым значением XYZ-шагов для проверки.

Вы также можете задать новые значения через LCD и затем сохранить в EEPROM, но будете ограничены только одним знаком после запятой.

Исправление сохраняющейся неточности размеров после коррекции XYZ-шагов

Как мы знаем из более раннего теста с калибровочным кубом 20 мм, на итоговые размеры печати влияет не только величина шагов на единицу длины по каждой оси.

Изменение потока в слайсере повлияет на общие размеры, хотя это также сказывается на всех остальных аспектах готовой печати. Один очевидный момент — наличие зазоров между отдельными экструзиями (поток слишком низкий) или слишком сильное перекрытие экструзий с выпуклостями (поток слишком высокий). Возможно, поток стоит использовать только для очень небольших корректировок.

В некоторых слайсерах есть компенсация геометрической точности. Ниже показана эта настройка в PrusaSlicer (находится в Print Settings > Advanced > Slicing):

Аналогичная функция есть в Cura (находится в Shell > Horizontal expansion):

Чтобы полностью понять плюсы и минусы этих функций, нужно поэкспериментировать. Например, увеличение измерений по X/Y может исправить внешние размеры, но негативно сказаться на точности печатных отверстий.

Иногда машину можно модернизировать, чтобы повысить её точность. Например, у меня есть теория, что использование зубчатого шкива ремня вместо гладкого подшипника как обводного ролика должно давать более стабильное прилегание ремня к ролику, поскольку зубья ремня неравномерно деформируются на гладкой поверхности подшипника:

Последняя мера, наименее желательная, — проектировать детали больше или меньше для компенсации. Это «костыль», который быстро разваливается, как только мы начинаем печатать модели, разработанные другими.

Частые вопросы

Когда стоит калибровать XYZ-шаги?
Только если печатные детали стабильно получаются больше или меньше заданного размера, и при этом вы уже проверили натяжение ремней, затяжку винтов шкивов, исправность V-роликов и ток драйверов. В большинстве машин значения шагов изначально верны, так как рассчитаны по характеристикам кинематики.
Почему нельзя калибровать XYZ-шаги по калибровочному кубу 20 мм?
Размер напечатанного куба зависит от множества переменных: потока, усадки пластика, температуры, материала и даже состояния филамента. Три одинаковых куба, напечатанных с потоком 80%, 96% и 120%, будут иметь разные внешние размеры при идентичных XYZ-шагах. Поэтому куб годится для оценки общей точности печати, но не для настройки шагов на мм.
Каким инструментом измерять движение осей?
Лучше всего — индикатор часового типа с жёстким креплением, выровненным параллельно измеряемой оси. Цифровой штангенциркуль тоже подходит, но даёт меньше точности и удобства. Главное — исключить любой люфт самого крепления.
Какая погрешность движения считается допустимой?
Расхождение около 0,05 мм на 10 мм перемещения — это всего 0,5% и обычно укладывается в погрешность установки индикатора. Для большинства задач это незаметно на готовых деталях. Принимать решение о корректировке шагов стоит только после того, как вы уверены, что ошибка стабильно повторяется и не вызвана механикой.
Как применить и сохранить новые значения XYZ-шагов?
Отправьте в терминал команду вида M92 X<значение> (или Y/Z) с рассчитанным числом, затем M500 — это запишет настройку в EEPROM. Альтернативно значения можно ввести через LCD-меню Marlin, но там вы будете ограничены одним знаком после запятой. После сохранения повторите тест для проверки.
Что проверить до изменения XYZ-шагов?
Натяжение ремней, затяжку винтов шкивов на валах двигателей, натяжение V-роликов, смазку ходовых винтов оси Z, корректность тока драйвера шагового двигателя, а также опции прошивки вроде SQUARE_WAVE_STEPPING в Marlin. Если ошибка непостоянная и растёт при возвратах в исходную точку — ищите люфт или заедание, а не меняйте шаги.

← Ко всем шагам калибровки

Частые вопросы

Когда нужно калибровать XYZ-шаги?

Если размеры готовой модели систематически отличаются от STL (например, 20-мм куб печатается 19.8 мм).

Как откалибровать XYZ steps/mm?

Напечатайте калибровочный куб 20×20×20, замерьте каждую ось штангенциркулем и пересчитайте steps/mm по каждой оси.

Чем XYZ-steps отличаются от flow?

XYZ-steps правят геометрию осей (steps/mm моторов), flow правит количество пластика. Это разные проблемы.

Раздел основан на Teaching Tech 3D Printer Calibration, автор Michael Laws (Teaching Tech), под CC-BY-SA-4.0. Все расчёты выполняются у вас в браузере.