L293d схема подключения шагового двигателя
#33. Motor shield l293d подключение. Пример кода для Arduino
Робототехника с каждым годом становиться все популярнее. И поэтому количество электроники с помощью которой можно реализовать роботизированную модель достаточно много. А если у вас нет опыта работы с электроникой, вам отлично подойдёт Motor shield на базе драйвера l293d. Шилд устанавливается на плату Arduino UNO.
На shield выведены контакты для подключения двигателей постоянного тока, шаговых двигателей и сервоприводов. Я уже делал проект с использованием данного Motor shield. У вас, наверное, возник вопрос. Если шилд такой простой, почему у меня мало Arduino проектов с его использование? Это связанно со сложностью расширения функционала проекта при использовании Motor shield l293d. Но обо всём по порядку.
Основы работы с чипом L293D
Перед тем как подключать Arduino для управления мотором, стоит поэксперрментировать с чипом L293D. Как минимум, это даст вам понимание того, как именно он работает.
В данном случаем мы можем использовать Arduino исключительно для подачи питания 5 В на мотор.
Наша задача – отследить, в какую сторону вращается ротор мотора. Можете слегка зажать вал пальцами, и вы почувствуете направление вращения или прикрепить на вал какую-то метку (например, кусок бумажки). После первой проверки, подключите контакты, которые идут от 5V (питания) и от Gnd (земля) наоборот. После запуска, двигатель должен вращаться в противоположную сторону.
По большому счету, это и является концептом, на основании которого работает чип L293D. Он управляет пинами, позволяя нам менять направление вращения ротора двигателя.
Схема подключения соответствует приведенной на рисунке ниже. Питание мотора все еще обеспечивается от Arduino, но мы можем поэкспериментировать с «управляющими» пинами перед тем как полностью передать управление Arduino.
Три контакта L293D, которые нас интересуют, это: Pin 1 (Enable), Pin 2 (In1) и Pin 7 (In2). Они подключаются к контакту 5V или к контакту GND с использованием фиолетового, желтого и оранжевого коннектора.
Как показано на рисунке выше, мотор должен вращаться в определенном направлении, давайте назовем это направлением A.
Если вы подключите Pin 1 (Enable) к GND, мотор остановится вне зависимости от управляющих пинов In1 и In2. Контакт Enable все включает и выключает. Это очень полезно при использовании ШИМ контактов для управления скоростью мотора. Переподключите Pin 1 к 5V, чтобы двигатель вновь начал вращаться.
Теперь попробуйте переподключить In1 (pin 2, желтый). Вместо 5V подключите его к GND. Оба контакта In1и In2 теперь подключены к GND, так что двигатель опять остановится.
Перемещение In2 от GND к 5V приведет к вращению мотора в противоположном направлении (направление В).
Если вы подключите In1 обратно к 5V и в результате In1 и In2 будут подключены к 5V, мотор опять-таки перестанет двигаться.
Используемые выводы 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)
Драйвер двигателя на микросхеме 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 – самый дешевый и самый малогабаритный модуль.
Обзор motor shield l293d
Автор: Сергей · Опубликовано 22.05.2020 · Обновлено 04.08.2020
Если задумались спроектировать робота, первым делом необходимо научится управлять различными двигателями, это может быть и двигатель постоянного тока или сервопривод. Один из самых простых и недорогих способов это воспользоваться Motor Shield на базе L293D, который можно легко установить на плату Arduino UNO.
Технические параметры
► Напряжение питания двигателей: 5 — 36 В
► Напряжение питания платы: 5 В
► Допустимый ток нагрузки: 600 мА на канал
► Максимальный (пиковый) ток нагрузки: 1,2 А на канал
► Размер платы: 70х54х20 мм
Общие сведения о L293D
Motor shield построен на микросхеме L293D, состоящая из двух H-мост (H-Bridge), с помощью которых можно управлять двумя постоянными двигателями или одним шаговым двигателем. Каждый канал рассчитан на 0.6 А с пиком 1.2 А. Так как на shield установлено две микросхемы L293D, можно управлять сразу четырьмя двигателями постоянного тока, это позволяет использовать данный shield в разработке робот платформ. Так же, на shield установлена микросхема 74HC595, которая расширяет 4 цифровых контакта Arduino до 8 управляющих контактов двух микросхем L293D.
Питание Motor shield L293D:
► Общий источник питания для Arduino и двигателей (максимальное напряжение 12 В) — можно использовать один источник питания, используется разъем DC на Arduino UNO или 2-х контактный разъем на shield «EXT_PWR«, так же необходимо установить перемычку «PWR«.
► Раздельный источник питания — рекомендуется отдельно питать Arduino и shield, для этого Arduino подключаем к USB, а двигатели подключаем к источнику постоянного тока, используя разъем » EXT_PWR». Необходимо убрать перемычку перемычку «PWR«.
Внимание! Нельзя подавать питание на «EXT_PWR» выше 12 В при установленной перемычке «PWR».
Выходные контакты двух микросхем L293D выведены по бокам shield с помощью 5-ти контактных винтовых клемм, а именно М1 , М2 , М3 и М4. К этим контактам подключается четыре двигателя постоянного тока и два шаговых двигателя.
Так же, на shield выведен два 3-х контактных разъема, которым можно подключить два сервопривода.
Неиспользуемые контакты:
Цифровые контакты D2 и D13 и аналоговые контакты A0-A5 не используются.
Подключение к Arduino двигателя постоянного тока с помощью L293D
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Блок питания 12В, 2А x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
► Двигатель постоянного тока x 21шт.
► Motor shield L293D
Подключение:
Устанавливаем shield сверху Arduino, далее подключаем источник питания к клеммам «EXT_PWR«, в примере используется источник питания на 9 В. Теперь подключаем двигатели к клеммам M1, M2, M3 или M4. В примере подключаем к М4.
Установка библиотеки:
Для удобной работы с Motor shield L293D необходимо установить библиотеку «AFMotor.h». Заходим в Arduino IDE, открываем вкладку «Скетч» -> «Подключить библиотеку» и нажимает «Управлять библиотеками…«
Откроется новое окно «Менеджер библиотек«, в окне поиска вводим «Adafruit Motor Shield» и устанавливаем библиотеку.
Программа:
В данном скетче показано, как управлять скоростью и направлением движении двигателями постоянного тока.
Разбор програмного скетча для управления электромоторами с помощью Motor Shield L293D и Arduino
Схему соединений мы собрали. Скетч вставили и загрузили. У нас все получилось, но мне кажется, что мы что-то забыли. Мы забыли разобраться в том, как же работает наша установка! Рассматривать мы будем участки кода, которые могут вызвать у вас непонимание. Перейдем к изучению написанного кода.
В участке кода, представленном ниже, мы задаем максимальную скорость, для электромоторов. Мы указали максимальное значение скорости равное «255».
В данном участке кода мы командой «motor1. run (FORWARD);» задаем движение электродвигателям вперед, а командой «motor1. setSpeed (255);» указываем, с какой скоростью будут они работать. Если вы захотите установить максимальную скорость, то ее значение должно быть таким, которое указано в строчке «motor1. setSpeed (255);» (в нашем случае значение максимальной скорости равно 255).
Вы можете заметить строчки, в которых указана функция » delay «(Пример такого кода указан ниже). Эта функция отвечает за продолжительность действия того или иного действия. В нашем случае » delay » указывает, какое количество времени двигатель будет бездействовать.
Надеюсь у вас все получилось! Если у вас остались вопросы, можете написать нам в вконтакте или в комментариях ниже. Мы постараемся ответить на ваши вопросы в скором времени!
L293D Драйвер для 2-х двигателей постоянного тока
Драйвер двигателя позволяет пользователю управлять мотором с помощью микроконтроллера. Напрямую соединять вывод микроконтроллера и мотор запрещается, поскольку большое потребление двигателем тока приведет к поломке управляющей платы. Модуль используется при сборке робототехнических устройств, электромагнитов и в других случаях, когда требуется управлять мощной нагрузкой.
Принцип работы
Суть использования драйвера заключается в согласовании уровней напряжения, поскольку имеется логическая низковольтная цепь, она же командная, напряжение в которой не превышает 5 вольт, также имеется цепь питания электродвигателя, потребление которого зависит от типа подключаемого двигателя и может составлять, например, 12 вольт. Также важно знать, что максимальный ток, который способен выдать порт микроконтроллера — 20 мА, тогда как потребляемый ток мотора может составлять, например, 2А, то есть в 100 раз больше. Если попытаться подключить двигатель к контроллеру напрямую — контроллер неизбежно выйдет из строя.
Управление двигателями происходит через некий «переходник» между контроллером и мотором, им слушит драйвер, который обычно выполнен в виде микросхемы. В итоге команда, принятая микросхемой от контроллера, замыкает цепь питания двигателя и он начинает работать.
Этот модуль на микросхеме L293D является самым популярным драйвером для работы с двигателями. L293D более мощный, чем его предшественник, и может не только изменять направление вращения, но скорость. Рабочее напряжение двигателей от 5В до 36 В, рабочий ток достигает 600 мА. На двигатель L293D может подавать максимальный ток в 1,2А.
Микросхема L293D обеспечивает разделение электропитания для микросхемы и для управляемых ею двигателей, что позволяет подключить электродвигатели с большим напряжением питания, чем у микросхемы. Разделение электропитания микросхем и электродвигателей также способствует уменьшению помех, вызванных бросками напряжения, связанными с работой моторов.
Подключение
Подключение осуществляется с помощью макетных проводов. Выводы модуля имеют следующие назначения:
VCC 5V — питание микросхемы драйвера двигателей
MOTOR 2.5 — 36V — питание двигателей
IN3, IN4 — управление направлением вращения и скоростью двигателя М2
GND — земля (общий)
IN1, IN2 — управление направлением вращения и скоростью двигателя М1
GND — земля (общий)
M1, M2 — подключение двигателей постоянного тока
Для контроля скорости вращения с помощью широтно-импульсной модуляции (ШИМ) имеются отдельные входы. Для генерации ШИМ-сигнала можно использовать специальные микросхемы либо платформу Arduino.
Кроме драйвера понадобится контроллер DaVinci, два мотора постоянного тока, соединительные провода и дополнительный источник питания, так как контроллер выдает маленькие токи и на двигатели необходимо подавать питание отдельным источником питания к контакту MOTOR 5-36V.
Управление двигателями производится с помощью ШИМ сигналов через контакты IN1..IN4.
Двигатели подключаются к клеммам М1 и М2. При этом полярность не имеет значения, ее можно поменять программно.
Чтобы начать работу с датчиком его необходимо подключить к микроконтроллеру по схеме ниже.
Программа
Далее необходимо загрузить в микроконтроллер следующую программу, которая будет вращать один из двигателей, меняя направление каждую секунду.
Программу можно усложнить и кроме направления менять еще и мощность.
В итоге сначала мотор вращается с максимальной скоростью, затем замедляется, и повторяет все в обратном направлении.
Для того, чтобы задействовать второй двигатель, необходимо поменять код следующим образом:
Теперь моторы сначала вращаются с небольшой скоростью, затем переходят на увеличенные обороты, и повторяют все в обратном направлении.