Я сам очень долго не уделял этому вопросу должного внимания. Во первых не хотел разбираться. Во вторых считал, что настройка в рабочих условиях (во время тестовой печати на завышенных режимах) самая правильная. Это конечно верно, но настал момент, когда в моей коллекции появился третий вид драйверов TMC2100 и чтобы их адекватно сравнить с драйверами A4988 нужно их одинаково и правильно настроить по току используемого шагового двигателя.
Что нам даёт правильная настройка тока для шаговых двигателей?
- Снижение шума от работы принтера при завышенном токе
- Избавление от сдвига слоёв (пропуска шагов) при низком токе
- Снижение нагрева шагового двигателя или его драйвера
Какие обычно используют шаговые двигатели?
17HS4401 ток 1,7A – обычные
17HS8401 ток 1,8А – более мощные
17HS4402 ток 1,3A – по некоторым сведениям менее шумные, чем 17HS4401
Драйверы шаговых двигателей
A4988 на ток до 2А – очень широко распространён и недорогой
DRV8825 на ток до 2,2А – интересен большей мощностью и микрошагом 1/32
TMC2100 на ток RMS 1,2А (с пиками до 2,5А) – интересен самостоятельным дроблением микрошага 1/16 до 1/255, что в итоге снижает шум работы шагового двигателя не загружая при этом дополнительными расчётами Ардуину.
Видимо для этого драйвера больше подходят двигатели с низким током, например 17HS4402. С этим двигателем драйвер будет меньше нагреваться, а значит его достаточно обдувать низкооборотистым бесшумным вентилятором.
Настройка тока на драйверах ШД
Минусовой щуп мультиметра подсоединяем к контакту GND (минус, он общий), плюсовым прикасаемся к корпусу подстроечного резистора на драйвере. Крутим подстроечный резистор отвёрткой и замеряем расчётное напряжение Vref. Таким образом мы выставляем правильный ток для драйвера шагового двигателя. Для каждого вида драйвера своя формула расчета Vref.
Vref – пин замера напряжения для установки тока по формуле.
Current Limit – ток шагового двигателя.
A4988
Формула Vref для A4988 изменяется от номинала токочувствительных резисторов. Это два чёрных прямоугольника на плате драйвера. Обычно подписаны R050 или R100.
Vref = Current Limit * 8 * (RS)
Например для 17HS4401: Vref = 1,7 / 2,5 = 0,68В
DRV8825
Current Limit = Vref * 2
Vref = Current Limit / 2
Например для 17HS4401: Vref = 1,7 / 2 = 0,85В
TMC2100
Irms = (Vref * 1,77A) / 2,5V
Vref = (Irms * 2,5V) / 1,77A
Current Limit = 1.41 * Irms
Например для 17HS4401: Vref = (Current Limit * 0,707 * 2,5В) / 1,77А = (1,7 * 0,707 * 2,5) / 1,77 = 1,697В
При таком Vref шаговый двигатель возможно будет нагреваться, поэтому Vref придётся подстроить во время работы.
В некоторых случаях для снижения нагрева драйвера приходится снижать Vref, а значит для защиты от пропуска шагов нужно уменьшать ускорения в прошивке. Соответственно при снижении ускорений общая скорость печать 3D принтера снижается. Разумный минимум для ускорений 500 мм/с^2. Отсюда вывод: уровень шума можно снизить почти на любом 3D принтере, снижая ускорения и Vref, но при этом Vref придётся подбирать опытным путём.
Сравнение громкости работы двигателя на разных Vref
- Шаговый двигатель Wantai 42BYGHW609 ток 1,7А
- Драйвер A4988
- 3D принтер Mendel90
Тестовый G-код примерно такой (правил в процессе и после)
Используем аудиоредактор Audacity. Примитивный микрофон подключен к встроенной аудиокарте ПК. Микрофон прижат к корпусу ШД и сверху обмотан поролоном. Надеюсь этого хватит для регистрации уровня шума.
Vref устанавливаю на 0,58В, запускаю программу из Pronterfaceи записываю звук с микрофона. Затем повторяю запись на Vref = 0,78В. Картинки уровней громкости складываю в Фотошопе для наглядности сравнения. Вот что получилось:
Красным Vref = 0,58В
Синим Vref = 0,78В
На некоторых скоростях разность в громкости вполне существенная. Такие напряжения взяты для наглядности, хотя и не сильно отличаются. На не настроенном драйвере может стоять любое напряжение Vref!
Пожалуйста не путайте ток с напряжением Vref, когда пишете об этом
Подробнее про эти драйверы можно почитать на сайтах производителей:
https://www.pololu.com/category/120/stepper-motor-drivers
https://github.com/watterott/SilentStepStick/blob/master/docu/FAQ.md
Для более глубокого понимания формул смотрите отдельную тему на форуме по этому вопросу.
Ссылка на обсуждение на форуме методов борьбы с шумом 3D принтера.
Метки: A4988, DRV8825, TMC2100, драйверы   2016-01-12      Раздел: Настройка, Электроника  
Vref = Imax * 8 * (RS)
Для двигателя из нашего примера 17HS8401
Vref = 1,8 * 8 * 0,100 = 1,44 В.
Из-за того, что рабочий ток двигателя обычно рекомендуется ограничивать в 70% от максимального тока, для уменьшения перегрева двигателя, полученное значение необходимо умножить на 0,7.
Vref= 1,44*0,7 = 1,01 В.
Расчет для драйвера типа DRV8825.
Формула опорного напряжение для данного типа драйвера:
Vref = Imax/2
При рекомендованной работе на 70% от максимального тока двигателя, подставив значения для нашего примера, получим следующие значения:
Vref = 0.7*1,8 / 2 = 0.63V
Настройка тока драйвера на контроллере.
Для настройки необходимо подключить сборку плат к компьютеру,
Включить на мультиметре измерение постоянного напряжения напротив положения «20».
Для измерения напряжения необходимо минусовой щуп приложить к минусу на CNC Sheild, а положительный щуп замкнуть с подстроечным резистором, который по совместительству является «+» в данной схеме.
Необходимо вращать подстроечный резитор, пока мультиметр не покажет требуемое значение напряжения, при вращении по часовой стрелке, значения растут, против часовой стрелки — напряжение падает.
Настройку расчетных значений необходимо повторить это для всех активных драйверов в сборке.
Описание драйвера, характеристики
DRV8825 — Это драйвер шагового двигателя, с током до 2.2А и возможностью делить шаги микрошагом вплоть до 1/32. Драйвер пользуется популярностью из-за того, что рассчитан на хороший ток, хорошо делит шаги и его можно легко установить в в плату RAMPS 1.4.
Питание: от 8.2в — 45в
Микрошаг: 1/2, 1/4, 1/8, 1/16, 1/32
Ток: без радиатора до 1.5А на обмотку и 2.2А с радиатором
Защита: От перегрева, от перегрузки по току
Размеры: 20 х 15 х 10 мм
Как настроить микрошаг на DRV8825
Микрошаг, на этом драйвере, выбирается путем подачи нужных напряжений на пины M0, M1, M2. Ниже я приведу таблицу напряжений для разного деления шага. На пинах должен получаться либо высокий либо низкий уровень напряжения, в частности, можно брать напряжение пинов Arduino 5v и все будет работать как надо.
Выбор большего деления шага, дает возможность увеличить разрешение движения, но точность от этого немного страдает, а так же сильно уменьшается момент двигателя.
Подключение драйвера шагового двигателя к arduino
У каждого радиолюбителя возникает тот момент, когда ему необходимо подключить к своему микроконтроллеру шаговый двигатель. Конечно, скажете вы, в «Интернетах» есть куча схем, готовых библиотек и все уже разжевано давным давно. Однако, когда я решил подключить к своей arduino nano драйвер DRV8825 и полез в интернет за схемкой, то обнаружил, что схем несколько. Если быть точным я нашел их 2.
Посмотрев несколько статей, устройств, схем, я пришел к выводу, что вторя схема правильная (нет) и растравил плату. Собрав ее, долго думал почему на двигатель не поступает питание. Я менял драйвера как перчатки, но после 4 штук подумал, что дело не может быть в драйверах. Решил подать питание так как показано на первой схеме. И о чудо! Оно живое!
Возможно, только у меня такие драйвера ( или кривые руки ), однако запустилась только первая схема, которую я теперь постоянно и использую.
Возможные проблемы при подключении DRV8825 к Arduino или другому микроконтроллеру.
- Используется не правильная схема подключения.
- Не правильно настроен ток для двигателя, иногда он выкручен на минимум по умолчанию и поэтому двигатель может не работать. Далее мы это разберем.
- Не правильная программа (скетч).
- Пины которые вы используете не подходят для программы и не могут выдавать сигнал. Например на Arduino nano пины A6,A7 вообще не могут выдавать сигнал, поэтому проверяйте пины вашего контроллера на совместимость.
Подключение DRV8825 к плате RAMPS 1.4
На фото показано каким образом необходимо ставить драйвера на плате. Перемычки микрошага находятся под самими драйверами и подписаны M0, M1, M2 (иногда ms0, ms1, ms2).
У каждого двигателя свой ток работы. Для того, что-бы он правильно работал, необходимо правильно ограничить ток на плате драйвера. Для этого на платах есть потенциометр.
Для начала нужно рассчитать VRef, делается это очень просто.
Current Limit = Vref * 2
Vref = Current Limit / 2
Например для шагового двигателя 17HS4401: Vref = 1,7 / 2 = 0,85В
Что-бы двигатель не перегревался часто Vref снижают.
Ставим щупы мультиметра так, как показано на картинке выше, меряем, что у нас там и крутим в ту или иную сторону для достижения нужного результата. Двигатель в этот момент будет менять свой звук работы.
Отлично! Ток настроен, а драйвер правильно подключен!
Скетч для проверки драйвера шагового двигателя
#include const int stepsPerRevolution = 200; Stepper myStepper(stepsPerRevolution, 5, 6); void setup() { myStepper.setSpeed(60); Serial.begin(9600); } void loop() { Serial.println("clockwise"); myStepper.step(stepsPerRevolution); delay(500); Serial.println("counterclockwise"); myStepper.step(-stepsPerRevolution); delay(500); }
Кстати купить данный драйвер можно на Aliexpress:
ссылка на товар DRV8825 за примерно 60р
Так же вы можете прочитать про подключение и настройку популярного драйвера a4988 по ссылке.
Используемые источники:
- https://3deshnik.ru/blogs/akdzg/pravilnaya-nastrojka-toka-dlya-shagovyx-dvigatelej
- http://cnc-design.ru/nastroika-toka-draiver-shagovogo-dvigatelya.html
- https://you-hands.ru/2018/10/07/kak-podklyuchit-drv8825-k-arduino/