NEMA17: Управление шаговым двигателем в реальном времени с Arduino
HTML-код
- Опубликовано: 2 авг 2021
- Этот урок посвящен управлению шаговым двигателем NEMA17 в режиме реального времени с помощью контроллера Arduino, платы расширения и драйвера двигателя DRV8825 в режиме реального времени. Вы увидите как управлять мотором, вращая энкодер и изменяя при этом скорость вращения, а также менять направление вращения переключением тумблера. Подробно рассмотрим скетч и разберем все переменные. Мотор широко применяется в 3D принтерах, ЧПУ станках.
Тайминг:
0:43 - схема подключений
0:50 - сборка компонентов
5:50 - Рассматриваем скетч
14:15 - тестируем переключение вращения
16:36 - проверяем режимы платы расширения
---------------------------------------------------------------------------------------------------------------------------------------------
Скачать архив можно здесь ----- drive.google.com/file/d/1aY3X...
Купить шаговый двигатель ----- www.yourduino.ru/product/shag...
Купить плату расширения ----- www.yourduino.ru/product/plat...
Купить драйвер DRV8825 ------- www.yourduino.ru/product/dray...
Купить контроллер UNO ----- www.yourduino.ru/product/uno-... - Наука
Спасибо. Познавательно и доходчиво.
Наконец то хоть где то нашёл адекватную сборку и обьяснение на серводвигателе, особенно за большой обьем обьяснений по скетчу
здравствуйте урок понравился не могли бы Вы сделать тоже самое только на дисплей выводить не частоту а выставлять колличество оборотов (нужно для намоточного станка)
Здравствуйте. Если еще кому-нибудь интересна такая реализация - ставьте лайки. 10 лайков и снимем коротенькое видео, как выставлять обороты. Для персонального решения можете написать запрос на info@yourduino.ru, но это будет платно. Спасибо.
Спасибо за науку!
Спасибо за урок. Думаю всем было бы интересно как реализовать перемещение на определенное расстояние. Задал значение на дисплее и двигатель сделал определенное количество шагов.
Реализовать Вашу задачу очень просто, совместив скетчи из обоих уроков. Алгоритм управления по числу шагов приведен в первом уроке. Берете цикл, переменную для верхней границы цикла выводите на дисплей (это и будет число шагов) и настраиваете, как во втором уроке. Конечно, нужно будет немного поменять скетч, но основной код уже готов.
Спасибо огромное, то что искал.
Спасибо большое!
Вечер добрый.
Есть переключатель на 5 отдельных положений. У переключателя есть центральное положение в которое он возвращается автоматически (типа джойстик) и шаговый мотор, который двигает «деталь».
Нужно так что-бы каждому положению переключателя соответствовало одно из пяти положений «детали» не зависимо от порядка включения и при отпускании «джойстика» (центральное положение) оставалось включенныйм выбранное.
Схема должна быть записана двумя источниками питания для того чтобы при отключения одного из питаний, занималась пятая позиция «детали».
Спасибо за урок! Подскажите пожалуйста как сделать плавное ускорение шаговиком по синусоиде . Спасибо
тема интересная, но уж как то завернули алгоритм... Нам на драйвер нужно подавать импульсы с заданной частотой. 1 оборот двигателя - это 200 шагов, если дробить на 16, то получаем 3200 импульсов на один оборот. Теперь надо бы определиться с заданным диапазоном частоты вращения. допустим от 10 до 1000 оборотов в минуту необходимо получить . Это же значение вывести на дисплей. значит нужно создать генератор сигналов с регулируемой частотой от 3200*10 /60=533Гц (длительность периода 1876mкs) -это 10 об/мин (мин) до 3200*1000/60=53,3кГц ( длительность периода 18,762mks) - это 1000 об/мин. (макс). И было бы супер задать алгоритм, чтобы вращая энкодер мы задавали частоту вращения в об/мин. и выводили ее на дисплей, а этим оборотам задавалась бы соответствующая частота генерации на выходе. Остается решить вопрос как реализовать это в скетче. Но в любом случае ширина импульса должна быть равна ширине паузы.
очень нужная для меня тема, но на экране совершенно не видно скетча ((. Это, что то с разрешением на моем компе? или у всех так не четко видно?
Существует ли возможность включить в алгоритм датчик температуры, по показаниям которого ШД шагнет на определенное количество шагов?. Есть острая нужда установить ШД на газовый котел, на котором в зависимости от температуры батарей, ШД будет крутить ручку положения газового котла. Если есть возможность вписать в алгоритм ещё и датчик реального времени, то цены бы не было такому проекту!
Как сделать управление чтобы разные кнопки включали разные режимы работы двигателя. Если такое есть дайте ссылку. Спасибо
Покажи пожалуйста как подключить не к уно, а к нано несколько шаговых моторчиков! Заранее благодарен!
Здравствуйте, как сделать так что бы скетч повторялся?
Здравствуйте) Но ведь показанный в видео пример, не является "real time" системой!
Здраствуйте. Как сделать так, что бы значения на дисплее и скорость вращения, соответственно, можно было бы менять без нажатия на энкодер (в реальном времени)?
Добрый день готовую продукцию можно заказать. Спасибо
Нужен скетч для стола планшетного принтера на шаговом двигателе от штатного энкодера
А если 23 шаговый подсоединить будет крутить ?
а слабо извернуться, и подключить (желательно к esp8266) шаговик 28byj48 с драйвером на uln2003 через расширитель на чипе PCF8574?
управление скоростью вращения через выключение выглядит надуманной
Что за энкодер? Где найти? "KY-040 360°Rotary Encoder Module For Arduino" - подходит?
Да, именно он.
Спасибо большое! А как называется понижающий модуль питания? Нигде не могу найти его. Только для макетной платы, который понижает до 3,3 и 5, но выхода на 9в у него нет
Добрый день. У нас он называется вот так www.yourduino.ru/product/preobrazovatel-napryazheniya-dc-dc-33v-5v-s-vyklyuchatelem
На выход OUT идет входное напряжение напрямую (не через выключатель) и без преобразования.
@@YourDuino спасибо за ссылку - нашел. Отличные уроки!
не могу скачать скеч
Привет, скажи пожалуйста, если я заменю nema 17 на фрезере ЧПУ, (поставлю усиленный) нужно будет менять настройки программы? (просто я дуб дубом в этой теме🙂
Нет
Здравствуйте! Подскажите пожалуйста, как сделать чтобы можно было визуально контролировать уровень нагрузки шагового двигателя?
Например, при холостом вращении - выводится значение ноль, при какой-то нагрузке выводиться соответствующее число (например значение силы тока).
Можно попробовать повесить на одну из обмоток датчик тока на ACS712, например такой www.yourduino.ru/product/gy-712-modul-datchika-toka-5a.
И по его показаниям сделать нужную градацию и выводить на дисплей.
@@YourDuino Спасибо Вам за ответ. Буду пробовать.
драйвер же могу 2208 использовать от принтера?
Вполне, только распиновку проверять. Может отличаться.
Доброго времени! Подскажите начинающему. Вот есть два шд NEMA17 хотелось бы управлять ними джойстиком как бы по осям с изменением скорости вращения. Это реально?
Добрый день.
Конечно возможно. Лазерные и фрезерные станки практически так и работают.
Кстати, интересная идея для следующего видео!!!))) Спасибо!
@@YourDuino Спасибо большое!!! Буду оч ждать. Никак у меня ума не хватает сделать. Спасибо .
Здравствуйте. А какое максимальное напряжение на блоке питания? Я так понимаю до 15в?
Я имею ввиду на dc dc преобразователь
Там обычные AMS1115. Больше 12В не рекомендуется, хотя в даташите до 15В.
подскажите пожалуйста))
можно ли к этой схеме подключить еще один движок? что бы два движка управлялись одно ардуиной?
можно ли сделать, что бы мотор поворачивался только тогда, когда я кручу энкодер? что бы на 1 шаг э\к был только 1 шаг мотора...
Если требуется одновременное синхронное управление, то можно взять еще один драйвер и один движок и соединить параллельно пины управления драйверов.
Чтобы поворачивать движок на 1 тик энкодера, правильней будет ловить прерывания энкодера и давать импульс на драйвер. Тогда все получится.
@@YourDuino спасибо
Именно 9 вольт надо или 12 можно?
Напряжение определяется возможностями драйвера. Можно подавать и 12В. Для схемы питания, приведенной в видео, более 12В не рекомендуется, т.к. стабилизатор ардуины будет сильно греться.
На DRV8825 можно до 45В подавать по даташиту, но тогда нужно менять схему питания. Схема, используемая в видео, самая простая и приведена больше в ознакомительных целях.
Повторил вашу схему - в итоге всё, вроде, работает за исключением самого шаговика. Он просто рычит/дрожит, а вал стоит на месте. На регулировку энкодера реагирует (частота рычания/дрожания изменяется), но вал так и стоит на месте. Перепробовал все режимы шагов, но результат прежний. В чём может быть проблема?
Попробуйте поиграться со значениями pulse_interval, min_interval и max_interval в скетче, увеличивая паузу между импульсами и диапазон. Ну и схема питания. Это основные моменты, которые могут влиять на работу шаговика, если он изначально рабочий.
Еще можете попробовать добавить delayMicroseconds(5); после digitalWrite(STEP_PIN , LOW); в цикле do { } while (), который выдает импульсы на движок.
@@YourDuino спасибо, сейчас буду пробовать
@@YourDuino пока что это лучший результат, которого удалось достичь. Изменение диапазона особо ничего не изменило. Добавление задержки в цикле немного улучшили ситуацию, но незначительно. Как минимум, удалось добиться полных оборотов на 960. Другие значения - ещё хуже - оборотов нет. ruclips.net/video/1eSU9RNPv8c/видео.html
А потенциометром на драйвере ток обмоток регулировали?