Ток драйверов шаговиков
Драйверы с правильным током — это бесшумные моторы, отсутствие пропусков шагов и температура драйвера в норме. На странице — формулы 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:
- Запитайте материнскую плату от обычного блока питания 12/24V, а НЕ только от USB 5V.
- Переведите мультиметр в режим измерения постоянного напряжения, диапазон до 2V.
- Чёрный/минусовой щуп мультиметра подключите к «земле». Это может быть минусовая клемма или корпус USB-разъёма.
- Красный/плюсовой щуп подключите к подстроечному резистору на верхней части драйвера, чтобы измерить VREF.
- МЕДЛЕННО крутите подстроечник отвёрткой и повторно измеряйте.
- Повторите для каждого драйвера шагового двигателя.
Альтернативно, можно соединить проводом с «крокодилом» красный щуп со стержнем отвёртки, чтобы показания 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 и почему ток задают именно через него?
Как перевести пиковый ток из даташита двигателя в RMS для M906?
Двигатель горячий — это нормально или пора снижать ток?
Что делать, если двигатель и пропускает шаги, и перегревается одновременно?
Какой командой сохранить выставленный ток, чтобы он не сбросился после перезагрузки?
Можно ли крутить подстроечник VREF на работающем принтере?
Частые вопросы
Зачем калибровать ток шаговых драйверов?
Правильный ток — это тихие моторы без пропуска шагов и без перегрева драйвера и мотора.
Как задать ток на A4988/DRV8825?
Через подстроечник Vref по формуле для вашего драйвера, измеряя напряжение мультиметром.
Как задать ток на TMC2208/2209?
Программно: run_current в Klipper или M906 в Marlin, без подстроечника.
Раздел основан на Teaching Tech 3D Printer Calibration, автор Michael Laws (Teaching Tech), под CC-BY-SA-4.0. Все расчёты выполняются у вас в браузере.