Wabashpress.ru

Техника Гидропрессы
15 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Драйвер шагового двигателя своими руками

Драйвер шагового двигателя своими руками

Шаговый двигатель используется в машинах для точного перемещения. Наладим управление шаговым двигателем через USB с компьютера своими руками. Нам потребуется:

1) Шаговый двигатель, возьмем — Nema23 76 мм, вместо него может быть другой, управлять будем биполяным методом, любой гибридный и биполярный шаговый двигатель будет работать с таким же управлением.

2) Блок питания, возьмем — импульсный блок питания мощностью 360W с выходным напряжением 24V / 15A, может использоваться любой другой блок питания, если будет достаточно мощности и напряжения для работы двигателя. Более мощному двигателю будет нужно больше напряжения. Предел напряжения нашего драйвера ограничивается максимальным напряжением, которое выдерживают транзисторы, это 100V, у нас блок питания на 24V. В случае большего напряжения транзисторы в схеме необходимо заменить на более мощные, также при увеличении напряжения, транзисторы могут начать греться, если такое случилось, необходимо дополнительно обдувать их куллером (у меня все в порядке и куллер не требуется). Для подключения блока питания к сети 220V также нужен шнур и нужно определить где в вашей розетке ноль, а где фаза. Контакт блока N подключается к нулю, а L к фазе, также можно подключить заземление (но не обязательно). Определение возможно при помощи индикаторной отвертки, у меня определилось, что слева ноль, а справа фаза.

Nema 17 купить

Импульсн. блок питания купить

Шнур с вилкой купить

Индикаторная отвертка купить

Соединитель Nema 17 купить

Как крутить шаговый двигатель

Шаговый двигатель работает от подачи комбинаций напряжения в разных направлениях на его обмотки, у этого шагового двигателя 2 обмотки — 4 провода, первая обмотка — черный (A) и зеленый (A*) провод, вторая обмотка — красный (B) и синий (B*). За одну смену комбинаций делается 1 шаг — 1,8 градусов. Если комбинации быстро менять, то двигатель будет быстро и точно позиционироваться — крутиться. Смена комбинаций возможна в двух направлениях, соответственно двигатель будет крутиться вперед или назад.

Чтобы крутить шаговый двигатель, надо:

1) Собрать устройство — USB контроллер шагового двигателя на микроконтроллере AVR и драйвер шагового двигателя, 2 в 1. Перед тем как собирать это сложное устройство, рекомендую сначало отдельно собрать и проверить работу только USB контроллера, его я уже собрал вот тут — контроллер USB. Если USB связь работает нормально, то можно приступать к изготовлению драйвера.

2) Написать программу для компьютера, которая будет посылать USB команды устройству.

3) Написать программу для микроконтроллера AVR, которая будет принимать USB команды и крутить двигатель.

USB контроллер шаговых двигателей и USB драйвер шагового двигателя

Взятый нами двигатель является гибридным и поддерживает несколько вариантов управления. Управлять двигателем будем биполярным методом и соответственно собираем мы драйвер биполярного шагового двигателя с USB контроллером. Сначало покажу готовый результат, а потом подробно рассмотрим его. Вот фото собранного драйвера шагового двигателя с USB управлением, который я собрал:

Драйвер шагового двигателя с USB управлением своими руками

Схема драйвера биполярного шагового двигателя и USB контроллера (схема длинная и нуждается в прокрутке для просмотра):

Драйвер шагового двигателя USB на микроконтроллере AVR своими руками

Драйвер шагового двигателя USB на микроконтроллере AVR своими руками - схема своими руками

ATmega16A купить

Драйвер IR2101 купить

Транзистор IRF540N купить

Диод Зенера 3V6 купить

Диод 1n4148 купить

Конденсатор 20 pF купить

Конденсатор 3.3 nF купить

Кварцевый генератор 12 купить

Конденсатор 2A104J купить

Клеммник купить

Резистор 68 Ом купить

Резистор 1.5 кОм купить

Резистор 100 Ом купить

Резистор 10 Ом купить

Резистор 0.1 Ом купить

Кабель USB купить

Макетная плата купить

Проводки купить

Набор проводков купить

Дополнительно нужно (нет в наличии):

1) Модуль питания DC-DC SMAU01L-12 (вместо него пойдет любой конвертер DC-DC с 5V до 10V-15V) — 1 шт., возможно можно без него, от 5V питать (не проверено)

Главным компонентом схемы является программируемый микроконтроллер AVR — ATmega16A, если вы не знаете как с ними работать (записывать программу), сначало ознакомьтесь с основами такой работы, которые подробно описаны в первой статье
управление машиной. Для устройства можно использовать и другой микроконтроллер AVR, я выбрал ATmega16A, т.к. в нем с запасом имеется много памяти и контактов для подключения нескольких двигателей и большого количества рабочих инструментов.

Слева от ATmega16A находятся компоненты для организации связи по протоколу USB — к выводам XTAL подключен внешний кварцевый резонатор с USB-совместимой частотой 12 МГц. Для сглаживания сигнала у него есть 2 конденсатора по 20 пФ, все это соединяется с минусом питания. К контактам, через которые идет обмен сообщениями с USB, подключены 2 резистора по 68 Ом, как того требует протокол USB. Резистор на 1.5 кОм, подключенный к D- линии задает низкоскоростной режим работы USB устройства. Диоды Зенера 3V6 понижают напряжение на линиях, через которые идет обмен данными USB с 5 до 3.6V.

Управление двигателем подключается к контактам PB0, PB1, PB2, PB3, на остальные свободные P-контакты можно в будующем подключить еще двигатели и рабочие инструменты, но пока они пустуют. Микроконтроллер ATmega16 отдает команды и обрабатывает USB сигналы после того как в него записана программа (ниже она будет написана). После него идет конструкция из микросхем IR2102 и транзисторов IRF540N (2 так называемых H-моста) — она приводит шаговый двигатель в движение.

Драйвер IR2101 нужен для преодаления большой емкости затвора транзистора IRF540N, что позволяет открывать и закрыть транзистор с большой скоростью (например принимать сигнал ШИМ, которым может регулироваться скорость двигателя при необходимости — об этом сигнале дальше напишу), что нам и нужно. К сожалению для питания этого драйвера необходимо 10-15V, у нас есть только 5V от USB. Поэтому пришлось поставить компонент DC-DC SMAU01L-12, который преобразует 5V в 12V, вместо него можно использовать любой другой способ получения такого напряжения, например, при помощи трансформатора или любым другим путем. К VCC подключается +12V, к COM -12V. Один драйвер работает с 2мя транзисторами — верхним (H) и нижним (L). Контакты HIN и LIN — входной сигнал с микроконтроллера для верхнего и нижнего транзистора, по этому сигналу транзисторы открываются и закрываются. HO и LO — это выходные сигналы, транзисторы подключаются гейтами (G) к этим контактам. Они подключаются не просто так — справа на линиях 2 резистора 10/100 Ом и диод, они нужны для нормальной работы транзисторов — чтобы они замедлялись при открытии и не замедлялись при закрытии, эти транзисторы слишком быстро открываются и это может вызвать проблемы. Диод и конденсаторы 3300 пФ — нужны для работы драйвера IR2101 согласно документации на эту микросхему.

Читайте так же:
Уровень масла в червячном редукторе

Каждая обмотка (фаза) двигателя (у двигателя 2 обмотки A и B — 4 контакта) подключается к H-мосту из транзисторов IRF540N. H-мост — это специальная схема соединения транзисторов, которая позволяет подавать через них напряжение высокого уровня (24V) в разных направлениях. Один мост изготавливается из 4-х транзисторов. В итоге здесь вы видите 2 H-моста, которые позволяют гонять разнонаправленное напряжение высокого уровня по 2м обмоткам двигателя и тем самым крутить его.

Обратите внимание, что в мосту — HIN верхнего драйвера соединяется с LIN нижнего драйвера, а LIN верхнего с HIN нижнего. Это сделано для одновременной подачи сигналов. Если вы включили HIN сверху, то обязаны включить LIN с низу, иначе произойдет короткое замыкание. Такое подключение позволяет автоматом включать пару. Впрочем короткое замыкание все же возможно, если вы откроете и HIN и LIN на одном мосте, поэтому не допускайте этого. На контактах PB0 — PB3 допустимы только значения 0000, 1010, 0110, 0101, 1001. Их перебор крутит двигатель. Подача других значений скорей всего приведет к короткому замыканию моста.

Мощные резисторы с низким номиналом 0.1 Ом и высокой мощностью (3-5 Вт) нужны для защиты от высокого тока — это шунты. Если что их можно снять и заменить простым соединением с минусом питания, если например не будет хватать мощности. Для слабых резисторов мощность берется от тока USB: 0.05 А * 5 V = 0.25 Вт (ток USB задается программно, по умолчанию в нашей программе стоит 0.05). Черная полоска на диодах соответствует вертикальной линии на схеме.

Шаговый двигатель и блок питания подключаются к H-мостам, как показано на схеме. Минусы питания 24V, 12V и 5V соединяются. Между плюсом и минусом 24V линии ставится сглаживающий пленочный конденсатор.

Драйвер шагового двигателя A4988.

Драйвер шагового двигателя A4988 является электронным устройством, которое заставляет вращаться шаговый двигатель, путем совершение шагов. Данное устройство незаменимо при разработке высокоточных ЧПУ станков и 3D принтеров.

Применение драйвера для шагового двигателя A4988.

Применение драйвера для шагового двигателя A4988.

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

  • Шаговый двигатель быстро стартует, останавливается и совершает реверс.
  • Высокая точность перемещения и позиционирования.
  • Позволяет позиционировать без применения обратной связи.
  • Большой диапазон изменения скорости.
  • Возможность обеспечивать низкую скорость вращения без применения редуктора.

Спектр применения шаговых двигателей очень большой. Вы пользуетесь офисной техникой и не подозреваете, что управляет вашим ксероксом, принтером, факсом, 3D принтером шаговые двигатели.

Управляет шаговым двигателем драйвер. Driver с английского языка «водитель». Одним из недорогих драйверов, и в связи с этим достаточно популярным, является драйвер A4988. Модуль A4988 имеет защиту от перегрузки и перегрева. Одним из параметров шаговых двигателей является количество шагов на один оборот 360°. Например, для шаговых двигателей Nema17 это 200 шагов на оборот, т.е 1 шаг равен 1.8°. Драйвер A4988 позволяет увеличить это значение за счёт возможности управления промежуточными шагами и имеет пять режимов микрошага (1(полный), 1/2, 1/4, 1/8 и 1/16).

Технические характеристики A4988

Технические характеристики A4988.
  • напряжение питания: 8-35 v
  • режим деления шага: 1, 1/2, 1/4, 1/8, 1/16
  • логическое напряжение: 3-5.5 В
  • защита от перегрева
  • максимальный фазный ток: — 1 А без радиатора; — 2 А с радиатором
  • габариты драйвера: 20 х 15 х 10 мм;
  • габариты радиатора: 9 х 5 х 9 мм;
  • вес с радиатором: 3 г;
  • вес без радиатора: 2 г

Распиновка драйвера A4988.

Распиновка драйвера A4988.

Драйвер A4988 имеет всего 16 контактов, которые позволяют управлять шаговыми двигателями. Распиновка у A4988 следующая:

Назначение контактов драйвера A4988.

Назначение контактов драйвера A4988.

  • ENABLE – включение/выключение драйвера
  • MS1,MS2,MS3 – контакты для установки микрошага
  • RESET — сброс микросхемы
  • STEP — генерация импульсов для движения двигателей (каждый импульс – шаг), можно регулировать скорость двигателя
  • DIR – установка направления вращения
  • VMOT – питание для двигателя (8 – 35 В)
  • GND – общий
  • 2B, 2A, 1A, 1B – контакты для подключения обмоток двигателя
  • VDD – напряжение питания микросхемы (3.5 –5В)
Выводы выбора микрошага.

Драйвер A4988 допускает использование режима микрошага. Это достигается за счет подачи питания на катушки с промежуточными уровнями тока.

Например, если вы решите управлять шаговым двигателем NEMA 17 с шагом 1,8 градуса (200 шагов на оборот) в режиме 1/4 шага, то двигатель будет выдавать 800 микрошагов на оборот.

Драйвер A4988 допускает использование режима микрошага.

Драйвер A4988 имеет три вывода селектора размера шага (разрешения), а именно: MS1, MS2 и MS3. Установив соответствующие логические уровни на эти контакты, мы можем настроить двигатели на одно из пятиступенчатых разрешений.

Выводы выбора микрошага драйвер A4988.

Выводы выбора микрошага драйвер A4988.

По умолчанию эти три контакта подтянуты к земле внутренним резистором. Если мы оставим эти выводы не подключенными, то двигатель будет работать в режиме полного шага.

Выводы управления.

Драйвер A4988 имеет два управляющих вывода, а именно: STEP и DIR.

Драйвер A4988 имеет два управляющих вывода, а именно: STEP и DIR.

STEP — управляет микрошагом мотора. Каждыйвысокий импульс, отправляемый на этот вывод, приводит двигатель в действие на количество микрошагов, заданное выводами Microstep Selection (MS1, MS2 и MS3). Чем быстрее импульсы, тем быстрее будет вращаться двигатель.

DIR — управляет направлением вращения двигателя. Если на него подать высокий уровень, то двигатель будет вращаться по часовой стрелке, а если низкий — против часовой стрелки.

Если вы просто хотите, чтобы двигатель вращался только в одном направлении, то вы можете соединить вывод DIR непосредственно с VCC или GND соответственно.

Выводы STEP и DIR не подтянуты внутренними резисторами, поэтому вы не должны оставлять их не подключенными.

Читайте так же:
Механизм для стяжного ремня
Выводы управления питанием A4988.

A4988 имеет три различных вывода для управления состоянием питания, а именно. EN, RST и SLP.

Выводы управления питанием A4988.

EN — вывод включения (0)/ выключения (1) драйвера A4988. По умолчанию на этом выводе установлен низкий уровень, поэтому драйвер всегда включен.

SLP — подача на данный вывод сигнала низкого уровня переводит драйвер в спящий режим, сводя к минимуму потребление энергии. Вы можете использовать этодля экономии энергии.

RST — при подаче сигнала низкого уровня все входные данные STEP игнорируются, до тех пор, пока не будет установлен высокий уровень. Низкий уровень также сбрасывает драйвер, устанавливая внутренний транслятор в предопределенное состояние Home. Исходное состояние — это в основном начальное положение, с которого запускается двигатель, и оно различается в зависимости от разрешения микрошага.

Выводы для подключения шагового двигателя.

Выходные контакты: 1B, 1A, 2A и 2B.

Выводы для подключения шагового двигателя.

К этим выводам можно подключить любой биполярный шаговый двигатель с напряжением питания от 8 до 35 В.

Каждый выходной контакт модуля может обеспечить ток до 2 А. Однако величина тока, подаваемого на двигатель, зависит от источника питания системы, системы охлаждения и настройки ограничения тока.

Система охлаждения — радиатор.

Чрезмерное рассеивание мощности микросхемы драйвера A4988 приводит к повышению температуры, которая может выйти за пределы возможностей микросхемы, что, вероятно, приведет к ее повреждению.

Система охлаждения — радиатор.

Даже если микросхема драйвера A4988 имеет максимальный номинальный ток 2 А на катушку, микросхема может подавать только около 1 А на катушку без перегрева.

Для достижения более 1 А на катушку требуется радиатор или другой метод охлаждения.

Драйвер A4988 обычно поставляется с радиатором. Желательно установить его перед использованием драйвера.

Ограничение тока.

Перед использованием драйвера нам нужно сделать небольшую настройку. Для этого нужно ограничить максимальный ток, протекающий через катушки шагового двигателя, и предотвратить превышение номинального тока двигателя.

На драйвере A4988 есть небольшой потенциометр, который можно использовать для установки ограничения тока.

На драйвере A4988 есть небольшой потенциометр, который можно использовать для установки ограничения тока. Вы должны установить ограничение по току равным или ниже номинального тока двигателя.

Расчет и установка ограничещего тока драйвер шагового двигателя A4988.

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

  • Взгляните на техническое описание вашего шагового двигателя. Запишите его номинальный ток. Для примера расчета будем использовать NEMA 17 200 шагов/об, 12 В 350 мА.
  • Переведите драйвер в полношаговый режим, оставив три контакта выбора микрошага отключенными.
  • Удерживайте двигатель в фиксированном положении, не синхронизируя вход STEP.
  • Во время регулировки измерьте напряжение Vref (один щуп мультиметра на минус питания, а другой к металлическому корпусу потенциометра).
  • Отрегулируйте напряжение Vref по формуле:

Vref = Imax * 8 * (RS)

Imax — ток двигателя;

RS — сопротивление резистора. В моем случае RS = 0,100.

Формула Vref для A4988 изменяется от номинала токочувствительных резисторов. Это два черных прямоугольника на плате драйвера. Обычно подписаны R050 или R100.

Формула Vref для A4988 изменяется от номинала токочувствительных резисторов. Это два черных прямоугольника на плате драйвера. Обычно подписаны R050 или R100.

  • Для 17HS4401 Vref = 1,7 * 8 * 0,100 = 1,36 В.

В связи с тем что рабочий ток двигателя равен 70% от тока удержания. Полученное значение нам нужно умножить на 0,7. В противном случае двигателя в режиме удержания будут сильно греться.

Для 17HS4401 Vref ист. = 1,36*0,7 = 0,952 В.

  • Аналогично можно рассчитать значения дляEM-181

Vref = 1,2 * 8 * 0,100 = 0,96 В

Vrefист. = ,96*0,7 = 0 ,672 В.

Электроника для ЧПУ станков, в которой можно использовать драйвер шагового двигателя A4988.

Драйвер шагового двигателя A4988 можно подключить к микроконтроллеру, например к Arduino, напрямую.

Драйвер шагового двигателя A4988 можно подключить к микроконтроллеру, например к Arduino, напрямую.

Скетч вращения шагового двигателя NEMA 17, драйвер A4988.

Программа для вращения шагового двигателя NEMA 17, драйвер A4988. Сначала мотор совершает полный оборот в одну сторону, потом в другую.

Подробнее о подключении шаговых двигателей к Ardiono смотрите на сайте Ардуино технологии.

Для более простого подключения шагового двигателя к Arduino или другому микроконтроллеру существуют модули. Модули бывают разные, на фото ниже приведен пример двух различных модулей.

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

Распиновку и как подключать модуль драйвера A4988 будем рассматривать в следующей статье.

Использование драйвера A4988 с CNC shield v3 и CNC shield v4.

Драйвер A4988 можно установить на CNC shield v3 и CNC shield v4. CNC shield используются для управления ЧПУ станками и облегчают сборку электроники.

Драйвер A4988 можно установить на CNC shield v3 и CNC shield v4

Данный набор позволяет без пайки собрать электронику для двух осевых, трех осевых, четырех осевых ЧПУ станков, а также для самостоятельной сборки 3D принтеров. При реализации ЧПУ станков данные шилды используются достаточно часто благодаря своей низкой цене и простоте сборки.

Более подробно CNC shield v3 и CNC shield v4

Более подробно CNC shield v3 и CNC shield v4 будем рассматривать в следующих статьях.

Мы еще не рассмотрели использование данных драйверов для создания 3D принтеров на основе Ramps. Но это совсем другая история.

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

Понравился Драйвер шагового двигателя A4988? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Шаговые двигатели и моторы Ардуино 28BYJ-48 с драйвером ULN2003

В этой статье мы поговорим о шаговых двигателях в проектах Ардуино на примере очень популярной модели 28BYJ-48. Так же как и сервоприводы, шаговые моторы являются крайне важным элементом автоматизированных систем и робототехники. Их можно найти во многих устройствах рядом: от CD-привода до 3D-принтера или робота-манипулятора. В этой статье вы найдете описание схемы работы шаговых двигателей, пример подключения к Arduino с помощью драйверов на базе ULN2003 и примеры скетчей с использованием стандартной библиотеки Stepper.

Шаговый двигатель – принцип работы

Схема шагового двигателя

Шаговый двигатель – это мотор, перемещающий свой вал в зависимости от заданных в программе микроконтроллера шагов и направления. Подобные устройства чаще всего используются в робототехнике, принтерах, манипуляторах, различных станках и прочих электронных приборах. Большим преимуществом шаговых двигателей над двигателями постоянного вращения является обеспечение точного углового позиционирования ротора. Также в шаговых двигателях имеется возможность быстрого старта, остановки, реверса.

Читайте так же:
Уфо для домашнего применения

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

Основные виды шаговых моторов:

  • Двигатели с переменными магнитами (применяются довольно редко);
  • Двигатели с постоянными магнитами;
  • Гибридные двигатели (более сложные в изготовлении, стоят дороже, но являются самым распространенным видом шаговых двигателей).

Где купить шаговый двигатель

Самые простые двигатели Варианты на сайте AliExpress:

Драйвер для управления шаговым двигателем

Драйвер – это устройство, которое связывает контроллер и шаговый двигатель. Для управления биполярным шаговым двигателем чаще всего используется драйверы L298N и ULN2003.

Работа двигателя в биполярном режиме имеет несколько преимуществ:

  • Увеличение крутящего момента на 40% по сравнению с униполярными двигателями;
  • Возможность применения двигателей с любой конфигурацией фазной обмотки.

Но существенным минусов в биполярном режиме является сложность самого драйвера. Драйвер униполярного привода требует всего 4 транзисторных ключа, для обеспечения работы драйвера биполярного привода требуется более сложная схема. С каждой обмоткой отдельно нужно проводить различные действия – подключение к источнику питания, отключение. Для такой коммутации используется схема-мост с четырьмя ключами.

Драйвер шагового двигателя на базе L298N

Этот мостовой драйвер управляет двигателем с током до 2 А и питанием до 46В. Модуль на основе драйвера L298N состоит из микросхемы L298N, системы охлаждения, клеммных колодок, разъемов для подключения сигналов, стабилизатора напряжения и защитных диодов.

Драйвер двигателя L298N

Драйвер шагового двигателя ULN2003

Описание драйвера шаговых двигателей UNL2003

Шаговые двигателями с модулями драйверов на базе ULN2003 – частые гости в мастерских Ардуино благодаря своей дешевизне и доступности. Как правило, за это приходится платить не очень высокой надежностью и точностью.

Другие драйвера

Существует другой вид драйверов – STEP/DIR драйверы. Это аппаратные модули, которые работают по протоколу STEP/DIR для связи с микроконтроллером. STEP/DIR драйверы расширяют возможности:

  • Они позволяют стабилизировать фазные токи;
  • Возможность установки микрошагового режима;
  • Обеспечение защиты ключа от замыкания;
  • Защита от перегрева;
  • Оптоизоляция сигнала управления, высокая защищенность от помех.

В STEP/DIR драйверах используется 3 сигнала:

  • STEP – импульс, который инициирует поворот на шаг/часть шага в зависимости от режима. От частоты следования импульсов будет определяться скорость вращения двигателя.
  • DIR – сигнал, который задает направление вращения. Обычно при подаче высокого сигнала производится вращение по часовой стрелке. Этот тип сигнала формируется перед импульсом STEP.
  • ENABLE – разрешение/запрет работы драйвера. С помощью этого сигнала можно остановить работу двигателя в режиме без тока удержания.

Одним из самых недорогих STEP/DIR драйверов является модуль TB6560-V2. Этот драйвер обеспечивает все необходимые функции и режимы.

Подключение шагового двигателя к Ардуино

Подключение будет рассмотрено на примере униполярного двигателя 28BYj-48 и драйверов L298 и ULN2003. В качестве платы будет использоваться Arduino Uno.

Подключение шагового двигателя к Ардуино

Еще один вариант схемы с использованием L298:

Подключение шагового двигателя к Ардуино на базе L298

Схема подключения на базе ULN2003 изображена на рисунке ниже. Управляющие выходы с драйвера IN1-IN4 подключаются к любым цифровым контактам на Ардуино. В данном случае используются цифровые контакты 8-11. Питание подключается к 5В. Также для двигателя желательно использовать отдельный источник питания, чтобы не перегрелась плата Ардуино.

Подключение шагового двигателя

Принципиальная схема подключения.

Принципиальная схема подключения шагового двигателя

Еще одна схема подключения биполярного шагового двигателя Nema17 через драйвер L298 выглядит следующим образом.

Подключение биполярного двигателя

Обзор основных моделей шаговых двигателей для ардуино

Nema 17 – биполярный шаговый двигатель, который чаще всего используется в 3D принтерах и ЧПУ станках. Серия 170хHSхххА мотора является универсальной.

Nema-17

Основные характеристики двигателя:

  • Угловой шаг 1,8°, то есть на 1 оборот приходится 200 шагов;
  • Двигатель – двухфазный;
  • Рабочие температуры от -20С до 85С;
  • Номинальный ток 1,7А;
  • Момент удержания 2,8 кг х см;
  • Оснащен фланцем 42 мм для легкого и качественного монтажа;
  • Высокий крутящий момент – 5,5 кг х см.

28BYJ-48 – униполярный шаговый двигатель. Используется в небольших проектах роботов, сервоприводных устройствах, радиоуправляемых приборах.

28BYJ-48

  • Номинальное питание – 5В;
  • 4-х фазный двигатель, 5 проводов;
  • Число шагов: 64;
  • Угол шага 5,625°;
  • Скорость вращения: 15 оборотов в секунду
  • Крутящий момент 450 г/сантиметр;
  • Сопротивление постоянного тока 50Ω ± 7% (25 ℃).

Описание библиотеки для работы с шаговым двигателем

В среде разработки Ардуино IDE существует стандартная библиотека Strepper.h для написания программ шаговых двигателей. Основные функции в этой библиотеке:

  • Stepper(количество шагов, номера контактов). Эта функция создает объект Stepper, которая соответствует подключенному к плате Ардуино двигателю. Аргумент – контакты на плате, к которым подключается двигатель, и количество шагов, которые совершаются для полного оборота вокруг своей оси. Информацию о количестве шагов можно посмотреть в документации к мотору. Вместо количества шагов может быть указан угол, который составляет один шаг. Для определения числа шагов, нужно разделить 360 градусов на это число.
  • Set Speed(long rpms) – функция, в которой указывается скорость вращения. Аргументом является положительное целое число, в котором указано количество оборотов в минуту. Задается после функции Step().
  • Step(Steps) –поворот на указанное количество шагов. Аргументом может быть либо положительное число – поворот двигателя по часовой стрелке, либо отрицательное – против часовой стрелки.

Пример скетча для управления

В наборе примеров библиотеки Stepper.h существует программа stepper_oneRevolution, в которой задаются все параметры для шагового двигателя – количество шагов, скорость, поворот.

Заключение

В этой статье мы с вами узнали, что такое шаговый двигатель, как можно его подключить к ардуино, что такое драйвер шагового двигателя. Мы также рассмотрели пример написания скетча, использующего встроенную библиотеку Stepper. Как видим, ничего особенно сложного в работе с шаговыми моторами нет и мы рекомендуем вам обязательно поэкспериментировать самостоятельно и попробовать включить его в своих проектах Arduino.

Читайте так же:
Подключение кнопки перфоратора с реверсом

Библиотека для шагового двигателя Arduino v2.2.0

Для подключения шаговых моторов к Arduino нужно использовать драйверы. Очень дешёвые и популярные моторы 28byj-48-5v часто продаются вместе со своим драйвером (транзисторная сборка ULN2003), подключить можно к любым 4-м пинам Ардуино и использовать.

Для работы с большими шаговиками (типа Nema 17) нужно использовать специализированные драйверы, ниже вы найдёте описания и схемы подключения для A4988, DRV8825 и TMC2208, драйверы такого формата подключаются и работают практически одинаково, т.к. разработаны для CNC шилдов и взаимозаменяемы. У этих драйверов нужно настроить ток при помощи крутилки на плате. Это можно сделать “на глаз”, заставив мотор вращаться и регулируя крутилку. Мотор должен вращаться, но не вибрировать как перфоратор и сильно не нагреваться. Лучше настроить ток по опорному напряжению Vref, у каждого драйвера оно считается по своей формуле (см. картинки ниже). Берём ток своего мотора из описания, подставляем в формулу вместо current, считаем, и накручиваем полученное напряжение крутилкой. Для измерения опорного напряжения нужно подключить щупы вольтметра к самой крутилке и пину GND.

Главное преимущество дорогущих драйверов TMC – отсутствие шума/свиста/вибраций при работе, так как драйвер своими силами интерполирует сигнал до микрошага 1/256.

БИБЛИОТЕКА

GyverStepper v2.2.0

Производительная библиотека для управления шаговыми моторами с Arduino

  • Поддержка 4х пинового (шаг и полушаг) и STEP-DIR драйверов
  • Автоматическое отключение питания при достижении цели
  • Режимы работы:
    • Вращение с заданной скоростью. Плавный разгон и торможение с ускорением
    • Следование к позиции с ускорением и ограничением скорости
    • Следование к позиции с заданной скоростью (без ускорения)
    Совместимость

    Совместима со всеми Arduino платформами (используются Arduino-функции)

    УСТАНОВКА

    • Библиотеку можно найти и установить через менеджер библиотек по названию GyverStepper в:
      • Arduino IDE (Инструменты/Управлять библиотеками)
      • Arduino IDE v2 (вкладка “Library Manager”)
      • PlatformIO (PIO Home, вкладка “Libraries”)

      ДОКУМЕНТАЦИЯ

      Аааа почему так много всего?!
      Библиотека содержит набор инструментов для разных сценариев работы с шаговыми моторами

      • StepperCore.h [класс Stepper]: ядро всех остальных классов, умеет быстро щёлкать пинами (AVR) и делать один шаг для настроенного типа драйвера. Поддерживает 4 фазы шаг/полушаг, а также step-dir драйверы.
      • GyverStepper.h [класс GStepper]: основная тяжёлая библиотека, много настроек. Движение одного мотора с ускорением к заданной позиции или вращение с заданной скоростью. Не очень оптимальная работа в прерывании таймера.
      • GyverStepper2.h [класс GStepper2]: новая облегченная версия GyverStepper, практически полностью с ней совместима. Более оптимальный целочисленный гибридный алгоритм движения с ускорением, лёгкий вес. Оптимизировано для работы в прерывании таймера.
      • GyverPlanner.h [класс GPlanner]: многоосевой планировщик траектории, движение с ускорением (2 порядок). Остановка в каждой точке. Оптимальная работа в прерывании таймера.
      • GyverPlanner2.h [класс GPlanner2]: многоосевой планировщик траектории, движение с ускорением (2 порядок). Планирование скорости на маршруте, оптимальное движение по точкам. Оптимальная работа в прерывании таймера.

      Инициализация

      • STEPPER2WIRE — специализированный 2-х проводной драйвер для шагового мотора с протоколом STEP-DIR, например A4988, DRV8825, TMC2208 и прочие.
      • STEPPER4WIRE и STEPPER4WIRE_HALF — 4-х проводной драйвер, т.е. полномостовой (например L298N) или транзисторная сборка (например ULN2003).
        • STEPPER4WIRE управляет мотором в полношаговом режиме (выше скорость и момент).
        • STEPPER4WIRE_HALF — в полушаговом (меньше скорость и момент, но больше шагов на оборот и выше точность).
        • GStepper stepper(steps, step, dir); // драйвер step-dir
        • GStepper stepper(steps, step, dir, en); // драйвер step-dir + пин enable
        • GStepper stepper(steps, a1, a2, b1, b2); // драйвер 4 пин
        • GStepper stepper(steps, a1, a2, b1, b2, en); // драйвер 4 пин + enable
        • GStepper stepper(steps, a1, a2, b1, b2); // драйвер 4 пин полушаг
        • GStepper stepper(steps, a1, a2, b1, b2, en); // драйвер 4 пин полушаг + enable
        • Пример 1: есть мотор NEMA 17, он имеет 200 полных шагов на оборот (по документации). Подключен через драйвер с настроенным микрошагом 1/16. При создании объекта библиотеки нужно указать 200*16 шагов.
        • Пример 2: есть мотор 28byj-48-5v, имеет 32 полных шага на оборот и редуктор с соотношением 63.68395:1. Подключен через микросхему ULN2003. Итоговое количество шагов на оборот составляет 63.68395*32 == 2038 для режима полного шага ( STEPPER4WIRE ).
        • Пример 3: подключим тот же самый мотор 28byj-48-5v, но в режиме полушага ( STEPPER4WIRE_HALF ). Количество шагов на оборот удвоится (32*2 == 64) и, с учётом редуктора, станет равным 4076 .

        Время шага [NEW!]

        • A4988 — 1 мкс
        • DRV8825 — 4 мкс
        • TB6500 — 1 мкс

        Медленные скорости (new!)

        Тик и тайминги

        Смена направления

        Режимы работы

        • FOLLOW_POS — режим плавного движения к заданной позиции с ускорением и ограничением скорости.
        • KEEP_SPEED — режим вращения с заданной скоростью (знак скорости задаёт направление вращения).

        Режим FOLLOW_POS

        • setTarget(pos) — установка абсолютной целевой позиции в шагах, принимает положительные и отрицательные значения (тип данных long ).
        • setTarget(pos, type) — то же самое, но можно указать тип позиции type — абсолютная ABSOLUTE или относительная RELATIVE .
        • setTargetDeg(pos) — установка абсолютной целевой позиции в градусах, принимает положительные и отрицательные дробные значения (тип данных float ).
        • setTargetDeg(pos, type) — то же самое, но можно указать тип позиции type — абсолютная ABSOLUTE или относительная RELATIVE .
        • getTarget() — возвращает тип данных long
        • getTargetDeg() — возвращает тип данных float
        • setMaxSpeed(speed) — установка максимальной скорости по модулю в шагах/секунду, тип данных float . По умолчанию 300.
        • setMaxSpeedDeg(speed) — установка максимальной скорости по модулю в градусах/секунду, тип данных float .
        • setAcceleration(accel) — установка ускорения по модулю в шагах/сек/сек, тип данных float . По умолчанию 300.
        • setAccelerationDeg(accel) — установка ускорения по модулю в градусах/сек/сек, тип данных float .
        • setCurrent(long pos);
        • setCurrentDeg(float pos);
        • getCurrent();
        • getCurrentDeg();

        Режим KEEP_SPEED

        • setSpeed(speed) — в шагах/секунду, положительные и отрицательные целые значения, тип данных float .
        • setSpeedDeg(speed) — в градусах/секунду, положительные и отрицательные дробные значения, тип данных float .
        • setSpeed(speed, smooth) — в шагах/секунду, положительные и отрицательные целые значения, тип данных float . smooth — SMOOTH или NO_SMOOTH
        • setSpeedDeg(speed, smooth) — в градусах/секунду, положительные и отрицательные дробные значения, тип данных float . smooth — SMOOTH или NO_SMOOTH
        • getSpeed() — возвращает тип данных float
        • getSpeedDeg() — возвращает тип данных float

        Алгоритм планировщика скорости

        • Мой алгоритм: скорость планируется с фиксированным периодом, что сильно разгружает процессор и позволяет работать на скоростях до 30’000 шагов в секунду (полностью загрузив процессор) без наличия посторонних задержек в коде. Сильная экономия процессорного времени оставляет возможность спокойно выполнять параллельно другой код и управлять несколькими моторами в разных режимах на хороших скоростях, и «ещё останется». Немного «резковат» при торможении. Активен по умолчанию.
        • Модифицированный алгоритм из библиотеки AccelStepper: скорость планируется каждый шаг, что очень сильно нагружает процессор и ограничивает скорость до 7’000 шагов в секунду (полностью загрузив процессор) без наличия посторонних задержек в коде (в оригинальной библиотеке — 5’000 шагов/сек). Разгоняется и тормозит максимально плавно. Для активации нужно прописать дефайн #define SMOOTH_ALGORITHM перед подключением библиотеки в коде (см. пример smoothAlgorithm) или раскомментировать данный дефайн в файле библиотеки GyverStepper.h, находится сразу после описания.

        Остановка и сброс

        • stop() — плавная остановка с заданным в setAcceleration() ускорением от текущего положения мотора. Можно вызвать в режиме KEEP_SPEED для плавной остановки вращения! Смотри пример accelDeccelButton
        • brake() — резкая остановка мотора. Если активен autoPower(true) — мотор будет отключен.
        • reset() — brake() + сброс текущей позиции в 0 . Удобно для остановки и калибровки начала координат по концевику (смотри пример endSwitch).

        Управление питанием

        GStepper2, GPlanner и GPlanner2 являются нововведениями в библиотеке и работают чуть иначе, больше ориентированы на движение от точки к точке.

        Быстрый профиль скорости (NEW!)

        С версии 2.2.0 в GStepper2, GPlanner и GPlanner2 появился новый алгоритм планирования профиля скорости. Для его активации нужно прописать дефайн GS_FAST_PROFILE перед подключением библиотеки:

        #define GS_FAST_PROFILE количество

        Где количество — количество отрезков, на которые будет разбит участок разгона/торможения. На этих отрезках скорость будет одинаковой, то есть мотор будет разгоняться и тормозить «ступенчато». Чем больше отрезков — тем плавнее будет движение, в принципе можно ставить 10. Каждый отрезок добавляет 8 байт SRAM на экземпляр класса.

        Зачем это нужно? Данный алгоритм заранее вычисляет скорость во всех точках траектории и не пересчитывает её на каждом шаге, что сильно снижает нагрузку на процессор и позволяет двигаться на участке разгона/торможения со скоростью до 30’000 шагов в секунду!

        Изменение скорости/ускорения

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

        Тикер

        Движение мотора происходит внутри tick() , который нужно вызывать как можно чаще, например в loop() (или yield() , если в коде есть delay() ) tick() имеет встроенный таймер на micros() и крутит мотор с нужной скоростью.

        Также есть не имеющий таймера tickManual() , который делает шаг, считает период и проверяет, не доехал ли мотор до цели. Его нужно вызывать с периодом, который можно получить из getPeriod() в микросекундах.

        getPeriod() получает новое значение периода после очередного вызова tickManual() . Конструкция для работы в прерывании таймера может выглядеть так:

        Здесь setPeriod() и stopTimer() — функции смены периода и остановки аппаратного таймера, реализация функций зависит от применяемой платформы и/или библиотек. Пока мотор крутится — таймер перезапускается на новый период, как только мотор приехал — останавливаем таймер.

        Режим постоянной скорости

        Для запуска режима вращения с постоянной скоростью достаточно вызвать setSpeed(скорость) / setSpeedDeg(скорость) . Скорость может быть отрицательной. Остановить мотор можно при помощи brake() . В данной реализации скорость не меняется плавно, то есть включается сразу на заданную и тормозится в 0 при остановке. В реальном применении этого достаточно для движения к концевику (см. пример homing для всех трёх классов).

        Режим движения к позиции

        При помощи setMaxSpeed() / setMaxSpeedDeg() задаётся максимальная скорость, которой может достигнуть мотор (суммарная квадратичная скорость по осям для GPlanner) во время движения к следующей точке. Эта настройка не имеет отношения к режиму вращения.

        При помощи setAcceleration() можно задать ускорение в шагах/секунду^2, с которым будет меняться скорость. Если поставить ускорение 0 — мотор будет двигаться без ускорения, т.е. сразу с максимальной скоростью.

        Для старта движения к позиции достаточно вызвать setTarget(позиция) / setTargetDeg(позиция) (кроме GPlanner2). После выполнения этой функции можно запросить у getPeriod() время до следующего тика и запустить таймер, если мотор работает в прерывании.

        Если мотор находится в активном режиме движения к позиции и доезжает до цели — функция ready() однократно вернёт true . В примерах к библиотеке по этому условию «загружается» следующая точка траектории.

        Во время движения к позиции можно остановиться:

        • brake() — резко остановит мотор
        • stop() — плавно остановит мотор с заданным ускорением
        • pause() — мотор доедет до заданной позиции, но ready() не вернёт true

        Для возобновления движения можно вызвать resume() , траектория мотора будет пересчитана и он двинется к последней заданной в setTarget() позиции.

        Текущую позицию мотора (моторов, для GPlanner) можно прочитать как getCurrent() , установить через setCurrent() , а также сбросить в 0 через reset() .

        GPlanner2 работает чуть иначе, так как содержит буфер траектории. Подробнее о нём читайте ниже

        голоса
        Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector