Сравнение динамических характеристик драйверов A4988, TMC2208, TMC2226.
Громкие по 50 или тихие, но по 250. Это всё что мы должны знать о драйверах шаговых двигателей?
Идея этих опытов родилась в момент, когда я впервые хотел послушать, как работают тихие TMC2208 и они у меня просто зависли. Было это давно, но время на подробные опыты появилось только сейчас.
В том эксперименте я только смог выяснить, что виснут они на высоких скоростях.
Сразу хотел бы ответить, на возможный вопрос, а зачем мне высокие скорости, если печатаю на низких?
Я знаю как минимум два применения высоких скоростей.
1. Быстрые холостые перемещения, чтобы во время этих перемещений меньше вытекало пластика и было меньше тянущихся нитей ("соплей").
2. Различные улучшалки боудена типа Linear Advanced или Pressure Advance. Они требуют ещё большей динамики от драйвера и двигателя, особенно если экструдер редукторный.
В общем высокая скорость нужна и зависание на ней относительно новых (на тот момент) высокотехнологичных супер драйверов меня несколько озадачило. Предыдущие копеечные A4988 за всё время эксплуатации не зависали ни разу, я вообще не думал, что такое бывает.
Но порывшись в Интернете понял, что бывает. И не только у меня.
В качестве решения предлагался перевод их из режима stealthChop в spreadCycle.
Это можно сделать, управляя ими по UART, либо раз и на всегда перепрошивкой самого драйвера.
На тот момент времени для экспериментов у меня не было, и я просто оставил на принтере старые, добрые A4988.
И вот сейчас появилось немного времени, и я решил поэкспериментировать, посмотрев, что происходит с драйверами на высоких скоростях работы и какие скорости для них максимальные. Тем более, что у меня появился ещё и третий участник - TMC2226.
В процессе этих опытов выяснилось довольно много интересного, но об этом ниже.
А пока опишу, как я проводил эксперименты.
Методика тестирования.
Кому это не интересно могут сразу перейти к результатам или даже вводам. Но на мой взгляд, любые результаты имеют смысл, только когда известно, как они получены.
Итак, для управления шаговиками я использовал две платы управления: MKS GEN_L(8 бит), прошивка Marlin 1.x и BigTreeTech SKR V1.3(32 бит), прошивка Marlin 2.x.
На MKS GEN_L использовался только standalone (автономный, классически, обычный) режим управления драйверами, на BigTreeTech SKR два режима - standalone и UART.
TMC2226 в основном считается перекорпусированным TMC2209 с немного улучшенными мощными полевиками. Поэтому в прошивке для него используются те же параметры, что и для TMC2209:
* Use TMC2208/TMC2208_STANDALONE for TMC2225 drivers and TMC2209/TMC2209_STANDALONE for TMC2226 drivers.
Характеристики драйверов сравнивались при разном напряжении: 12 и 24 В, и разных токах.
Хочу обратить внимание, что в даташитах микросхем драйверов токи при расчёте используются разные. Для A4988 это максимальный (пиковый) ток, для TMC22xx это среднеквадратический (RMS).
Соответственно 1А для A4988 и 1А для TMC22xx это не одно и тоже. Установленный ток для TMC22xx нужно умножать 1.41, чтобы получить эквивалент для A4988.
Собственно, об этом же нам говорит и прошивка:
#define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current.
Кстати, иногда продавцы нам упрощают(?) задачу, указывая в описании к драйверам TMC22xx формулу установки тока резистором в standalone режиме U = I. При такой формуле мы как раз получаем значение максимального тока, как и у A4988.
В обзоре я всё же буду использовать даташитные / прошивочные значения, чтобы кто-нибудь случайно, кто читает обзоры по диагонали, не подставил в прошивку пиковое значение.
Не очень удобно, но как говорится, не я это начал :)
Двигатель для тестов использовался один, с обозначением: 42BYGH48-2-23B.
Это "обычный" китайский 48 мм, 1.8 градусный двигатель, который часто используется в китайских же принтерах.
Общий вид "испытательного стенда":
Поскольку передаточные числа на разных принтерах разные, скорости вращения я измерял в об/мин двигателя, а вы уже сами можете перевести их в линейные мм/с для своего принтера.
Следующий момент связан с тем, что размер стола, по которому мы будем виртуально перемещаться, небольшой, а Марлин не позволяет задать его, как и возможность выхода за пределы стола G кодом. Перепрошивать на начальном этапе мне ничего не хотелось, как и сбрасывать положение после каждого передвижения. Поэтому было придумано следующее.
Задаём в прошивке количество шагов на мм такое, чтобы перемещение на 1 мм означало 1 оборот двигателя. Для двигателя 1.8 градуса один оборот (360 градусов) это 200 шагов (360 / 1.8 = 200).
При дроблении шага драйвером на 16 получаем 16 * 200 = 3200 шагов.
Задаём это G кодом: M92 X3200
Ставим относительные координаты: G91
Ну и подаём команду сделать один оборот, со скоростью 60 об/мин: G1 X1 F60
Теперь даже на маленьком столе всего в 200 мм мы можем подать 200 таких команд. Но если упрёмся, то можно сбросить значение текущей позиции в 0 командой G92 X0 и продолжить эксперименты.
Кроме того, при таком решении я сразу в команде задаю значение в об/мин и мне не нужно ничего пересчитывать. Это удобно.
Ну и при таких параметрах и текущих установках джерков, перемещения у нас начинаются без использования параметра ускорения, т.е. происходят с максимально возможным для этой системы ускорением.
Это важный момент. При движении с меньшими ускорениями, вполне возможно, результаты получатся другие.
Команд передвижения, на близких к максимальным скоростям значениях, подавалось несколько десятков, чтобы точно убедиться, что нет пропусков и ничего не зависает.
Ну и последнее замечание. Для простоты, я буду в отношении драйверов использовать термины тихие, громкие, быстрые, медленные и т.д., подразумевая при этом всю суммарную систему: плату управления + прошивку + драйвер + двигатель.
Теперь сами эксперименты и их результаты.
Тут будет много сырых тестовых данных без ярких цветных картинок, кому будет скучно, переходите сразу к выводам.
Но я должен привести эту детализацию, чтобы было понятно, откуда взялись выводы.
Ещё должен предупредить, что в тестах (ну и соответственно в их описании) присутствует некоторая бессистемность, вызванная тем, что изначально я обзор особенно то и не планировал писать, да и тесты в процессе опытов менялись, при получении неожиданных или даже неожидаемых результатов.
Тесты.
Драйвер A4988.
Плата управления MKS Gen_L. Прошивка Marlin 1.x.x.
Шум.
При изменении тока 0.8 - 1.25 А заметного изменения звука вращения нет.
При изменении напряжения 12 -> 24 В увеличиваются звенящие нотки.
Скорости.Ток 0.8 А. Напряжение 12 В.
Максимальная скорость 380 об/мин, но останавливается даже небольшим усилием.
На 360 усилие нужно существенно больше. На 300 об/мин остановить вал пальцами не реально.
Изменение напряжения 12-24 В существенно усилия для остановки не меняет, и на 400 об/мин двигатель не стартует при любом напряжении.
Увеличиваем ток до 1.25 А. Напряжение 12 В.
На 400 об/мин, остановить вал пальцами не реально. 450 об/мин это максимум, останавливается легко.
При увеличении напряжения до 24 В максимум отодвигается до 485 об/мин (+8%).
Вибрации.
При токе 0.8 А и скорости 55 об/мин на валу и корпусе двигателя очень сильные вибрации. Уменьшение скорости и даже увеличение, т.е. уход от этой скорости, существенно снижает вибрации.
При увеличении тока до 1.25 А на 55 об/мин вибрация существенно уменьшается, но зато гораздо большая вибрация появляется на 140 об/мин.
Драйвер TMC2208.
Плата управления MKS Gen_L. Прошивка Marlin 1.x.x.
Вибрации.
При токе 0.8 А и скорости 80 об/мин, на валу и корпусе двигателя вибрации сильнее, чем на других скоростях, но гораздо слабее, чем у A4988 на максимуме, но гораздо сильнее чем у A4988 на других скоростях.
Изменение тока и напряжения существенно эту ситуацию не меняет. И до этой скорости работает тише, чем ниже скорость.
Скорости и зависания.
При токе 0.8 А, 12 В, максимальная скорость 300 об/мин, остановить пальцем вал не реально, но жуткий звук. На бОльших скоростях работает уже не стабильно - может начать вращаться, а может не начать, но когда начинает, вал тоже тяжело удерживать.
При увеличении напряжения до 24 вольт, на 320 об/мин делает оборот (если была команда на один оборот, удержать пальцами не реально) и зависает (по окончании команды) - мотор отпускает, на команды не реагирует, повторяемость 100%.
Снимает зависание переподключение COM порта.
Зависает именно драйвер. Плата управление продолжает работать и выполнять команды. В том числе меняет виртуальные координаты при командах перемещения.
На 300 об/мин иногда крутится без зависания, иногда зависает после выполнения команды.
При увеличении тока до 1.25 А и 24 В зависает и на 300 стабильно.
Итого, на 0.8 А и 12 В стабильно работает только на 240 об/мин (отправил несколько десятков команд). На 260 было одно редкое зависание, второй раз повторить не смог. На 300 уже смог повторить.
Итого, на 0.8 А и 24 В стабильно работает только на 260 об/мин (отправил несколько десятков команд). На 280 об/мин на несколько десятков команд было одно зависание.
Изменение напряжения в процессе работы приводит к зависанию драйвера и на низких скоростях (60 об/мин).
В этом случаем переподключение COM порта тоже снимает зависание, но он опять виснет на низкой скорости. Нужно полностью снимать все питания.
При зависании на большой скорости, достаточно просто переподключить порт.
Я никак не могу интерпретировать такое поведение системы.Особенно с учётом того, что A4988 в этих же условиях вели себя абсолютно стабильно и без глюков.
И я проверил 4 экземпляра TMC2208 (правда, видимо, из одной партии), вели себя они одинаково.
Драйвер TMC2226.
Плата управления MKS Gen_L. Прошивка Marlin 1.x.x.
Вибрации.
При токе 1.74 А пик вибрации на скорости 100 об/мин. И до этой скорости работает тем тише, чем ниже скорость и тише, чем TMC2208.
При токе 0.8 А работа больше похожа на TMC2208 и максимум вибраций тоже на 80 об/мин. И они выше, чем при бОльшем токе на тех же оборотах.
Скорости.
При 1.74 А, 12 В, на скорости 300 об/мин ужасный треск, остановить пальцем вал не реально.Мне кажется, максимально лучше использовать 260 об/мин, а на 240 об/мин уже нет подозрительных ноток в звуке.
При 1.74 А, 24 В треск начинается на 360 об/мин, на 340 об/мин думаю ещё можно использовать, там нет подозрительных ноток.
При 0.8 А, 12 В, думаю лучше не использовать больше 260 об/мин.
При 0.8 А, 24 В, думаю лучше не использовать больше 280 об/мин.
При изменении напряжения при работающей системе - не зависает. И вообще зависает гораздо реже, чем TMC2208. Была пару зависаний на 300 об/мин, и при этом не сразу виснет и на 450 об/мин. Но зато если виснет, то виснет с удержанием мотора, а не отпусканием, как TMC2208 и может повторно зависать, если не сбросить питание.
Но пару раз завис и на 60-80 об/мин.
Драйвер и двигатель при токе 1.74 А греются ощутимо, но не запредельно за небольшое время теста.
Поменяем плату на BigTreeTech SKR V1.3.
Драйвер A4988.
Плата управления BigTreeTech SKR V1.3. Прошивка Marlin 2.0.9.2.
В прошивке драйвер прописан: #define X_DRIVER_TYPE A4988
Результаты в точности, как на плате MKS Gen_L.
Драйвер TMC2208.
Плата управления BigTreeTech SKR V1.3. Прошивка Marlin 2.0.9.2.
В прошивке драйвер прописан: #define X_DRIVER_TYPE A4988 (стандартный режим)
Вибрации.
При токе 0.8 А и скорости 80 об/мин на валу и корпусе двигателя вибрации сильнее, чем на других скоростях. Ситуация, как и на плате MKS Gen_L.
На 60 об/мин двигатель бесшумен если только его сильно не прижимать к столу или не ставить на ребро.
Скорости.
При токе 0.8 А, 12 В, максимальная скорость 270 об/мин, остановить пальцем вал не реально, звук без подозрительных ноток.
Делал много оборотов, пропуска шагов нет.
На бОльших скоростях работает уже не стабильно (может начать вращаться, а может и нет), но когда крутится, вал тоже тяжело удерживать.
При увеличении напряжения до 24 вольт, максимальная скорость увеличивается до 300 об/мин.
На этой плате и прошивке драйвер не зависает ни при высоких скоростях - пробовал до 700 об/мин, ни при изменении напряжения 12 -> 24 -> 12 -> 24 В.
Драйвер TMC2226.
Плата управления BigTreeTech SKR V1.3. Прошивка Marlin 2.0.9.2.
В прошивке драйвер прописан: #define X_DRIVER_TYPE A4988
Скорости.
При токе 0.8 А, 12 В, максимальная скорость 200 об/мин, дальше пропускает шаги, хотя дребежащего звука нет. И чем больше скорость, тем больше пропускает, но плавно увеличивается это количество, и пропусков немого, чтобы увидеть нужно много оборотов сделать.
Увеличение напряжения до 24 В не меняет результат вообще.
Вообще странная ситуация. На MKS Gen_L TMC2226 и TMC2208 были примерно равны, а здесь TMC2226 ощутимо уступает. Провёл ещё раз эти эксперименты с обоими драйверами, результат такой же.
У меня пока нет никакого объяснения такому поведению, да ещё и в стандартном режиме управления.
Увеличение тока до 1.25 А поднимает максимальную скорость до 280 об/мин. А если ещё и напряжение увеличить до 24 В, то скорость увеличивается до 320 об/мин, правда с дребежащими ноткам.
На этой плате и прошивке драйвер не зависает ни при высоких скоростях - пробовал до 800 об/мин, ни при изменении напряжения 12 -> 24 -> 12 -> 24 В.
Меняем в предыдущей конфигурации стенда настройку прошивки с #define X_DRIVER_TYPE A4988 на #define X_DRIVER_TYPE TMC2208_STANDALONE.
Драйвер TMC2208.
Ничего не меняется.
Меняем на #define X_DRIVER_TYPE TMC2209_STANDALONE
Драйвер TMC2226.
Ничего не меняется.
UART режим.
Драйвер TMC2226.
Плата управления BigTreeTech SKR V1.3. Прошивка Marlin 2.0.9.2.
Начальные установки:
STEALTHCHOP включен (тихий режим).
HYBRID_THRESHOLD выключен.
INTERPOLATE включен.
Скорости.
12 В, 0.8 А. Максимальные обороты без дребежащих звуков 250 об/мин.
На 280 об/мин сильные дребежащие звуки на старте, если применять ускорение, то, видимо, эта скорость рабочая, пропуска шагов нет.
300 об/мин грохот как отбойный молоток, но, как ни странно, пропуска шагов нет.
Увеличение напряжения до 24 В отодвигает эти скорости на +20 об/мин.
Включение spreadCycle (более динамичный и шумный режим, чем stealthChop) на 12 В, 0.8 А увеличивает максимальную рабочую скорость до 320 об/мин.
На 340 об/мин двигатель тоже делает оборот без пропуска шагов и дребежащих звуков, но если подать две команды подряд, то второй оборот может пропустить, а на 360 об/мин всегда пропускает.
Увеличение напряжения до 24 В не отодвигает эти пороги, при обоих значения настройки #define CHOPPER_TIMING: CHOPPER_DEFAULT_12V и CHOPPER_DEFAULT_24V.
Остановить пальцами вал на 320 об/мин не реально ни на 12 В, ни на 24 В.
Отключение интерполяции до 256 шагов (INTERPOLATE) увеличивает максимум до 340 об/мин, правда здесь уже при желании вал можно притормозить, но с большим трудом.
Кроме того, появляется свист и на низких скоростях, но вроде как меньше, чем на A4988.
Вибрации.
Независимо от интерполяции, в spreadCycle на низких скоростях, один из максимумов вибрации опускается на скорость 60 об/мин и даже на 40 об/мин немного есть. А второй максимум, более сильный, находится на 110-120 об/мин. Так что для низких скоростей это не очень хороший режим. При этом на 24 В на 80 - 100 об/мин вибрация меньше, чем на 12 В.
Изменение настройки #define CHOPPER_TIMING с CHOPPER_DEFAULT_12V на CHOPPER_DEFAULT_24V и обратно заметно ситуацию не меняет.
Кроме того, в spreadCycle иногда вал двигателя может как бы немного дребезжать в покое. Не всегда и не сильно.
Скорости.
Поднятие тока всего до 1000 мА, при 24 В увеличивает максимум до 480 об/мин. Дребезжащих звуков и пропусков нет. Но пальцами при среднем усилии вал останавливается. На 440 об/мин остановить уже не реально.
При токе 886 мА RMS, что является эквивалентом 1.25 А max, на котором я проводил опыты с A4988, у TMC2226 с включенной интерполяцией (256) получается максимум 420 об/мин против 485 об/мин у A4988.
Правда здесь вал останавливается с чуть большим усилием, чем на A4988. Впрочем, если отключить интерполяцию, то они должны почти сравняться.
Ну вот, почти всё.
Не все собранные мной данные попали сюда, но большинство попало. Но в выводах будут учтены и не попавшие сюда опыты и эксперименты, которые, так получилось, что я не фиксировал в письменном виде.
Выводы.
Сразу хотел бы оговориться, что все результаты и выводы касаются конкретно моего стенда, с моими платами управления, версиями прошивок, версиями драйверов и конкретным экземпляром двигателя.
Допускаю, что на других стендах результаты могут быть другими.
Изначально я был очень негативно настроен к TMC22xx - нестабильная работа в виде непонятных и иногда непредсказуемых зависаний, необъяснимых провалов в динамике на разных платах, низкие максимальные скорости передвижения и всё это за гораздо бОльшие деньги, по сравнению с A4988.
Но проведя подробные эксперименты я всё же понял, что и TMC22xx можно заставить стабильно работать, не сильно теряя в динамике, но при этом тише, чем A4988.
Правда для этого может потребоваться значительно больше усилий, времени и денег, чем в случае с A4988.
А если нужен полный хардкор, то A4988 это наше всё. Дёшево, стабильно, предсказуемо и никаких зависаний на разных платах и прошивках, бОльшие скорости работы при тех же токах.
Но вот кому нужна тишина, A4988 тут уже не смогут ничего предложить.
Ещё хотел бы отметить несколько интересных результатов экспериментов.
Увеличение напряжения с 12В до 24В во многих случаях (но не всегда) хоть и незначительно (около 10 %), но увеличивает максимальные скорости (и, видимо, момент).
Увеличение тока предсказуемо и значительно увеличивает максимальные скорости и момент.
У всех протестированных драйверов, на всех режимах есть скорости, на которых они начинают жужжать и вибрировать во много раз сильнее, чем на меньшей и даже большей(!) скорости.Полагаю, из-за этого при печати могут возникать непонятные дефекты, которые могут уходить не только при снижении скорости, но и при её увеличении(!).
Эти скорости не константны для конкретного драйвера и могут меняться при изменении его тока, напряжения, режима работы. Думаю, при печати их лучше избегать.
Изменение тока и напряжения иногда может влиять и на акустические характеристики системы и вибрации, но не всегда и чёткой зависимости и даже направленности здесь нет.
A4988 на высоких скоростях ведёт себя предсказуемее (да и на низких тоже).
У него сильно падает момент и, если что, он просто не поедет
TMC22xx же на своих максимумах может иметь относительно высокий момент, но может ехать или не ехать только по ему понятному алгоритму.
Если отключить все улучшалки, и утишалки, то TMC22xx может почти дотянуться по максимальной скорости до A4988, при этом будет всё равно тише ну и всё-таки немного медленнее.
Гибридный режим работы драйвера, настраиваемый в Марлине через параметр HYBRID_THRESHOLD, это действительно круто. И это как раз то, ради чего стоит немного заморочиться и включить управление драйверами по UART.
Этот режим позволяет до определённых скоростей использовать более тихий режим TMC22xx stealthChop, а после этих скоростей, более динамичный spreadCycle. И это действительно работает!
P.S. На этом месте обзор должен был закончится. Но я долго не мог его опубликовать и за это время я установил и потестил драйверы на реальном принтере.
Для A4988 при 1.25 А значения на тестовом стенде и на принтере оказались одинаковыми. Принтер на 250 мм/с работает стабильно, на 300 мм/с могут быть пропуски. Найденный на тестовом стенде максимум лежит как раз между двумя этими скоростями.
А вот для TMC2226 результат оказался очень неожиданным. По тестовому стенду максимум при 0.8 А должен был оказаться 213 мм/с, а в реальности принтер без проблем (без пропусков) летал на скорости 300 мм/с.
Полагаю дело в ускорениях. И при использовании ускорений (у меня стоят по умолчанию Марлиновские 3000 мм/мин/сек) максимальные скорости TMC2226 существенно увеличиваются.
Нагрев TMC2226 на этом принтере меньше, чем был у A4988 и я использую для них пассивное охлаждение, без вентилятора.
Ну и хотел бы отметить, что TMC2226 установлены у меня на принтере уже несколько месяцев. На всех осях и на редукторном (1:3) экструдере, со включенной функцией Linear Advanced. Никаких сбоев в их работе пока не было. В прошивке включен гибридный режим работы драйверов (HYBRID_THRESHOLD), и для его работы драйверы подключаются к плате в режиме управления по UART.
P.S.2. Изначально, для сравнения качества печати A4988 и TMC22xx, я хотел подготовить отдельный обзор. Но распечатав несколько тестовых деталей понял, что готовить нечего. Разницы в качестве я не увидел. Верю, что она может быть, и люди её видят. Возможно, она видна в каких-то иных условиях, на других принтерах, настройках, материалах или моделях. Но вот я не увидел.
P.S.3. Выявился ещё один существенный недостаток TMC22xx. В полной тишине печати вылезли всякие хрусты и скрипы механики принтера, о которых я ранее и не подозревал, пришлось разбираться что где скрипит и хрустит и устранять это. Не было заботы, купила баба порося...
Еще больше интересных статей
Голова для mankati fullscale XT под E3DV6
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Про мощность керамического нагревателя Qidi Q1 pro
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Некоторое время назад я менял керамический нагреватель на...
Сопла и сопли
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Сколько раз этот вопрос поднимался. Сколько тем...
Комментарии и вопросы
Как это вообще вяжется. Ну вот...
Тут главное чтобы расстояние м...
Спасибо! Пока распечатал еще о...
Всем доброго времени суток, кт...
Добрый день! Подскажите,...
Здравствуйте, уважаемые. ...
Всем здравствуйте! После нагре...