Как подключить драйвер двигателя к ардуино

от admin

Motor Shield L293D

Один из самых простых и недорогих способов управления электродвигателями — это воспользоваться Motor Shield на базе L293D, который можно легко установить на плату Arduino UNO.

  1. Микросхемы L293D.
  2. Микросхема 74HC595.
  3. Выводы для подключения сервоприводов.
  4. Клемма для подключения электродвигателей (M1, M2, M3, M4).
  5. Клемма «EXT_PWR» , через которые можно запитать шилд, т.к. для работы моторов необходимо большее напряжение, чем напряжение от Arduino.
  6. Перемычка «PWR» , отвечающая за питание шилда.

Для питания Motor Shield L293D иным источником необходимо снять перемычку,
которая обозначена "PWR".

Motor Shield L293D построен на микросхеме L293D, состоящая из двух H-мост (H-Bridge), с помощью которых можно управлять двумя постоянными двигателями или одним шаговым двигателем. Каждый канал рассчитан на 0,6 А с пиком 1,2 А. Так как на Motor Shield L293D установлено две микросхемы L293D, можно управлять сразу четырьмя двигателями постоянного тока. Так же, на Motor Shield L293D установлена микросхема 74HC595, которая расширяет 4 цифровых контакта Arduino до 8 управляющих контактов двух микросхем L293D.

Основные технические параметры Motor Shield L293D:
  • 4-х канальное управление.
  • Напряжение питания двигателей — 5. 36 В.
  • Напряжение питания платы — 5 В.
  • Допустимый ток нагрузки — 600 мА на канал.
  • Максимальный (пиковый) ток нагрузки — 1,2 А на канал.
  • Размер платы — 70×54×20 мм.
  • Защита от перегрева
  • Контакт для дополнительного питания платы

На Motor Shield L293D находится светодиод, который светится только тогда, когда подсоединенные электромоторы запитаны. Если светодиод не светится, то электромоторы работать не будут, так как источника питания не хватает на работу моторов или его совсем нет.

Питание Motor Shield L293D можно осуществить двумя способами:

  1. Общий источник питания для Arduino и двигателей (максимальное напряжение 12 В) — можно использовать один источник питания, используется разъем DC на Arduino UNO или 2-х контактный разъем «EXT_PWR», так же необходимо установить перемычку «PWR».
  2. Раздельный источник питания — рекомендуется отдельно питать Arduino и шилд, для этого Arduino подключаем к USB, а двигатели подключаем к источнику постоянного тока, используя разъем «EXT_PWR». Необходимо убрать перемычку перемычку «PWR».

Внимание! Нельзя подавать питание на «EXT_PWR» выше 12 В при установленной перемычке «PWR».

Выходные контакты двух микросхем L293D выведены по бокам с помощью 5-ти контактных винтовых клемм, а именно М1, М2, М3 и М4. К этим контактам подключается четыре двигателя постоянного тока и два шаговых двигателя.

Так же, на shield выведен два 3-х контактных разъема, которым можно подключить два сервопривода.

Цифровые контакты D2 и D13 и аналоговые контакты A0-A5 не используются.

Для удобной работы с Motor shield L293D необходимо установить библиотеку «AFMotor.h».

Подключение к Arduino двигателя постоянного тока
с помощью Motor shield L293D

  • Arduino UNO R3 — 1 шт.
  • Блок питания 12В, 2А — 1 шт.
  • Кабель USB 2.0 A-B — 1 шт.
  • Двигатель постоянного тока — 1шт.
  • Motor shield L293D — 1шт.

Устанавливаем shield сверху Arduino, далее подключаем источник питания к клеммам «EXT_PWR», в примере используется источник питания на 9 В. Затем подключаем двигатели к клеммам М4.

Рис. 2 — Подключение одного двигателя постоянного тока к Arduino с помощью Motor Shield L293D

В скетче №1 показано, как управлять скоростью и направлением движении двигателями постоянного тока

Скетч №1

Скетч начитается с подключением библиотеки «AFMotor.h.», затем создаем объект «AF_DCMotor motor(4);» в котором указываем номер порта двигателя (M1, M2, M3, M4). Если необходимо подключить несколько двигателей, создайте отдельный объект «AF_DCMotor motor1(1);» и так далее.

В «void setup» мы вызываем функции «setSpeed(speed)» в которой задаем скорость двигателя, от 0 до 255 и функцию «motor.run» направление вращения двигателя, где «FORWARD» — вперед, «BACKWARD» — назад, «RELEASE» — остановка.

Рис. 3 — Подключение четырех двигателей постоянного тока к Arduino с помощью Motor Shield L293D

Ниже приведен пример (Скетч №2) управления четыремя двигателями постоянного тока.

Скетч №2

Подключение к Arduino шагового двигателя
с помощью Motor shield L293D

  • Arduino UNO R3 — 1 шт.
  • Блок питания 12В, 2А — 1 шт.
  • Кабель USB 2.0 A-B — 1 шт.
  • Шаговый двигатель — 1шт.
  • Motor shield L293D — 1шт.

Рассмотрим подключение шагового двигателя, который рассчитан на 12 В (и выше) и делает 200 шагов на оборот. Подключите шаговый двигатель к клеммам M3 и M4 (рис. 3). Затем подключите внешний источник питания 12 В к разъему «EXT_PWR«. Не забудьте удалить перемычку PWR.

Рис. 4 — Подключение шагового двигателя к Arduino с помощью Motor Shield L293D

Код для управления шаговым двигателем с помощью Motor Shield L293D приведен в скетче №3.

Скетч №3

Скетч начинается с подключением библиотеки «AFMotor.h».

Во второй строке создаем объект « AF_Stepper motor(200, 2); », где указываем количество шагов на оборот и номер порта.

В разделе настройки, функцией « motor.setSpeed(50); » устанавливает скорость двигателя, где «50» количество оборотов в минуту.

В разделе цикла программы вызываем функции для управления скоростью и направлением вращения двигателя:

  • 300 — количество шагов.
  • FORWARD , BACKWARD — направления вращение двигателем.
  • SINGLE — активация одной обмотки двигателя для совершения шага.
  • DOUBLE — активация двух обмоток двигателя, что обеспечивает больший вращающий момент
  • INTERLEAVE — применение ШИМ для управления шаговым двигателем двигателем.

Подключение к Arduino сервопривода
с помощью Motor shield L293D

  • Arduino UNO R3 — 1 шт.
  • Блок питания 12В, 2А — 1 шт.
  • Кабель USB 2.0 A-B — 1 шт.
  • Сервопривод— 1шт.
  • Motor shield L293D — 1шт.

На Motor shield L293D выведен 16-разрядные контакты Arduino 9 и 10, питание для сервоприводов подается от 5 вольтного стабилизатора Arduino, поэтому подключать дополнительное питание в разъем «EXT_PWR» не нужно.

Рис. 5 — Подключение сервопривода к Arduino с помощью Motor Shield L293D

Код для управления сервоприводом с помощью Motor Shield L293D приведен в скетче №4. Так как используется стандартный вывод, используем стандартную библиотеку Servo.

Ардуино: драйвер L298N для мотора постоянного тока

Чтобы управлять вращением мотора, любому контроллеру необходимо специальное устройство, которое часто называют драйвером (от англ. driver — водитель). В уроке «управление двигателем постоянного тока» мы уже пробовали запускать и вращать в разные стороны мотор двумя способами: с помощью одного транзистора и с помощью микросхемы драйвера L293D.

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

Драйвер мотора L298N

Как и в случае L293N, драйвер представляет собой полный H-мост, главная функция которого — менять полярность на нагрузке. А если в качестве нагрузки будет мотор постоянного тока, то смена полярности приведет к смене направления его вращения. Это то, что нам нужно.

Спецификация модуля L298N:

  • напряжение питания двигателей: до 35 В;
  • рабочий ток (на каждый канал): 2 А;
  • периодический ток (80% — вкл, 20% — выкл): 2,5 А;
  • кратковременный ток: 3 А;
  • вес: 33 г.

Драйвер L298N работает с более высоким током, чем L293D. С помощью L298N мы можем управлять и слабыми моторчиками типа n20 и мощными моторами, такими как JGA25 или даже JGA37 с крутящим моментом до 20-25 кг/см. Хватит для большинства DIY проектов!

Назначение элементов и контактов на плате драйвера L298N

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

Драйвер мотора L298N элементы

Логика микросхемы L298N питается напряжением 5 Вольт. Для этого на модуле предусмотрен стабилизатор напряжения 78M05. На вход этого стабилизатора можно подавать напряжение до 35 В, а на выходе всегда получается 5 В. Рабочий ток у 78M05 небольшой — до 500 мА. Однако, при желании, от него можно питать и саму плату Ардуино Уно, к которой мы будем подключать драйвер.

Тройная клемма снизу отвечает за питание модуля. Самый левый контакт — питание моторов. Сюда можно подавать до 35 В. Средний контакт — земля, которая должна быть общей для модуля и контроллера. Правый контакт имеет двоякую функцию. Если на модуле стоит перемычка питания стабилизатора, то на этом контакте будет +5В и к нему можно ничего не подключать, либо питать от него контроллер. Но если перемычку убрать, то к этому контакту нужно будет непременно подключить +5В от контроллера, чтобы питать драйвер. В нашем примере мы будем ориентироваться именно на вариант без перемычки.

Две другие винтовые клеммы (OUT1/2 и OUT 3/4) служат для подключения моторов. Надо отметить, что моторы постоянного тока неполярные, но от того на какой контакт мотора подается плюс, а на какой минус, зависит направление их вращения.

Наконец, осталось разобраться с контактами управления. Их по три штуки на каждый мотор. Контакты ENA и ENB позволяют управлять моторами с помощью ШИМ сигнала. Если ENA и ENB подключить строго к +5 В, то моторы будут всегда вращаться с максимальной возможной скоростью. Именно для этого режима на модуле предусмотрены две перемычки рядом с ENA и ENB.

С помощью контактов IN1,IN2,IN3,IN4 задаётся режим работы моторов. Таблица режимов для двигателя A имеет вид:

Режим IN1 IN2
Вращение в одну сторону 1 0
Вращение в обратную сторону 0 1
Блокировка мотора 1 1
Отключение мотора 0 0

Тут следует пояснить последние два режима. Если нам необходимо резко остановить мотор, то выбираем режим блокировки. Для плавной остановки — выбираем «отключение мотора»

Подключение драйвера L298N к Ардуино Уно

Чтобы попробовать драйвер в деле, подключим его к контроллеру Ардуино Уно и к любому, попавшему под руку, небольшому мотору постоянного тока. В данном уроке мы используем самый простой мотор с напряжением питания 1,5-3 Вольта. Для питания этого мотора нам будет достаточно двух пальчиковых батареек. В такой схеме просто невозможно запитать микросхему драйвера от встроенного стабилизатора, поэтому питание +5В будем брать от Ардуино.

Также отметим, что при данной схеме подключения с внешним питанием +5 В, нам нужно убрать соответствующую перемычку, о которой мы говорили выше (перемычка питания от стабилизатора)!

Читать:
Как перевести омы в килоомы

Ну и раз уж мы планируем управлять скоростью вращения, уберем перемычку с контакта ENA.

Принципиальная схема

Схема подключения L298N к Ардуино

Внешний вид макета

Схема подключения L298N к Ардуино

Программа для драйвера мотора L298N

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

Загружаем программу на Ардуино, затем подключаем к драйверу элементы питания и смотрим как ведёт себя моторчик.

Следует отметить, что данная программа не гарантирует вращение мотора с какой-то конкретной скоростью. Мы лишь можем менять мощность, передаваемую на мотор, с помощью изменения коэффициента заполнения ШИМ сигнала (duty cycle). Подробнее о ШИМ сигнале можно узнать в одном из наших уроков.

Заключение

Итак, модуль драйвера L298N оказался не таким сложным, как могло показаться. Все драйверы имеют практически схожие контакты управления: EN,IN1,IN2. Бывает, что отдельный вход EN отсутствует, и тогда ШИМ сигнал подается на IN1,IN2. Разобравшись с одним драйвером, мы можем с легкостью применять в своих проектах и другие модели.

Как уже было написано, L298N является достаточно мощным чтобы потянуть большинство моторов, применяемых в DIY проектах. Это и популярные пластиковые желтые моторы с редуктором и более мощные металлические JGA25 и JGA37.

Отдельно следует отметить и ещё одно распространенное применение L298N. С помощью этого драйвера можно управлять биполярными шаговыми двигателями, хотя и не настолько эффективно, как это делают специализированные драйвера типа A4988.

Урок 2. Как подключить A4988 (DRV8825) к Arduino? Скетч, библиотека.

Сегодня в уроке подключим драйвер шагового двигателя A4988 (DRV8825) к Arduino. Рассмотрим самый простой скетч (код,) который позволит вращать шаговым двигателем по часовой и против часовой стрелке.

Что такое шаговый двигатель? Описание драйвера шагового двигателя A4988 и описание драйвера шагового двигателя DRV8825, а также много другой полезной информации по ЧПУ станкам и 3D принтерам, вы сможете найти на моем втором сайте ЧПУ технологии (CNC-tex.ru).

Сегодня в уроке подключим драйвер шагового двигателя A4988 (DRV8825) к Arduino.

Схема подключения драйвера шагового двигателя A4988 (DRV8825).

Для тех, кому лень сходить на мой второй сайт по ЧПУ станкам, выкладываю схемы подключения драйверов A4988 (DRV8825) к Arduino.

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

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

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

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

Внимание! Для корректной работы шагового двигателя для драйвера необходимо настроить ток. Как рассчитать ток для драйвера A4988 читайте тут, для драйвера DRV8825 читайте тут. Также при необходимости установите радиатор охлаждения драйвера.

Подключение драйвера шагового двигателя A4988 и DRV8825 с помощью модуля.

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

Подключение драйвера шагового двигателя A4988 и DRV8825 с помощью модуля.

Внимание! При установке драйвера на модуль будьте осторожны.Драйвер может сгореть, если не правильно установить его на модуль.

Подключение драйвера шагового двигателя A4988 и DRV8825 с помощью модуля.

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

Код для Arduino и A4988 (DRV8825),который позволяет вращать шаговым двигателем без библиотеки.

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

Пояснение к коду:

Скетч начинается с определения выводов Arduino, к которым подключены выводы STEP и DIR драйвера A4988. Здесь также определяем stepsPerRevolution – количество шагов на оборот. Установите данное значение в соответствии со спецификациями шагового двигателя 200 (поскольку NEMA 17 делает 200 шагов за оборот).

В разделе настройки кода setup(), все контакты управления двигателем объявлены как цифровой выход ( OUTPUT ).

В основном цикле loop() будем медленно вращать двигатель по часовой стрелке, а затем быстро вращать его против часовой стрелки, с интервалом в секунду.

Управление направлением вращения.

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

Управление скоростью шагового двигателя.

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

Код для Arduino управления драйвером A4988 (DRV8825)с использованием библиотеки AccelStepper.

Управление шаговым двигателем без библиотеки идеально подходит для простых проектов на Arduino с одним двигателем. Но если вы хотите управлять несколькими шаговыми двигателями, вам понадобится библиотека. Итак, для нашего следующего примера будем использовать библиотеку шаговых двигателей под названием AccelStepper library.

AccelStepper library поддерживает.

Ускорение и замедление. Несколько одновременных шаговых двигателей с независимыми одновременными шагами на каждом шаговом двигателе. Эта библиотека не включена в IDE Arduino, поэтому вам необходимо сначала установить ее.

Установка библиотеки AccelStepper.

Чтобы установить библиотеку, перейдите в «Скетч» -> «Подключить библиотеку» -> «Управление» библиотеками. Подождите, пока диспетчер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Установка библиотеки AccelStepper.

Отфильтруйте свой поиск, набрав «Accelstepper». Щелкните первую запись и выберите «Установка».

Отфильтруйте свой поиск, набрав «Accelstepper».

Код Arduino с использованием библиотеки AccelStepper.

Вот простой пример, который ускоряет шаговый двигатель в одном направлении, а затем замедляется до полной остановки. Как только двигатель делает один оборот, меняет направление вращения. Данный цикл повторяется снова и снова.

Пояснение к коду:

Подключаем библиотеку AccelStepper.

Дальше определяем выводы Arduino, к которым подключаются выводы STEP и DIR A4988. Мы также устанавливаем motorInterfaceType на 1. (1 означает внешний шаговый драйвер с выводами Step и Direction).

Затем мы создаем экземпляр библиотеки под названием myStepper .

В функции настройки мы сначала устанавливаем максимальную скорость двигателя равной тысяче. Затем мы устанавливаем коэффициент ускорения для двигателя, чтобы добавить ускорение и замедление к движениям шагового двигателя. Дальше устанавливаем обычную скорость 200 и количество шагов, которое мы собираемся переместить, например, 200 (поскольку NEMA 17 делает 200 шагов за оборот).

В основном цикле loop() используем оператор if , чтобы проверить, как далеко двигателю нужно проехать (путем чтения свойства distanceToGo ), пока он не достигнет целевой позиции (установленной moveTo ). Как только distanceToGo достигнет нуля, поменяем направление вращения двигателя в противоположном направлении, изменив значение moveTo на отрицательное по отношению к его текущему значению. Теперь вы заметите, что в конце цикла мы вызвали функцию run () . Это самая важная функция, потому что шаговый двигатель не будет работать, пока эта функция не будет выполнена.

Это небольшой пример использования библиотеки AccelStepper. В следующем уроке подробнее рассмотрим данную библиотеку и сделаем пару классных примеров использования шаговых двигателей в Arduino проектах.

Это небольшой пример использования библиотеки AccelStepper.

Понравился Урок 2. Как подключить A4988 (DRV8825) к Arduino? Скетч, библиотека? Не забудь поделиться с друзьями в соц. сетях.

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

Arduino UNO урок 13 — драйвер двигателя L298N

Микросхема L298N представляет собой сдвоенный мостовой драйвер двигателей и предназначена для управления DC и шаговыми двигателями. Данная микросхема находит очень широкое применение в роботостроительстве. Одна микросхема L298N способна управлять двумя двигателями и обеспечивает максимальную нагрузку до 2А на каждый двигатель, а если задействовать параллельное включение для одного двигателя, то можно поднять максимальный ток до 4А.

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

Сами модули на микросхемах L298N выглядят так:

L298N

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

Схема модуля на L298N

Шилд имеет следующие пины подключения:
Vcc — подключение внешнего питания двигателей
+5 — питание логики
GND — общий
IN1, IN2, IN3, IN4 (разъем P4 на схеме) — входы управления двигателями
OUT1, OUT2 (разъем P2 на схеме) — выход первого двигателя
OUT3, OUT4 (разъем P3 на схеме) — выход второго двигателя
Выключатель S1 служит для переключения питания логической части микросхемы. Т.е. при включенном S1 питание логической части берется от внутреннего преобразователя модуля. При выключенном S1 питание берется от внешнего источника.
На модулях также присутствуют перемычки ENA и ENB для разрешения включения двигателей. Если необходимо, их можно также подключить к Arduino и задействовать, но это лишние 2 провода и в этих входах нет особого смысла.

Раписновка шилда L298N

ШИМ управление позволяет плавно изменять скорость вращение двигателя. Если нам не нужно ШИМ управление, то на соответствующий вход нужно просто подать логическую 1. На какой именно вход IN1 или IN2 вы подадите сигнал ШИМ, либо направление вращения — разницы не имеет. Тоже самое справедливо и для входов IN3, IN4.

Схема подключения шилда L298N к контроллеру Arduino:

Схема подключения модуля L298N

Для питания логической части схемы необходимо нажать кнопку или вставить перемычку (зависит от типа модуля). Если же на вашем модуле не предусмотрен преобразователь 5В, то дополнительно, необходимо соединить вывод 5V от Arduino к входу +5 шилда.
Как видно из схемы выше, 2 и 4 вывод используются для установки направления движения, а 3 и 5 для ШИМ управления выводами.

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

Похожие публикации