L293d схема включения шагового двигателя
Максимальный ток на выводах Arduino слаб (около 50 мА) для такой мощной нагрузки как электромотор (десятки и сотни миллиампер). Поэтому напрямую к выводам Arduino подключать электродвигатель нельзя: есть риск сжечь вывод, к которому подключён двигатель. Для безопасного подключения электродвигателей разных типов к Arduino необходим самодельный или промышленно изготовленный т.н. драйвер двигателей. Драйверы двигателей бывают разные, для их работы часто используются микросхемы типа HG788, L9110S, L293D, L298N и другие. Драйверы двигателей имеют выводы подачи питания, выводы для подключения электродвигателей, а также управляющие выводы.
Различные варианты исполнения драйверов двигателей
В данной статье мы будем использовать драйвер для управления двигателями, сделанный на основе микросхемы L9110S. Обычно выпускаются платы, которые поддерживают подключение нескольких двигателей. Но для демонстрации мы обойдёмся одним.
L293D
L293D представляет собой четыре сильноточных драйвера из половин Н-мостов. Она предназначена для управления двунаправленными приводами с токами до 600 мА и напряжениями от 4,5 В до 36 В. Микросхема предназначена для управления индуктивными нагрузками, такими как реле, соленоиды, двигатели постоянного тока, шаговые двигатели, а также другими нагрузками, требующими высокого тока/напряжения в приложениях с положительным питанием. Все входы TTL совместимы. Драйверы включены в пары: драйверы 1 и 2 включаются выводом 1,2EN, а драйверы 3 и 4 включаются выводом 3,4EN. Когда на разрешающий вход подается высокий логический уровень, соответствующие драйверы включаются, их выходы становятся активными, а их состояние синфазно соответствующим входам. Когда на разрешающий вход подается низкий логический уровень, эти драйверы выключаются, их выходы отключаются и остаются в состоянии высокого сопротивления. При правильных сигналах на входах каждая пара драйверов формирует полный Н-мост, способный управлять направлением в приложениях с электродвигателями и соленоидами.
Схема логики микросхемы L293D
Входы | Выход Y | |
---|---|---|
A | EN | |
H | H | H |
L | H | L |
X | L | Z |
H – высокий уровень; L – низкий уровень; X – не имеет значения; Z – высокое сопротивление (выключен).
Назначение выводов
Распиновка микросхемы L293D
Вывод | Название | Назначение |
---|---|---|
1 | En1,2 | Вывод включения для управления драйверами 1 и 2 |
2 | Вход 1A | Вход для управления 1Y |
3 | Выход 1Y | Выход, подключается к двигателю |
4 | GND | Земля и теплоотвод |
5 | GND | Земля и теплоотвод |
6 | Выход 2Y | Выход, подключается к двигателю |
7 | Вход 2A | Вход для управления 2Y |
8 | Vcc2 | Источник питания для драйверов 4,5–36 В |
9 | En3,4 | Вывод включения для управления драйверами 3 и 4 |
10 | Вход 3A | Вход для управления 3Y |
11 | Выход 3Y | Выход, подключается к двигателю |
12 | GND | Земля и теплоотвод |
13 | GND | Земля и теплоотвод |
14 | Выход 4Y | Выход, подключается к двигателю |
15 | Вход 4A | Вход для управления 4Y |
16 | Vcc1 | Источник питания внутренней логики (максимум 7 В) |
Особенности
- Широкий диапазон напряжений питания: от 4,5 В до 36 В
- Отдельный источник питания входной логики
- Внутренняя защита от электростатики
- Выключение при перегреве
- Помехоустойчивые входы
- Выходной ток: до 600 мА на канал
- Пиковый выходной ток: до 1,2 А на канал
H-мост управления двигателем
Легко заметить, что изменение направления тока приводит к изменению направления вращения двигателя. Вместо этих переключателей можно собрать H-мост на транзисторах и управлять ими с помощью микроконтроллера.
Как правило, для двигателей большой мощности H-мост строится на MOSFET транзисторах. Когда-то такие H-мосты были очень популярны по экономическим соображениям, поскольку транзисторы дешевле, чем микросхема. Их часто можно встретить в бюджетных игрушечных автомобилях с дистанционным управлением.
Однако на рынке уже не один год существуют специализированные микросхемы H-мостов. Они со временем становятся все дешевле и имеют больше возможностей и безопасности. Одной из таких простых микросхем является L293D.
Это простой драйвер электродвигателя, содержащий в себе два H-моста, имеет возможность управления двигателем путем ШИМ.
Назначения выводов драйвера L293D:
- 1,2 EN, 3,4 EN – служат для управления сигналом ШИМ.
- 1А, 2А, 3А, 4А – вход управления направлением вращения электродвигателя.
- 1Y, 2Y, 3Y, 4Y – выходы питающие двигатель.
- Vcc1 – вывод питания логики контроллера +5В
- Vcc2 – вывод для питания двигателей от +4.5В до +36В.
То как происходит управление L293D показано в таблице ниже:
Когда на входе А и EN присутствует высокий уровень, то на выходе с тем же номером так же будет высокий уровень. Когда на входе A будет низкий и на EN высокий уровень, то на выходе мы получим низкое состояние. Подавая сигнал низкого уровня на EN, на выходе будет состояние высокого импеданса, в не зависимости от того какой сигнал будет на входе А.
Таким образом, мы можем контролировать направление движения тока, в результате чего у нас есть возможность изменять направление вращения электродвигателя.
Технические характеристики L293D:
- Напряжение питания : +5В.
- Напряжение питания двигателей: от +4.5 в до +36В.
- Выходной ток: 600мА.
- Максимальный выходной ток (в импульсе) 1,2А.
- Рабочая температура от 0°C до 70°C.
Другой популярной микросхемой является L298. Она значительно мощнее, чем описанная ранее L293D. Микросхема L298 так же имеет в своем составе два H-моста и также поддерживает ШИМ.
Назначение выводов L298 очень похоже на L293D. Здесь так же есть два входа управления, входы EN и выходы на двигатель. Vss — это питание микросхемы, а Vs — это питание для двигателей.
Есть так же и различие, а именно выводы CURRENT SENSING, которые служат для измерения тока потребления двигателей. Эти выводы следует подключить к массе питания через небольшой резистор, примерно 0,5 Ом.
Ниже приведена схема подключения L298:
В данной схеме стоит обратить внимание на внешние диоды, подключенные к выводам электродвигателя. Они служат для отвода индукционных всплесков в двигателе, которые возникают во время торможения и изменения направления вращения. Их отсутствие может привести к повреждению микросхемы. В драйвере L293D эти диоды уже имеются внутри самой микросхемы.
Технические характеристики L298:
- Напряжение питания :+5В.
- Напряжение питания двигателей: до +46В.
- Максимальный ток, потребляемый двигателями: 4A.
Следующая микросхема H-моста – эта TB6612, новый драйвер с очень хорошими характеристиками, набирающий все большую популярность.
Вы можете заметить, что все эти драйверы электродвигателей одинаковы в управлении, но в TB6612 выходы спарены, из-за большой мощности.
Максимальное напряжение питания TB6612 составляет 15В, а максимальный ток 1,2 А. При этом максимальный импульсный ток составляет 3,2A.
Пример 35. Плата расширения для двигателей на L293D
Примеры
СБОРНИК ПРИМЕРОВ
ПРИМЕРЫ
- Пример 1. Светодиоды
- Пример 2. Подключение кнопки
- Пример 3. Переключатель
- Пример 4. Активный зуммер
- Пример 5. Пассивный зуммер
- Пример 6. Фоторезистор
- Пример 7. RGB-светодиод
- Пример 8. Семисегментный индикатор и 74HC595N
- Пример 9. Четырехразрядный 7-сегментный индикатор
- Пример 10. Светодиодная матрица
- Пример 11. Светодиодная шкала
- Пример 12. ЖК-дисплей
- Пример 13. Джойстик
- Пример 14. Вольтметр
- Пример 15. Термистор
- Пример 16. Модуль DHT11
- Пример 17. Модуль HC-SR04
- Пример 18. Датчик движения HC-SR501
- Пример 19. Матричная клавиатура
- Пример 20. ИК датчик и пульт
- Пример 21. Модуль часов DS-1302
- Пример 22. RFID-модуль RC522
- Пример 23. Сервопривод
- Пример 24. Модуль реле
- Пример 25. Двигатель постоянного тока
- Пример 26. Шаговый двигатель и драйвер ULN2003
- Пример 27. Драйвер двигателей на L298N
- Пример 28. MP3-плеер DFPlayer Mini
- Пример 29. Датчик уровня воды
- Пример 30. Serial Port
- Пример 31. Симуляция парковки
- Пример 32. Датчик температуры DS18B20
- Пример 33. Bluetooth-модуль HC-06
- Пример 34. Плата расширения с дисплеем и кнопками
- Пример 35. Плата расширения для двигателей на L293D
- Пример 36. Ethernet шилд W5100
- Пример 37. GSM/GPRS шилд SIM900
- Пример 38. GPS модуль Ublox NEO-6M
- Пример 39. Модуль считывания отпечатков пальцев
- Пример 40. Шаговый двигатель NEMA17 и драйвер TB6600
Мотор-шилды на основе микросхем L293D и L298N являются самыми популярными драйверами для управления моторами постоянного тока. Данная плата расширения позволяет подключить 4 DC-мотора (либо 2 шаговых двигателя) и два серводвигателя.
На борту данного шилда имеется две микросхемы L293D (1). Она позволяет управлять слаботочными двигателями с током потребления до 600 мА на канал. На двух пятипиновых клеммниках (2) можно насчитать 4 разъема для подключения двигателей (M1, M2, M3, M4), центральные выводы на пятипиновых клеммниках соединены с землей и служат для удобства при подключении пятипроводных шаговый двигателей. Использование двух микросхем L293D позволяет одновременно подключить 4 моторчика постоянного тока или 2 шаговых двигателя, либо два DC-моторчика и шаговик. Для управления на прямую выводами L-ки (IN1, IN2, IN3, IN4), отвечающимими за выбор направления вращения, необходимо 4 вывода, а для двух микросхем целых 8. Для уменьшения количества управляющих выводов используется сдвиговый регистр 74НС595 (3). Благодаря регистру управление сводится с 8-ми пинов к 4-м. Также, на плату выведены 2 разъема для подключения сервоприводов (4). Управление сервоприводами стандартное с помощью библиотеки Servo.h. Питание силовой части производится либо от внешнего клеммника (5), либо замыканием джампера (6) (питание от клеммника моторов +M соединяется с выводом Vin Arduino). При замкнутом джампере напряжение для объединенного питания должно лежать в пределах от 6 до 12 В.
К минусам данного шилда можно отнести то, что он задействует практически все цифровые пины.
Выводы, отвечающие за скорость вращения двигателей:
- Цифровой вывод 11 – DC Мотор №1 / Шаговый №1
- Цифровой вывод 3 – DC Мотор №2 / Шаговый №1
- Цифровой вывод 5 – DC Мотор №3 / Шаговый №2
- Цифровой вывод 6 – DC Мотор №4 / Шаговый №2
Выводы, отвечающие за выбор направления вращения двигателей:
- Цифровые выводы 4, 7, 8 и 12
Выводы для управления сервоприводами (выведены на штырьки на краю платы):
- Цифровой вывод 9 – Сервопривод №1
- Цифровой вывод 10 – Сервопривод №2
В итоге незадействованными цифровыми выводами остаются только пины 2, 13 и пины интерфейса UART – 0, 1. Однако есть выход из данной ситуации. У нас остались незадействованные аналоговые входы A0 – A6, их можно использовать как цифровые. В коде они будут записываться как цифровые с 14 по 19.
Описание:
В данном примере с помощью мотор-шилда на L293D будем одновременно управлять 4 двигателями постоянного тока (меняя скорость и направление). Для подключения шилда достаточно вставить его в плату Arduino Uno. Для работы с данным шилдом необходимо скачать библиотеку AFMotor.
Как мы знаем, для управления биполярным шаговым двигателем необходимо не просто прикладывать напряжения к двум обмоткам в нужной последовательности, но и изменять направление тока в этих обмотках, причём делать это независимо друг от друга. Для этого на каждую обмотку нужен собственный Н-мост. Чтобы не городить его из транзисторов, был взят готовый в лице микросхемы L293D. Ещё одно её преимущество — у микросхемы имеются специальные выводы Enable1 и Enable2, который включают и выключают каждый мост. Их можно использовать чтобы подавать ШИМ сигнал, тем самым, возможно контролировать напряжения питания каждого моста. Зачем это может понадобиться, мы увидим дальше.
Кроме того, L293D может коммутировать
напряжения до 36В и выдавать до 1,2А на каждый канал
, чего вполне должно хватить для питания обмоток нашего моторчика.
Управляющие входы L293D подключены к выходам OC0A и OC0B, что позволит в будущем подавать на них ШИМ сигнал.
Прошивать контроллер будем через внутрисхемный программатор (на схеме не указан).
Вот как выглядит собранная схема на макетной плате:
И вот так расположен наш подопытный:
Теперь можно приступать к экспериментам.
Рассчитаем ток, который будет течь через обмотки двигателя при подключении их к напряжению 5В:
I=U/R = 5В/26Ом = 190мА
Совсем небольшой. Интересно как долго он сможет держать такой ток и не перегреться.
Включим в цепь одной из обмоток амперметр и вольтметр, и проведём замеры соответствующих величин при подачи питания на эту обмотку через драйвер.
При падении напряжения на обмотке
2.56В амперметр показывает ток 150мА
, причём хорошо заметно, как начинает падать величина силы тока в процессе нагревания обмоток. Надо отметить, что не так уж и сильно он греется.
Убедившись, что напряжение 5В для моторчика опасности не представляет, попробуем покрутить им в разные стороны. И вот теперь пару слов мы скажем про режимы работы шагового двигателя.
Об этом довольно хорошо сказано
Не будем повторяться, но вспомним, что шаговый двигатель может работать в трёх режимах:
- Полношаговый однофазный это когда одновременно напряжение подаётся только на одну фазу двигателя, ротор делает шаг, затем текущая фаза выключается и включается следующая.
- Полношаговый двухфазный это когда напряжение подаётся одновременно на две фазы мотора, при этом, ротор притягивается одновременно к двум обмоткам, что создаёт больший крутящий момент.
- Микрошаговый режим в этом случае реализуется тот же принцип, что и на полношаговом двухфазном, то есть работают одновременно две обмотки, но напряжение (и как следствие ток) распределяется между ними неравномерно. Фактически, это означает, что мы можем поставить моторчик в неограниченное количество положений (на практике, разумеется, такого сделать нельзя). Увеличивается точность позиционирования.
Попробуем реализовать первые два режима на микросхеме L293D а для микрошагового режима оставим специальный драйвер из второго эксперимента.
Исходный код программы выглядит следующим образом:
![]() | ![]() |
Плата расширения Arduino Motor R3 — вид спереди | Плата расширения Arduino Motor R3 — вид сзади |
Общие сведения
Плата расширения Arduino Motor построена на базе микросхемы L298 (datasheet), представляющей собой двойной мостовой драйвер для управления различной индуктивной нагрузкой, такой, как реле, соленоиды, шаговые двигатели и двигатели постоянного тока. Плата расширения позволяет Ардуино управлять двумя двигателями постоянного тока, контролируя скорость и направление вращения каждого из них независимо друг от друга. Среди прочих возможностей устройства можно выделить возможность измерения тока, потребляемого каждым двигателем. Плата расширения Arduino Motor совместима с устройствами TinkerKit, что позволяет быстро собирать проекты, просто подключив готовые модули TinkerKit к плате.
Характеристики
Рабочее напряжение | от 5В до 12В |
Драйвер двигателя | L298P, позволяет управлять 2 двигателями постоянного тока либо 1 шаговым двигателем |
Максимальный выходной ток | 2А на каждый канал или 4А максимум (при условии использования внешнего источника питания) |
Измерение тока | 1.65В/А |
Возможность естественной остановки и принудительного торможения |
Схема и исходный проект
Питание
Микросхема L298, расположенная на плате расширения, имеет два вывода питания — один из них предназначен для питания цифровых цепей, другой — для питания двигателей. Ток, потребляемый двигателем, зачастую превышает максимальный выходной ток USB, поэтому для питания платы расширения необходимо использовать только внешние источники питания.
В качестве внешнего источника питания (не USB) может использоваться сетевой AC/DC-адаптер либо аккумулятор. Штекер адаптера (диаметр — 2.1мм, центральный контакт — положительный) необходимо вставить в соответствующий разъем питания на основной плате Ардуино, к которой подключена плата расширения, либо подсоединить провода от источника питания к клеммам Vin и GND, соблюдая необходимую полярность.
Для предотвращения выхода из строя Ардуино, через который запитана плата расширения, рекомендуется использовать внешний источник питания, выходное напряжение которого лежит в пределах от 7 до 12В. В том случае, если для работы подключенного двигателя требуется напряжение больше 9В, рекомендуется организовать раздельное питание Ардуино и платы расширения. Для этого достаточно разомкнуть перемычку «Vin Connect», расположенную на обратной стороне печатной платы. Максимальное напряжение Vin, которое можно подавать на винтовые клеммники, составляет 18В.
Ниже перечислены выводы питания, предусмотренные на винтовом клеммнике:
- Vin. Напряжение Vin используется для питания двигателей, подключенных к плате расширения. Напряжение, поступающее на этот вывод от внешнего источника питания, также используется для питания Ардуино, к которому подключена плата расширения. Для того, чтобы данный источник использовался только для питания двигателей, необходимо разомкнуть перемычку «Vin Connect».
- GND. Выводы земли.
Максимальный выходной ток, который способна обеспечить плата расширения, составляет 4А (по 2А на каждый канал).
Входы и выходы
Для управления двигателями в Arduino Motor предусмотрено два независимых канала, A и B, каждый из которых связан с 4 выводами Ардуино. Соответственно, для управления платой расширения всего задействовано 8 выводов. Каждый канал можно использовать отдельно (например, для управления двумя двигателями постоянного тока), либо функционально объединить их в один канал для управления шаговым двигателем.
В нижеследующей таблице перечислены выводы, относящиеся к каждому каналу Arduino Motor:
Функция | выводы канала A | выводы канала B |
Направление вращения | D12 | D13 |
Скорость вращения (ШИМ) | D3 | D11 |
Остановка двигателя | D9 | D8 |
Измерение тока | A0 | A1 |
Иногда установка платы расширения приводит к нехватке выводов для реализации требуемой задачи. Если в вашем проекте не используются функции остановки или измерения тока, то нехватку свободных выводов можно компенсировать за счет отключения неиспользуемых функций. Для этого достаточно разомкнуть соответствующие перемычки на обратной стороне платы расширения.
Ниже перечислены дополнительные разъемы, присутствующие на плате расширения:
- Винтовой клеммник для подключения двигателей и источника питания для них.
- 2 белых разъема TinkerKit — два аналоговых входа; соединены с линиями A2 и A3.
- 2 оранжевых разъема TinkerKit (по центру) — два аналоговых выхода; соединены с ШИМ-выходами D5 и D6.
- 2 белых разъема TinkerKit (четырехконтактных) — интерфейс TWI; один разъем используется в качестве входа, другой — в качестве выхода.
Подключение двигателей
Коллекторный двигатель постоянного тока. Arduino Motor позволяет управлять двумя коллекторными двигателями постоянного тока. Для подключения каждого двигателя к каналу A или B необходимо подсоединить его провода к клеммам (+) и (-) соответствующего канала. При правильном подключении устройство позволяет контролировать направление и скорость вращения каждого двигателя. Для изменения направления вращения достаточно подать высокий (HIGH) или низкий (LOW) уровень сигнала на выводы DIR A или DIR B. Изменение скорости вращения двигателей осуществляется путем изменения коэффициента заполнения ШИМ-сигнала на выводах PWM A и PWM B. Для резкой остановки каждого двигателя необходимо подать высокий уровень сигнала (HIGH) на выводы Brake A и Brake B. Для медленной остановки — достаточно просто прекратить подачу питания. Чтобы узнать величину постоянного тока, потребляемого каждым двигателем, необходимо считать напряжение на выводах SNS0 и SNS1. Для этого можно применить функцию analogRead(), указав ей в качестве параметра аналоговый вход A0 или A1. Напряжение на этих выводах будет пропорционально току, протекающему через каждый канал платы расширения, и ограничено величиной в 3.3В, которое соответствует максимальному току в 2А.
Физические характеристики
Максимальная длина и ширина печатной платы Arduino Motor составляет 6.9 см и 5.4 см соответственно. Четыре крепежных отверстия позволяют закрепить плату в корпусе или на какой-либо поверхности. Обратите внимание, что расстояние между цифровыми выводами 7 и 8 не кратно традиционным 2.54 мм и составляет 4 мм.
Заключение
Если у вас есть микроконтроллер для генерации последовательностей для управления шаговым двигателем и достаточно времени и мотивации для написания надежного кода, вы можете управлять шаговым двигателем с помощью дискретных полевых транзисторов. Тем не менее, почти во всех ситуациях предпочтительнее использовать какую-либо микросхему, и, поскольку на выбор имеется так много устройств и функций, у вас не должно возникнуть особых проблем с поиском компонента, подходящего для вашего приложения.