L293 схема подключения шагового двигателя
#33. Motor shield l293d подключение. Пример кода для Arduino
Робототехника с каждым годом становиться все популярнее. И поэтому количество электроники с помощью которой можно реализовать роботизированную модель достаточно много. А если у вас нет опыта работы с электроникой, вам отлично подойдёт Motor shield на базе драйвера l293d. Шилд устанавливается на плату Arduino UNO.
На shield выведены контакты для подключения двигателей постоянного тока, шаговых двигателей и сервоприводов. Я уже делал проект с использованием данного Motor shield. У вас, наверное, возник вопрос. Если шилд такой простой, почему у меня мало Arduino проектов с его использование? Это связанно со сложностью расширения функционала проекта при использовании Motor shield l293d. Но обо всём по порядку.
Технические параметры Motor shield l293d.
- Напряжение питания двигателей: 5 — 36 В
- Напряжение питания платы: 5 В
- Допустимый ток нагрузки: 600 мА на канал
- Максимальный (пиковый) ток нагрузки: 1,2 А на канал
- Размер платы: 70х54х20 мм
Общие сведения о Motor shield L293D.
Motor shield построен на драйвере L293D, состоящим из двух H-мост (H-Bridge), с помощью которых можно управлять двумя постоянными двигателями или одним шаговым двигателем. Каждый канал рассчитан на 0.6 А с пиком 1.2 А. Так как на Motor shield установлено две микросхемы L293D, можно управлять сразу четырьмя двигателями постоянного тока, это позволяет использовать данный shield в разработке робот платформ. Так же, на shield установлен сдвиговый регистр 74HC595, который расширяет 4 цифровых контакта Arduino до 8 управляющих контактов двух микросхем L293D. Познакомиться подробнее со сдвиговым регистром 74HC595 можно в уроке: Урок 2 — Подключаем сдвиговый регистр 74НС595 к Arduino. «Бегущие» огни.
Питание Motor shield L293D:
- Общий источник питания для Arduino и двигателей (максимальное напряжение 12 В) — можно использовать один источник питания, используется разъем DC на Arduino UNO или 2-х контактный разъем на Motor shield «EXT_PWR», так же необходимо установить перемычку «PWR».
- Раздельный источник питания — рекомендуется отдельно питать Arduino и shield, для этого Arduino подключаем к USB, а двигатели подключаем к источнику постоянного тока, используя разъем «EXT_PWR». Необходимо убрать перемычку «PWR».
Внимание! Нельзя подавать питание на «EXT_PWR» выше 12 В, при установленной перемычке «PWR».
Выходные контакты двух микросхем L293D выведены по бокам shield с помощью 5-ти контактных винтовых клемм, а именно М1 , М2 , М3 и М4. К этим контактам подключается четыре двигателя постоянного тока и два шаговых двигателя.
Так же, на shield выведено два 3-х контактных разъема, к которым можно подключить два сервопривода.
Контакты, которые не используются Motor shield L293D:
Так как шилд устанавливается на Arduino UNO, есть контакты, которые не используются Motor shield и к ним можно подключить дополнительные компоненты. Это цифровые контакты D2 и D13 и аналоговые контакты A0-A5. Кроме этого на шилде можно распаять пины A0-A5 и подключаться к ним прямо на shield.
Подключение к Motor shield L293D двигателя постоянного тока.
Для этого нам понадобятся следующие комплектующие:
Схема подключения двигателя постоянного тока к Motor shield.
Устанавливаем shield сверху Arduino, далее подключаем источник питания к клеммам «EXT_PWR», в примере используется источник питания на 12 В. Теперь подключаем двигатели к клеммам M1, M2, M3 или M4. В примере подключаем 2 двигателя постоянного тока к М4, М3.
Установка библиотеки «AFMotor.h»
Для удобной работы с Motor shield L293D, необходимо установить библиотеку «AFMotor.h». Заходим в Arduino IDE, открываем вкладку «Скетч -> Подключить библиотеку -> Управлять библиотеками…»
Откроется новое окно «Менеджер библиотек», в окне поиска вводим «Adafruit Motor Shield» и устанавливаем библиотеку.
Скетч управления двигателем постоянного тока с помощью Motor shield L293D.
Скетч начинается с подключения библиотеки «AFMotor.h», затем создаем объект «AF_DCMotor motor4(4)» в котором указываем номер порта двигателя (M1, M2, M3, M4). Для подключения второго двигателя «AF_DCMotor motor3(3)» и так далее.
В блоке «setup» мы вызываем функции «setSpeed(speed)» в которой задаем скорость двигателя, от 0 до 255 и функцию «motor.run» направление вращения двигателя, где «FORWARD» — вперед, «BACKWARD» — назад, «RELEASE» — остановка.
Подключение сервопривода к Motor shield L293D.
Для этого нам понадобятся следующие комплектующие:
С помощью shield L293D можно управлять сервоприводами. На shield выведены 16-разрядные контакты Arduino 9 и 10, питание для сервоприводов подается от 5 вольтового стабилизатора Arduino, поэтому подключать дополнительное питание в разъем «EXT_PWR» не нужно.
Схема подключения сервопривода SG90S к Motor shield.
Скетч управления сервопривода SG90S.
Так как используется стандартный вывод PWM, нет смысла использовать дополнительную библиотеку, воспользуемся стандартной библиотекой Servo.
Подключение к Motor shield L293D шагового двигателя NEMO17.
Для этого нам понадобятся следующие комплектующие:
В данном примере подключим шаговый двигатель NEMA 17, который рассчитан на 12 В (и выше) и делает 200 шагов на оборот. Итак, подключите шаговый двигатель к клеммам M3 и M4. Затем подключите внешний источник питания 12 В к разъему «EXT_PWR».
Схема подключения шагового двигателя Nemo17 к Motor shield L293D.
Скетч управления шаговым двигателем Nemo17 с помощью Motor shield L293D.
Используем ту же библиотеку, что и в первом примере.
Описание кода:
Скетч начинается с подключением библиотеки «AFMotor.h». Во второй строке создаем объект «AF_Stepper motor(48, 2)» где указываем количество шагов на оборот и номер порта.
В разделе настройки, функцией «motor.setSpeed(10);» устанавливает скорость двигателя, где «10» количество оборотов в минуту.
В разделе цикла программы, мы просто вызываем две функции для управления скоростью и направлением вращения двигателя.
- «100» — это сколько шагов, необходимо сделать.
- «FORWARD»и «BACKWARD»— направление вращение двигателем.
- «SINGLE» — активация одной обмотки двигателя для совершения шага.
- «DOUBLE» — активация двух обмоток двигателя, что обеспечивает больший вращающий момент
- «INTERLEAVE» — применение ШИМ для управления шаговым двигателем двигателем.
Вывод по использованию Motor shield L293D.
Для начинающего Ардуинщика Motor shield L293D позволит реализовать роботизированную модель. Но реализовать более серьёзные проекты не получится. Так как свободных pin для подключения остается не много. Что еще мне не нравится в данном shield это то, что пины для shield заняты всегда, даже если мы подключили 2 двигателя постоянного тока. А другая пара подключения свободна, пины Arduino все равно будут заняты, и мы не сможем их использовать. Это наглядный пример того, что использования данного шилда не является универсальным и гибким решением.
Появились вопросы или предложения, не стесняйся, пиши в комментарии!
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке.
Понравилась статья? Поделитесь ею с друзьями:
Motor Shield L293 Технические характеристики
- Евгения Некрасова 4 лет назад Просмотров:
1 Motor Shield L293 Motor Shield (далее M Shield) силовой модуль управления двигателями для микроконтроллеров серии Freeduino/Arduino. Модуль предназначен для упрощения разработки моторизированных и робототехнических устройств. Модуль существует в двух версиях: v2 со штыревыми компонентами, и пришедшая ей на замену v3 с поверхностным монтажом компонентов и дополнительным функционалом. Модуль подключается к Freeduino с помощью установленных на нем разъемов. Обновленная версия M- Shield v3: Технические возможности M Shield позволяют реализовать разнообразные проекты, связанные с подключением и управлением слаботочными двигателями следующих типов: четырёх двигателей постоянного тока (ДПТ — DC motors); двух шаговых двигателей униполярных или биполярных с одинарной или двойной обмоткой (ШД — stepper motors); двух 5В сервоприводов (СП — servos). Возможны следующие комбинации подключаемых к M shield двигателей: 2 СП + 4 ДПТ; 2 СП + 2 ШД; 2 СП + комбинации ШД и ДПТ, например: возможен вариант замены 1 ШД на 2 ДПТ или наоборот. Обновленная версия v3 может быть переключена в режим, совместимый с аппаратным SPI (а значит и с модулями типа Ethernet Shield), в котором не используются выводы 10, 11, 12, 13. Также, для v3 возможно простое подключение к базовой плате в формате Nano. Технические характеристики напряжение питания: В; количество силовых каналов: 4; максимально-продолжительный ток каждого канала: 0,6 А;
2 напряжение питания сервоприводов: 5 В; возможность реверса каждого двигателя; возможность независимого управления каждым каналом; модуль полностью совместим со всеми известными моделями Freeduino/Arduino: MaxSerial, Through-Hole, Diecimila, 2009, Duemilanove, а также Arduino Mega. Версия v3 может удобно стыковаться с Freeduino/Arduino Nano. Драйвер двигателей L293D Управление двигателями осуществляется двумя микросхемами L293D. Каждая микросхема это четырёхканальный драйвер со встроенными обратными диодами для защиты микросхемы от перенапряжений при работе на индуктивную нагрузку. Драйверы управляются парами, что позволяет реализовать на одной микросхеме два двуполярных канала управления с ШИМ управлением. Основные характеристики микросхемы: напряжение питания: +4, В; максимальный продолжительный ток в каждом канале: 0,6 А; максимальный пиковый ( 3 В настоящей версии M Shield v2 верхнее значение напряжения питания ограничено используемыми электролитическими конденсаторами на максимальное напряжение 25 В и может быть увеличено до максимального для микросхемы L293D значения 36 В заменой конденсаторов С7 и С8. Особенности версии v3 Обновленная версия v3 модуля M-Shield в основном подобна предыдущей версии v2, но выполнена с применением поверхностного монтажа. Первое важное отличие возможность работы в режиме совместимости с аппаратным SPI. Оригинальный модуль от Adafruit Industries, как и версия M-Shield v2, в числе прочих задействует вывод 12 для управления микросхемой 74HCT595 и вывод 11 для ШИМ, и поэтому несовместимы с аппаратным SPI, и в частности с Ethernet Shield. В версии v3 можно с помощью перемычек вместо вывода 12 использовать вывод 2, а вместо вывода 11 вывод 9. В таком режиме возможно совместное использование модуля M-Shield и Ethernet Shield, но нужно отметить, что выведенные на модуле штыревые разъемы для сервоприводов уже недоступны, т.к. один из них находится на занятом выводе 9, а второй на используемом SPI выводе 10. Данный модифицированный режим работы требует изменений в управляющей библиотеке. Нами модифицирована библиотека AFMotor- 08_12_2009, но ее работа протестирована только в режимах управления двигателями постоянного тока. Второе отличие версии v3 возможность стыковки не только с полноразмерной Arduino платой, но и с платами в формате Nano. В законченных решениях можно даже впаять плату Freeduino Nano вместо гнезд, и получить очень компактное устройство. Важно только не перепутать ориентацию платы.
4 Важно отметить, что модуль не может использоваться как полноценный переходник с формата Nano наполноразмерный формат Arduino, т.к. между разъемами Nano и Arduino разведены только используемые M-Shield выводы. В комплект поставки входит M-Shield v3, разъемы Arduino Nano и разъемы «классической» Arduino. При заказе монтажа соответствующие разъемы монтируются. Если монтаж разъемов не заказывать, то принеобходимости их можно будет смонтировать самостоятельно. Библиотека AFMotor Существует удобная библиотека, упрощающая работу с модулем M-Shield, скачать которую можно с сайта Разработчика Управление двигателями постоянного тока Для управления двигателями постоянного тока используется класс AF_DCMotor. Ниже рассмотрены его основные методы и приведены примеры работы. Определение параметров двигателя Убедитесь, что параметры двигателя номинальное напряжение и ток соответствуют используемому источнику питания и параметрам M-Shield. Если потребляемый двигателем ток превышает номинальное для драйвера L293D значение в 0,6 А, можно увеличить значение продолжительного тока до 1,2 А путем параллельного подключения двигателя одновременно к двум портам, например к М1 и М2 и составлением соответствующего алгоритма правления. Кроме того, с целью увеличения допустимой токовой нагрузки в два раза, можно напаять на микросхему
5 L293D «нога к ноге» ещё одну L293D, это позволит управлять более мощными двигателями с максимальнопродолжительным током в каждом канале управления до 1,2 А. Вы также можете использовать две платы M-Shield, установив одну в разъемы другой, и подключив каждый двигатель к одноименным каналам обеих плат. Подключение двигателей постоянного тока Расположенные на плате M-Shield 5-контактные клеммники предназначены для подключения двигателей. Центральный контакт каждого клеммника «земля», двигатели постоянного тока подключаются к крайним парам контактов, обозначенных по номерам каналов M1, M2, M3, M4. AF_DCMotor конструктор объекта AF_DCMotor имя_объекта(номер_канала); Создает экземпляр класса AF_DCMotor, принимает номер канала После создания объекта можно вызывать его методы. Метод AF_DCMotor::setSpeed имя_объекта.setspeed(скважность) Задает скважность ШИМ на канале в диапазоне от 0 до 255. Значение 0 соответствует напряжению 0 В на двигателе, значение 255 полному напряжению питания. Метод AF_DCMotor::run имя_объекта.run(направление) Задает направление движения двигателя (полярность прикладываемого напряжения). Параметр «направление» может принимать одно из следующих значений: FORWARD прямое направление вращения BACKWARD обратное направление вращения RELEASE остановка двигателя Пример управления двигателями постоянного тока Ниже приведен пример простой программы, осуществляющей ступенчатое изменение скорости вращения двигателя с интервалами в 3 секунды в следующей последовательности: +50, +75%, +50%, STOP, -50%, — 75%, -50%, STOP. После завершения цикл будет повторяться. #include //Подключаем заголовочный файл библиотеки //Создаем объект для двигателя на 1 канале (M1) AF_DCMotor motor(1); void setup() < >void loop() < //Задаем направление движение вперед motor.run(forward); //Устанавливаем скорость 50% motor.setspeed(128); //пауза 3 секунды - двигатель крутится //увеличиваем скорость до 75%, и пауза 3 сек. motor.setspeed(192);
6 //Снижаем скорость до 50%, и пауза 3 сек. motor.setspeed(128); //Останавливаем двигатель, и пауза 3 сек. motor.run(release); //Переключаем направление вращения //Двигатель начнет вращаться со скоростью 50% motor.run(backward); //пауза 3 секунды — двигатель крутится //увеличиваем скорость до 75%, и пауза 3 сек. motor.setspeed(192); //Снижаем скорость до 50%, и пауза 3 сек. motor.setspeed(128); //Останавливаем двигатель, и пауза 3 сек. motor.run(release); > Управление шаговыми двигателями Благодаря тому, что вращение ротора осуществляется фиксированными шагами, без необходимости обратной связи по положению, шаговые двигатели часто применяются в различных устройствах и механизмах. Подключение шаговых двигателей M-Shield поддерживает одновременное подключение двух шаговых двигателей. Управление шаговыми двигателями осуществляется с помощью той же библиотеки AFMotor, что и для работы с двигателями постоянного тока. Для подключения однополярного шагового двигателя к M-shield необходимо определиться, какой из выводов двигателя подключен к его соответствующей обмотке. Если у двигателя пять выводов, то один из них является средней точкой двух его обмоток, которая подключается к электрической цепи GND модуля. Остальные выводы это начало, и конец обмоток, которые подключаются к портам M-shield: M1 и M2 или к M3 и M4. Подключение двуполярного шагового двигателя к M-Shield производится аналогично однополярному за исключением того, что у него отсутствует вывод средней точки обмоток двигателя. AF_Stepper конструктор объекта AF_Stepper имя_объекта(число шагов, канал); Создает экземпляр класса AF_Stepper, принимает число шагов на один оборот двигателя и номер канала. При подключении двигателя к портам M1 и M2 указывайте 1 в качестве номера канала, при подключении к
7 портам M3 и M4 указывайте 2. Метод AF_Stepper::setSpeed задание скорости имя_объекта.setspeed(скорость) Задает частоту вращения ротора в оборотах в минуту. При указании частоты вращения больше рекомендованной для используемого двигателя с учетом напряжения питания и момента сопротивления на валу, возможно пропускание двигателем шагов. Метод AF_DCMotor::step вращение на нужное число шагов имя_объекта.step(число шагов, направление, тип шага) число шагов требуемое число шагов; направление либо FORWARD (вперед), либо BACKWARD (назад); тип шага один из 4 вариантов: SINGLE, DOUBLE. INTERLEAVE или MICROSTEP. SINGLE активация одной обмотки двигателя для совершения шага; DOUBLE активация двух обмоток двигателя, что обеспечивает больший вращающий момент; INTERLEAVE чередование между SINGLE и DOUBLE режимом, с двойной точностью и половинной скоростью вращения. MICROSTEP применение ШИМ для управления шаговым двигателем двигателем. Задает направление движения двигателя (полярность прикладываемого напряжения). Параметр «направление» может принимать одно из следующих значений: FORWARD прямое направление вращения BACKWARD обратное направление вращения RELEASE остановка двигателя Метод AF_Stepper::release отключение двигателя имя_объекта.release () По умолчанию шаговый двигатель удерживает свое положение после завершения шага, однако вызов release() отключает обмотки двигателя для осуществления свободного вращения ротора. Пример управления шаговым двигателем Ниже приведен пример простой программы, осуществляющей управление шаговым двигателем ST28, подключенным к портам M3 и M4 модуля. У шагового двигателя ST28 32 шага на оборот, а также встроенный редуктор с передаточным числом 64, что дает 32*64=2048 шагов двигателя на один оборот выходного вала. В приведенном примере осуществляется поворот на один оборот в прямом направлении в режиме SINGLE, на один оборот в обратном в режиме DOUBLE, на пол-оборота в прямом направлении в режиме INTERLEAVE, и на пол-оборота в обратном в режиме MICROSTEP.
РАЗРАБОТКА РОБОТА НА ОСНОВЕ УЛЬТРАЗВУКОВОГО ДАЛЬНОМЕРА.
РАЗРАБОТКА РОБОТА НА ОСНОВЕ УЛЬТРАЗВУКОВОГО ДАЛЬНОМЕРА. Ташев А.А., гр. 31-АП Рук. Фёдоров Т.В., к.т.н., доц. «АВТОПЛАСТ» ФГБОУ ВПО «Госуниверситет УНПК» В данной статье описывается управление приводами
Драйверы двигателя L298N, L293D и Arduino Motor Shield
Драйвер двигателя выполняет крайне важную роль в проектах ардуино, использующих двигатели постоянного тока или шаговые двигатели. C помощью микросхемы драйвера или готового шилда motor shield можно создавать мобильных роботов, автономные автомобили на ардуино и другие устройства с механическими модулями. В этой статье мы рассмотрим подключение к ардуино популярных драйверов двигателей на базе микросхем L298N и L293D.
Драйвер двигателя в проектах ардуино
Для чего нужен драйвер двигателя?
Как известно, плата ардуино имеет существенные ограничения по силе тока присоединенной к ней нагрузки. Для платы это 800 mA, а для каждого отдельного вывода – и того меньше, 40mA. Мы не можем подключить напрямую к Arduino Uno, Mega или Nano даже самый маленький двигатель постоянного тока. Любой из этих двигателей в момент запуска или остановки создаст пиковые броски тока, превышающие этот предел.
Как же тогда подключить двигатель к ардуино? Есть несколько вариантов действий:
Использовать реле. Мы включаем двигатель в отдельную электрическую сеть, никак не связанную с платой Arduino. Реле по команде ардуино замыкает или размыкает контакты, тем самым включает или выключает ток. Соответственно, двигатель включается или выключается. Главным преимуществом этой схемы является ее простота и возможность использовать Главным недостатком данной схемы является то, что мы не можем управлять скоростью и направлением вращения.
Использовать силовой транзистор. В данном случае мы можем управлять током, проходящим через двигатель, а значит, можем управлять скоростью вращения шпинделя. Но для смены направления вращения этот способ не подойдет.
Использовать специальную схему подключения, называемую H-мостом, с помощью которой мы можем изменять направление движения шпинделя двигателя. Сегодня можно без проблем найти как микросхемы, содержащие два или больше H-моста, так и отдельные модули и платы расширения, построенные на этих микросхемах.
В этой статье мы рассмотрим последний, третий вариант, как наиболее гибкий и удобный для создания первых роботов на ардуино.
Микросхема или плата расширения Motor Shield
Motor Shield – плата расширения для Ардуино, которая обеспечивает работу двигателей постоянного тока и шаговых двигателей. Самыми популярными платами Motor Shield являются схемы на базе чипов L298N и L293D, которые могут управлять несколькими двигателями. На плате установлен комплект сквозных колодок Ардуино Rev3, позволяющие устанавливать другие платы расширения. Также на плате имеется возможность выбора источника напряжения – Motor Shield может питаться как от Ардуино, так и от внешнего источника. На плате имеется светодиод, который показывает, работает ли устройство. Все это делает использование драйвера очень простым и надежным – не нужно самим изобретать велосипеды и решать уже кем-то решенные проблемы. В этой статье мы будем говорить именно о шилдах.
Принцип действия H-моста
Принцип работы драйвера двигателя основан на принципе работы H-моста. H-мост является электронной схемой, которая состоит из четырех ключей с нагрузкой. Название моста появилось из напоминающей букву H конфигурации схемы.
Схема моста изображена на рисунке. Q1…Q4 0 полевые, биполярные или IGBT транзисторы. Последние используются в высоковольтных сетях. Биполярные транзисторы практически не используются, они могут присутствовать в маломощных схемах. Для больших токов берут полевые транзисторы с изолированным затвором. Ключи не должны быть замкнуты вместе одновременно, чтобы не произошло короткого замыкания источника. Диоды D1…D4 ограничительные, обычно используются диоды Шоттки.
С помощью изменения состояния ключей на H-мосте можно регулировать направление движения и тормозить моторы. В таблице приведены основные состояния и соответствующие им комбинации на пинах.
Q1 | Q2 | Q3 | Q4 | Состояние |
1 | 1 | Поворот мотора вправо | ||
1 | 1 | Поворот мотора влево | ||
Свободное вращение | ||||
1 | 1 | Торможение | ||
1 | 1 | Торможение | ||
1 | 1 | Короткое замыкание | ||
1 | 1 | Короткое замыкание |
Драйвер двигателя L298N
Модуль используется для управления шаговыми двигателями с напряжением от 5 до 35 В. При помощи одной платы L298N можно управлять сразу двумя двигателями. Наибольшая нагрузка, которую обеспечивает микросхема, достигает 2 А на каждый двигатель. Если подключить двигатели параллельно, это значение можно увеличить до 4 А.
Плата выглядит следующим образом:
Распиновка микросхемы L298N:
- Vcc – используется для подключения внешнего питания;
- 5В;
- Земля GND;
- IN1, IN2, IN3, IN4 – используется для плавного управления скоростью вращения мотора;
- OUT1, OUT2 – используется для выхода с первого двигателя;
- OUT3, OUT4 – используется для выхода со второго двигателя;
- S1 – переключает питание схемы: от внешнего источника или от внутреннего преобразователя;
- ENABLE A, B – требуются для раздельного управления каналами. Используются в двух режимах – активный, при котором каналами управляет микроконтроллер и имеется возможность изменения скорости вращения, и пассивный, в котором невозможно управлять скоростью двигателей (установлено максимальное значение).
При подключении двух двигателей, нужно проверить, чтобы у них была одинаковая полярность. Если полярность разная, то при задании направления движения они будут вращаться в противоположные стороны.
Драйвер двигателя L293D
L293D – является самой простой микросхемой для работы с двигателями. L293D обладает двумя H-моста, которые позволяют управлять двумя двигателями. Рабочее напряжение микросхемы – 36 В, рабочий ток достигает 600 мА. На двигатель L293D может подавать максимальный ток в 1,2 А.
В схеме имеется 16 выходов. Распиновка:
- +V – питание на 5 В;
- +Vmotor – напряжение питания для мотором до 36 В;
- 0V – земля;
- En1, En2 –включают и выключают H-мосты;
- In1, In2 – управляют первым H-мостом;
- Out1, Out2 – подключение первого H-моста;
- In3, In4 – управляют вторым H-мостом;
- Out3, Out4 – подключение второго H-моста.
Для подключения к микроконтроллеру Arduino Uno нужно соединить выходы In1 на L293D и 7 пин на Ардуино, In2 – 8, In3 – 2, In4 – 3, En1 – 6, En2 – 5, V – 5V, Vmotor – 5 V, 0V – GND. Пример подключения одного двигателя к Ардуино показан на рисунке.
Драйвер двигателя на микросхеме HG7881
HG7881 – двухканальный драйвер, к которому можно подключить 2 двигателя или четырехпроводной двухфазный шаговый двигатель. Устройство часто используется из-за своей невысокой стоимости. Драйвер используется только для изменения направления вращения, менять скорость он не может.
Плата содержит 2 схемы L9110S, работающие как H-мост.
Характеристики драйвера HG7881:
- 4-контактное подключение;
- Питание для двигателей от 2,5 В до 12 В;
- Потребляемый ток менее 800 мА;
- Малые габариты, небольшой вес.
Распиновка:
- GND – земля;
- Vcc – напряжение питания 2,5В – 12В;
- A-IA – вход A(IA) для двигателя A;
- A-IB – вход B (IB) для двигателя A;
- B-IA – вход A(IA) для двигателя B;
- B-IB – вход B (IB) для двигателя B.
В зависимости от поданного сигнала на выходах IA и IB будет разное состояние для двигателей. Возможные варианты для одного из моторов приведены в таблице.
IA | IB | Состояние мотора |
Остановка | ||
1 | Двигается вперед | |
1 | Двигается назад | |
1 | 1 | Отключение |
Подключение одного двигателя к Ардуино изображено на рисунке.
Сравнение модулей
Модуль L293D подает максимальный ток в 1,2А, в то время как на L298N можно добиться максимального тока в 4 А. Также L293D обладает меньшим КПД и быстро греется во время работы. При этом L293D является самой распространенной платой и стоит недорого. Плата HG7881 отличается от L293D и L298N тем, что с ее помощью можно управлять только направлением вращения, скорость менять она не может. HG7881 – самый дешевый и самый малогабаритный модуль.
Подключение L298N к Arduino
Как уже упоминалось, в первую очередь нужно проверить полярность подключенных двигателей. Двигатели, вращающиеся в различных направлениях, неудобно программировать.
Нужно присоединить источник питания. + подключается к пину 4 на плате L298N, минус (GND) – к 5 пину. Затем нужно соединить выходы с L298N и пины на Ардуино, причем некоторые из них должны поддерживать ШИМ-модуляцию. На плате Ардуино они обозначены
. Выходы с L298N IN1, IN2, IN3 и IN4 подключить к D7, D6, D5 и D4 на Ардуино соответственно. Подключение всех остальных контактов представлено на схеме.
Направление вращения задается с помощью сигналов HIGH и LOW на каждый канал. Двигатели начнут вращаться, только когда на 7 пине для первого мотора и на 12 пине для второго на L298N будет сигнал HIGH. Подача LOW останавливает вращение. Чтобы управлять скоростью, используются ШИМ-сигналы.
Для управления шаговым двигателем в Arduino IDE существует стандартная библиотека Stepper library. Чтобы проверить работоспособность собранной схемы, можно загрузить тестовый пример stepper_oneRevolution. При правильной сборке вал двигателя начнет вращаться.
При работе с моторами Ардуино может периодически перезагружаться. Это возникает из-за того, что двигателям требуются большие токи при старте и в момент торможения. Для решения этой проблемы в плату встроены конденсаторы, диоды и другие схемы. Также для этих целей на шидле имеется раздельное питание.
Двигатели постоянного тока робота. Драйвер движка L293D и Arduino
Двигатель постоянного тока потребляет очень большой ток. И для того, чтобы управлять им требуются специальные силовые транзисторные ключи. Существуют специальные микросхемы, которые заточены под эту задачу и имя их L293D. А для плат Arduino существует уже готовое решение — плата расширения драйвер двигателя L293D.
Из этой статьи вы узнаете:
Приветствую вас на своих страницах блога, уважаемые читатели. Сегодняшняя статья будет отдельно посвящена этому замечательному драйверу, который играет целевую роль для колёсного робота или для того, чтобы подключить силовые шаговые двигатели, типа NEMA.
Совсем недавно я приобрёл данный драйвер, 2 OLED экрана для Ардуино и датчик для измерения влажности почвы.
Как раз драйвер двигателей на данном этапе является основной частью для изучения, так как я буду его применять в силовой части робота, собран он будет совместно с Arduino UNO. Этот «Бутерброд» будет выполнять основные задачи по движению шасси робота.
Большой плюс в Arduino — это быстродействие, и все операции движения будет выполнять скетч в его «мозгах». Затем я буду снимать всю информацию на Raspberry Pi и обрабатывать её.
Драйвер двигателей — L293D, общее описание
Мотор-шильды на основе микросхем L293 и L298N являются самыми популярными драйверами для управления моторами постоянного тока. На фото выше данная плата позволяет подключить 4 DC мотора (либо 2 шаговых двигателя) и два серводвигателя. Помимо этого ещё на борту платы есть несколько аналоговых входов, что позволяет подключить несколько ультразвуковых датчиков. Это очень удобно.
Почему? Потому что таким образом мы можем завязать независимую логику управления трансмиссией робота чисто на Ардуино. Потом передавать необходимые данные в верхние инстанции по каналам связи. основным целевым мозгом является одноплатный компьютер. Неважно, будет ли это Raspberry Pi, или Orange Pi, или Banana Pi.
Я закончил своё лирическое отступление, продолжаем дальше:
В составе этой платы имеются две микросхемы L293D (1). L-ка позволяет управлять слаботочными двигателями с током потребления до 600 мА на канал. Для подключения двигателей используются зажимные клеммы (2).
Использование двух микросхем L293D позволяет одновременно подключить 4 моторчика постоянного тока либо 2 шаговых мотора, либо два моторчика и шаговый. Для управления на прямую выводами L-ки (IN1, IN2, IN3, IN4),отвечающими за выбор направления вращения, необходимо 4 вывода, а для двух микросхем целых 8.
Для уменьшения количества управляющих выводов в игру вступает сдвиговый регистр 74НС595 (3). Благодаря регистру управление сводится с 8-ми пинов к 4-ем.
Так же на шильдике имеются шесть пинов (4) для подключения двух сервоприводов. (Кстати очень полезная и нужная штука, если понадобиться прицепить манипулятор с двумя степенями свободы).
Питание силовой части производится либо от внешнего клеммника (6) либо замыканием джампера (5) ( питание от клеммника моторов +M соединяется с выводом VinArduino).
При замкнутом джампере напряжение для объединенного питания должно лежать в пределах от 6 до 12 Вольт.
Используемые выводы Arduino для управления моторами
Выводы для скорости вращения двигателями:
- D11: DC Мотор №1 / Шаговый №1
- D3: DC Мотор №2 / Шаговый №1
- D5: DC Мотор №3 / Шаговый №2
- D6: DC Мотор №4 / Шаговый №2
Выводы, отвечающие за направления двигателей:
Выводы для управления сервоприводами:
- D9: Сервопривод №1
- D10: Сервопривод №2
Незадействованные аналоговые входы(Они же могут быть и дискретными вводами/выводами):
- А0-А6 (либо в коде указываем дискретные 14-19)
Программирование на Arduino
Для того чтобы нам запустить данный драйвер, мы должны прописать соответствующие «мозги». Загружаем нужную библиотеку AFmotor . Скачал я её с официального сайта ГитХаб . Устанавливаем и загружаем в Arduino IDE.
Подробное описание библиотеки находится на этом сайте .
В начале программы создаём объект с уникальным именем и указываем канал, куда вы подключили двигатель. Создаём объект двигателя постоянного тока AF_DCMotor , используя AF_DCMotor (номер двигателя).
По сути библиотека выполняет всего две команды — это скорость вращения и направление.
Скорость вращения это команда setSpeed (скорость). В скобках указывается аргумент скорости, который принимает от 0 до 255. И направление вращения run (направление). В скобках аргумент может принимать три значения: FORWARD (вперёд), BACKWARD (назад) или RELEASE (стоп).
Ну что, пробуем скетч? В принципе на моём роботе, только два двигателя, поэтому я проводил испытания, только на двух каналах.