Ток драйверов шаговиков

Драйверы с правильным током — это бесшумные моторы, отсутствие пропусков шагов и температура драйвера в норме. На странице — формулы Vref для A4988/DRV8825 и команды TMC_SET_CURRENT/M906 для TMC-драйверов в Marlin и Klipper.

Цель:

Задать корректное значение тока, подаваемого на шаговые двигатели принтера. Этот ток устанавливается на драйверах шаговых двигателей, расположенных на материнской плате.

Когда требуется:

Если двигатели пропускают шаги. Если шаговые двигатели слишком горячие на ощупь. При существенных изменениях системы перемещений (например, более тяжёлый стол, переход с боуден-системы на директ-драйв).

Если ваш 3D-принтер работает нормально и шаговые двигатели не перегреваются, этот шаг можно пропустить.

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

Для современных «умных» драйверов шаговых двигателей: терминальное ПО, например Pronterface или Octoprint.

Для старых драйверов шаговых двигателей: мультиметр, маленькая отвёртка и запасной провод с зажимами «крокодил» (необязательно, но желательно).

Инструкции по настройке терминального ПО можно найти здесь.

Настройка тока драйвера — важный этап калибровки 3D-принтера, хотя обычно значение не обязано быть абсолютно точным. Существует диапазон, в пределах которого принтер будет работать без проблем.

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

Правило большого пальца:

Если шаговый двигатель пропускает шаги или вы видите смещения слоёв — ток нужно увеличить. Это даст двигателю больше крутящего момента, но и он сам (вместе с драйвером) станет греться сильнее.

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

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

  • Если это шаговый двигатель экструдера, возможна какая-то помеха: частично забитое сопло, выскочившая трубка PTFE, слишком низкая температура хотэнда (выше сопротивление плавлению/потоку) и/или слишком близкий первый слой (сопло упёрто в стол, пластику некуда выходить).
  • Для X, Y и Z шаговый двигатель может быть слишком слабым для массы, которую он перемещает. Это бывает при увеличении размеров принтера (например, набор Ender Extender), установке более тяжёлого элемента на стол (например, стекло/зеркало) и/или переходе с боуден-системы на тяжёлый директ-драйв-экструдер.
  • Если есть какие-то механические перекосы, сильно затрудняющие движение. Это может быть слишком сильно затянутый V-ролик или перекошенный ходовой винт оси Z, из-за которого ось Z подклинивает.
  • Ускорение/рывок и скорости печати слишком агрессивны для шаговых двигателей.
  • У каждого драйвера шагового двигателя есть номинальный ток; если он слишком высокий, драйвер будет сильно греться и потенциально пропускать шаги. Помочь может активное охлаждение, но ток всё равно должен оставаться в безопасных пределах для этого драйвера.

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

В зависимости от драйвера шагового двигателя есть два способа задать ток:

1. Физический:

На старых драйверах шаговых двигателей и на TMC-драйверах в legacy-режиме ток задаётся вращением подстроечного резистора (потенциометра) на верхней части драйвера, что меняет VREF и, в свою очередь, ток драйвера.

2. G-code:

На TMC-драйверах ток задаётся напрямую командами G-code. Это можно сделать в прошивке, через терминал или через LCD-экран принтера. Затем значение следует сохранить в EEPROM, чтобы оно сохранилось.

Ниже рассмотрим оба способа по очереди.

Пиковый ток и значение токочувствительного резистора

Точная настройка тока драйвера опирается на знание двух значений: пикового тока, на который рассчитан шаговый двигатель, и значения токочувствительного резистора на драйвере шагового двигателя.

Для современных TMC-драйверов значение токочувствительного резистора уже известно. Для старых драйверов методы его определения показаны в следующем фрагменте. Также показаны методы определения пикового тока шагового двигателя:

1. Физический способ

Я подробно разбирал это ранее, поэтому посмотрите встроенное ниже видео (поставлено на нужное время), чтобы увидеть, как настраивается VREF. Процесс по сути одинаков для любого драйвера.

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

Общие шаги настройки тока через VREF одинаковы для всех драйверов, меняется только формула расчёта VREF:

  1. Запитайте материнскую плату от обычного блока питания 12/24V, а НЕ только от USB 5V.
  2. Переведите мультиметр в режим измерения постоянного напряжения, диапазон до 2V.
  3. Чёрный/минусовой щуп мультиметра подключите к «земле». Это может быть минусовая клемма или корпус USB-разъёма.
  4. Красный/плюсовой щуп подключите к подстроечному резистору на верхней части драйвера, чтобы измерить VREF.
  5. МЕДЛЕННО крутите подстроечник отвёрткой и повторно измеряйте.
  6. Повторите для каждого драйвера шагового двигателя.

Альтернативно, можно соединить проводом с «крокодилом» красный щуп со стержнем отвёртки, чтобы показания VREF были доступны прямо во время вращения отвёртки. Эта процедура показана в этом фрагменте:

Формулы VREF для протестированных мной драйверов:

A4988

Типичное значение токочувствительного резистора — 0.1. Уточните по своим драйверам.

VREF = 8 x max current x sense resistor value

Дальше следуйте процессу, показанному в видео выше.

DRV8825

Значение токочувствительного резистора должно быть 0.1. Если так:

VREF = max current / 2

Дальше процесс такой же, как для A4988, как показано в видео выше.

TMC2100

Как и у TMC-драйверов из раздела про G-code, ток для TMC2100 задаётся не как пиковый, а как RMS. Чтобы получить RMS, разделите пиковый ток на 1.41.

VREF = (RMS current * 2.5) / 1.77

Дальше процесс такой же, как для A4988, как показано в видео выше.

TMC2208 — legacy/standalone-режим (как на «тихих» платах Creality)

Как и у TMC-драйверов из раздела про G-code, ток для TMC2208 (в legacy-режиме) задаётся не как пиковый, а как RMS. Чтобы получить RMS, разделите пиковый ток на 1.41.

VREF = (RMS current * 2.5) / 1.77

Дальше процесс такой же, как для A4988, как показано в видео выше.

Особое замечание по некоторым «тихим» платам Creality

Благодарность ZuckMe:

«На моей „тихой“ плате Creality стоят токочувствительные резисторы R150, а не R100, поэтому формула VREF неверна, подробности тут»: EEVBLOG

LV8729

В основном встречаются два варианта плат с этим драйвером.

На одних снизу установлен резистор с маркировкой R100, на других — R220. Формула, которую нужно использовать, зависит от этого резистора.

Дальнейший процесс почти такой же, как для A4988, как показано в видео выше, но с правильной для вашей платы драйвера формулой.

R100:

VREF = max current / 2

R220:

VREF = max current * 1.1

2. G-code

На TMC-драйверах, подключённых через UART или SPI, ток легко задаётся через G-code. Это не пиковый ток, а RMS (среднеквадратичное значение). Рассматривайте его не как максимум, а скорее как типичный/средний ток, в режиме которого драйвер работает большую часть времени. Чтобы перевести пиковый ток из спецификации шагового двигателя в RMS, разделите его на 1.41.

Ток для каждого драйвера можно задать несколькими способами:

TMC2208, TMC2209, TMC2130 и т. п.

У этих драйверов значение токочувствительного резистора должно быть 0.11. В Marlin это значение по умолчанию, поэтому при компиляции оно уже должно быть выставлено (X_RSENSE для оси X, Y_SENSE для Y и так далее):

Таким образом, RMS-ток можно задать прямо в прошивке при компиляции. Это X_CURRENT для оси X, Y_CURRENT для Y и так далее. После прошивки помните, что в EEPROM может оставаться предыдущее значение. Проверьте свои значения, введя M503 в терминале.

RMS-ток также можно задать через терминал командой M906. По ссылке смотрите справку. Пример установки тока оси X в 680:

M906 X680

Не забудьте затем сохранить значение в EEPROM командой:

M500

Наконец, RMS-ток можно задать через меню Configuration на LCD-экране. Не забудьте после этого сохранить настройки, выбрав Store Settings.

TMC5160

TMC5160 такой же, как другие TMC-драйверы, кроме одного важного отличия: значение токочувствительного резистора при компиляции прошивки нужно поменять с 0.11 на 0.075.

После этого изменения применимы те же процедуры:

RMS-ток можно задать прямо в прошивке при компиляции. Это X_CURRENT для оси X, Y_CURRENT для Y и так далее. После прошивки помните, что в EEPROM может оставаться предыдущее значение. Проверьте свои значения, введя M503 в терминале.

RMS-ток также можно задать через терминал командой M906. По ссылке смотрите справку. Пример установки тока оси X в 680:

M906 X680

Не забудьте затем сохранить значение в EEPROM командой:

M500

Наконец, RMS-ток можно задать через меню Configuration на LCD-экране. Не забудьте после этого сохранить настройки, выбрав Store Settings.

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

Что такое VREF и почему ток задают именно через него?
VREF — это опорное напряжение на выводе подстроечного резистора драйвера, по которому внутренняя схема ограничивает ток обмоток. Напряжение мультиметром измерить намного проще, чем ток в обмотке под нагрузкой, поэтому на A4988, DRV8825, TMC2100 и TMC2208 в legacy-режиме настройку делают именно по VREF.
Как перевести пиковый ток из даташита двигателя в RMS для M906?
Поделите пиковый ток на 1.41 (√2). Для двигателя с пиком 1.5 A получается ≈ 1.06 A RMS, то есть в Marlin или Klipper стоит ставить около 1000–1050 mA. Для холодной работы берут 60–80% от этого значения, для жёстких ускорений — ближе к максимуму.
Двигатель горячий — это нормально или пора снижать ток?
Корпус Nema17 в норме греется до 60–70 °C: рукой держать неприятно, но это штатный режим. Если за пару минут печати температура уходит выше 80 °C, корпус «дымит» канифолью или плавит держатель — ток завышен, снижайте на 10–15% и повторяйте печать-теста.
Что делать, если двигатель и пропускает шаги, и перегревается одновременно?
Это симптом того, что драйверу банально не хватает запаса. Сначала проверьте механику (ремни, направляющие, перекос Z, перегруз стола), затем снизьте ускорения и рывки, добавьте активный обдув драйвера. Если не помогло — переходите на более длинный Nema17 или на TMC2209/TMC5160, которые держат больший ток без перегрева.
Какой командой сохранить выставленный ток, чтобы он не сбросился после перезагрузки?
В Marlin после M906 обязательно выполните M500 — значения уйдут в EEPROM. Альтернативно сохраните через меню LCD пунктом Store Settings. В Klipper и RepRapFirmware ток прописывают прямо в printer.cfg или config.g и он применяется при каждом старте.
Можно ли крутить подстроечник VREF на работающем принтере?
Можно, но только при питании от блока 12/24 V, отвёрткой с изолированной ручкой и очень медленно. Безопаснее всего двигатель при этом не двигать. Никогда не отключайте и не подключайте шаговый двигатель к драйверу при включённом питании — это типовая причина «выгоревших» TMC.

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

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

Зачем калибровать ток шаговых драйверов?

Правильный ток — это тихие моторы без пропуска шагов и без перегрева драйвера и мотора.

Как задать ток на A4988/DRV8825?

Через подстроечник Vref по формуле для вашего драйвера, измеряя напряжение мультиметром.

Как задать ток на TMC2208/2209?

Программно: run_current в Klipper или M906 в Marlin, без подстроечника.

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