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-...
  • НаукаНаука

Комментарии • 58

  • @v.d.7900
    @v.d.7900 Год назад +1

    Спасибо. Познавательно и доходчиво.

  • @mrfse3831
    @mrfse3831 13 дней назад

    Наконец то хоть где то нашёл адекватную сборку и обьяснение на серводвигателе, особенно за большой обьем обьяснений по скетчу

  • @nordiks70
    @nordiks70 2 года назад +14

    здравствуйте урок понравился не могли бы Вы сделать тоже самое только на дисплей выводить не частоту а выставлять колличество оборотов (нужно для намоточного станка)

    • @YourDuino
      @YourDuino  2 года назад +13

      Здравствуйте. Если еще кому-нибудь интересна такая реализация - ставьте лайки. 10 лайков и снимем коротенькое видео, как выставлять обороты. Для персонального решения можете написать запрос на info@yourduino.ru, но это будет платно. Спасибо.

  • @wantcando5819
    @wantcando5819 3 года назад +2

    Спасибо за науку!

  • @user-sg2nz9mp3z
    @user-sg2nz9mp3z 2 года назад +3

    Спасибо за урок. Думаю всем было бы интересно как реализовать перемещение на определенное расстояние. Задал значение на дисплее и двигатель сделал определенное количество шагов.

    • @YourDuino
      @YourDuino  2 года назад +6

      Реализовать Вашу задачу очень просто, совместив скетчи из обоих уроков. Алгоритм управления по числу шагов приведен в первом уроке. Берете цикл, переменную для верхней границы цикла выводите на дисплей (это и будет число шагов) и настраиваете, как во втором уроке. Конечно, нужно будет немного поменять скетч, но основной код уже готов.

  • @andrewdoynikov9682
    @andrewdoynikov9682 Год назад

    Спасибо огромное, то что искал.

  • @user-si1vr1ih5d
    @user-si1vr1ih5d 4 месяца назад

    Спасибо большое!

  • @OleksandrKharchenko-gy2wv
    @OleksandrKharchenko-gy2wv Год назад

    Вечер добрый.
    Есть переключатель на 5 отдельных положений. У переключателя есть центральное положение в которое он возвращается автоматически (типа джойстик) и шаговый мотор, который двигает «деталь».
    Нужно так что-бы каждому положению переключателя соответствовало одно из пяти положений «детали» не зависимо от порядка включения и при отпускании «джойстика» (центральное положение) оставалось включенныйм выбранное.
    Схема должна быть записана двумя источниками питания для того чтобы при отключения одного из питаний, занималась пятая позиция «детали».

  • @user-gt1vb5kx9z
    @user-gt1vb5kx9z 2 года назад

    Спасибо за урок! Подскажите пожалуйста как сделать плавное ускорение шаговиком по синусоиде . Спасибо

  • @aleks-mar
    @aleks-mar 9 месяцев назад +1

    тема интересная, но уж как то завернули алгоритм... Нам на драйвер нужно подавать импульсы с заданной частотой. 1 оборот двигателя - это 200 шагов, если дробить на 16, то получаем 3200 импульсов на один оборот. Теперь надо бы определиться с заданным диапазоном частоты вращения. допустим от 10 до 1000 оборотов в минуту необходимо получить . Это же значение вывести на дисплей. значит нужно создать генератор сигналов с регулируемой частотой от 3200*10 /60=533Гц (длительность периода 1876mкs) -это 10 об/мин (мин) до 3200*1000/60=53,3кГц ( длительность периода 18,762mks) - это 1000 об/мин. (макс). И было бы супер задать алгоритм, чтобы вращая энкодер мы задавали частоту вращения в об/мин. и выводили ее на дисплей, а этим оборотам задавалась бы соответствующая частота генерации на выходе. Остается решить вопрос как реализовать это в скетче. Но в любом случае ширина импульса должна быть равна ширине паузы.

  • @aleks-mar
    @aleks-mar 9 месяцев назад +1

    очень нужная для меня тема, но на экране совершенно не видно скетча ((. Это, что то с разрешением на моем компе? или у всех так не четко видно?

  • @user-cl5ut1np4f
    @user-cl5ut1np4f 2 года назад +3

    Существует ли возможность включить в алгоритм датчик температуры, по показаниям которого ШД шагнет на определенное количество шагов?. Есть острая нужда установить ШД на газовый котел, на котором в зависимости от температуры батарей, ШД будет крутить ручку положения газового котла. Если есть возможность вписать в алгоритм ещё и датчик реального времени, то цены бы не было такому проекту!

  • @v.d.7900
    @v.d.7900 Год назад

    Как сделать управление чтобы разные кнопки включали разные режимы работы двигателя. Если такое есть дайте ссылку. Спасибо

  • @user-wm4pl5kt1u
    @user-wm4pl5kt1u Год назад

    Покажи пожалуйста как подключить не к уно, а к нано несколько шаговых моторчиков! Заранее благодарен!

  • @user-iq1pt9rq9v
    @user-iq1pt9rq9v Год назад

    Здравствуйте, как сделать так что бы скетч повторялся?

  • @crazymoto6734
    @crazymoto6734 Год назад +1

    Здравствуйте) Но ведь показанный в видео пример, не является "real time" системой!

  • @iva5610
    @iva5610 20 дней назад

    Здраствуйте. Как сделать так, что бы значения на дисплее и скорость вращения, соответственно, можно было бы менять без нажатия на энкодер (в реальном времени)?

  • @user-tz9wx8yj8p
    @user-tz9wx8yj8p 9 месяцев назад

    Добрый день готовую продукцию можно заказать. Спасибо

  • @iticompany1808
    @iticompany1808 9 месяцев назад

    Нужен скетч для стола планшетного принтера на шаговом двигателе от штатного энкодера

  • @TV-lp8of
    @TV-lp8of 3 месяца назад

    А если 23 шаговый подсоединить будет крутить ?

  • @iakovkate1016
    @iakovkate1016 Год назад

    а слабо извернуться, и подключить (желательно к esp8266) шаговик 28byj48 с драйвером на uln2003 через расширитель на чипе PCF8574?

  • @nikolayshushkin5865
    @nikolayshushkin5865 Год назад +1

    управление скоростью вращения через выключение выглядит надуманной

  • @borysshtangeyev502
    @borysshtangeyev502 2 года назад

    Что за энкодер? Где найти? "KY-040 360°Rotary Encoder Module For Arduino" - подходит?

    • @YourDuino
      @YourDuino  2 года назад

      Да, именно он.

  • @TamepLAN
    @TamepLAN 2 года назад

    Спасибо большое! А как называется понижающий модуль питания? Нигде не могу найти его. Только для макетной платы, который понижает до 3,3 и 5, но выхода на 9в у него нет

    • @YourDuino
      @YourDuino  2 года назад +2

      Добрый день. У нас он называется вот так www.yourduino.ru/product/preobrazovatel-napryazheniya-dc-dc-33v-5v-s-vyklyuchatelem
      На выход OUT идет входное напряжение напрямую (не через выключатель) и без преобразования.

    • @TamepLAN
      @TamepLAN 2 года назад

      @@YourDuino спасибо за ссылку - нашел. Отличные уроки!

  • @user-we3ii5ux8j
    @user-we3ii5ux8j 2 года назад

    не могу скачать скеч

  • @user-tu9kk2jl5b
    @user-tu9kk2jl5b 2 года назад

    Привет, скажи пожалуйста, если я заменю nema 17 на фрезере ЧПУ, (поставлю усиленный) нужно будет менять настройки программы? (просто я дуб дубом в этой теме🙂

  • @fendyrony3264
    @fendyrony3264 2 года назад

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

    • @YourDuino
      @YourDuino  2 года назад +1

      Можно попробовать повесить на одну из обмоток датчик тока на ACS712, например такой www.yourduino.ru/product/gy-712-modul-datchika-toka-5a.
      И по его показаниям сделать нужную градацию и выводить на дисплей.

    • @fendyrony3264
      @fendyrony3264 2 года назад

      @@YourDuino Спасибо Вам за ответ. Буду пробовать.

  • @alexrex4272
    @alexrex4272 Год назад

    драйвер же могу 2208 использовать от принтера?

    • @YourDuino
      @YourDuino  Год назад

      Вполне, только распиновку проверять. Может отличаться.

  • @user-st8ij4ye8w
    @user-st8ij4ye8w 2 года назад +1

    Доброго времени! Подскажите начинающему. Вот есть два шд NEMA17 хотелось бы управлять ними джойстиком как бы по осям с изменением скорости вращения. Это реально?

    • @YourDuino
      @YourDuino  2 года назад +2

      Добрый день.
      Конечно возможно. Лазерные и фрезерные станки практически так и работают.
      Кстати, интересная идея для следующего видео!!!))) Спасибо!

    • @user-st8ij4ye8w
      @user-st8ij4ye8w 2 года назад

      @@YourDuino Спасибо большое!!! Буду оч ждать. Никак у меня ума не хватает сделать. Спасибо .

  • @user-iv7rc8jw5u
    @user-iv7rc8jw5u 2 года назад

    Здравствуйте. А какое максимальное напряжение на блоке питания? Я так понимаю до 15в?

    • @user-iv7rc8jw5u
      @user-iv7rc8jw5u 2 года назад

      Я имею ввиду на dc dc преобразователь

    • @YourDuino
      @YourDuino  2 года назад +1

      Там обычные AMS1115. Больше 12В не рекомендуется, хотя в даташите до 15В.

  • @alexrex4272
    @alexrex4272 Год назад

    подскажите пожалуйста))
    можно ли к этой схеме подключить еще один движок? что бы два движка управлялись одно ардуиной?
    можно ли сделать, что бы мотор поворачивался только тогда, когда я кручу энкодер? что бы на 1 шаг э\к был только 1 шаг мотора...

    • @YourDuino
      @YourDuino  Год назад +1

      Если требуется одновременное синхронное управление, то можно взять еще один драйвер и один движок и соединить параллельно пины управления драйверов.
      Чтобы поворачивать движок на 1 тик энкодера, правильней будет ловить прерывания энкодера и давать импульс на драйвер. Тогда все получится.

    • @alexrex4272
      @alexrex4272 Год назад

      @@YourDuino спасибо

  • @alexrex4272
    @alexrex4272 Год назад

    Именно 9 вольт надо или 12 можно?

    • @YourDuino
      @YourDuino  Год назад

      Напряжение определяется возможностями драйвера. Можно подавать и 12В. Для схемы питания, приведенной в видео, более 12В не рекомендуется, т.к. стабилизатор ардуины будет сильно греться.
      На DRV8825 можно до 45В подавать по даташиту, но тогда нужно менять схему питания. Схема, используемая в видео, самая простая и приведена больше в ознакомительных целях.

  • @TamepLAN
    @TamepLAN 2 года назад

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

    • @YourDuino
      @YourDuino  2 года назад

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

    • @YourDuino
      @YourDuino  2 года назад

      Еще можете попробовать добавить delayMicroseconds(5); после digitalWrite(STEP_PIN , LOW); в цикле do { } while (), который выдает импульсы на движок.

    • @TamepLAN
      @TamepLAN 2 года назад

      @@YourDuino спасибо, сейчас буду пробовать

    • @TamepLAN
      @TamepLAN 2 года назад

      @@YourDuino пока что это лучший результат, которого удалось достичь. Изменение диапазона особо ничего не изменило. Добавление задержки в цикле немного улучшили ситуацию, но незначительно. Как минимум, удалось добиться полных оборотов на 960. Другие значения - ещё хуже - оборотов нет. ruclips.net/video/1eSU9RNPv8c/видео.html

    • @YourDuino
      @YourDuino  2 года назад

      А потенциометром на драйвере ток обмоток регулировали?