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

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

  • автор:

Как работает драйвер двигателя L298N и как его подключить к Arduino

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

Внешний вид проекта подключения к Arduino драйвера двигателя L298N

Ранее на нашем сайте мы уже рассматривали применение драйвера двигателя L298N в следующих проектах:

  • измерение скорости, пройденного пути и угла поворота с помощью Arduino и датчика LM393;
  • объезжающий препятствия робот на Arduino;
  • машина с автономным обнаружением линии на Raspberry Pi и OpenCV.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Модуль драйвера двигателя LM298N (купить на AliExpress).
  3. Электродвигатели постоянного тока, работающие от напряжения 12V (купить на AliExpress).
  4. Редукторы для электродвигателей.
  5. Потенциометр.
  6. Кнопка.
  7. Резистор.
  8. Макетная плата.
  9. Соединительные провода.

Общие принципы управления электродвигателями постоянного тока

Один из наиболее простых способов управления скоростью вращения электродвигателя постоянного тока с помощью микроконтроллера (микроконтроллерной платы) — это использование широтно-импульсной модуляции (ШИМ).

Использование ШИМ для управления двигателем постоянного тока

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

Влияние коэффициента заполнения ШИМ сигнала на средний уровень напряжения

Таким образом мы можем, к примеру, подключить ШИМ контакт Arduino к затвору MOSFET транзистора и управлять скоростью вращения двигателя, изменяя коэффициент заполнения ШИМ сигнала, как показано на следующем рисунке.

Принцип управления двигателем постоянного тока с помощью Arduino и MOSFET транзистораЧто такое H-мост и как он работает

Как мы уже разобрались, скоростью вращения двигателя постоянного тока можно управлять изменяя коэффициент заполнения ШИМ сигнала. А чтобы управлять направлением вращения двигателя нам необходимо изменять направление тока, протекающего через двигатель. Один из самых распространенных способов сделать это — использование H-моста. Типовой H-мост содержит 4 переключающих элемента, транзистора или MOSFET, с двигателем в центре этой схемы. Таким образом, мы получаем конфигурацию наподобие английской буквы H. Управляя двумя переключателями одновременно, мы можем изменить направление протекания тока, таким образом, изменяя направление вращения двигателя.

Принцип работы H-моста

То есть, используя комбинацию ШИМ и H-моста, мы можем получить полный контроль над двигателем — сможем управлять и направлением, и скоростью его вращения.

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

Сейчас на рынке присутствует достаточно много разнообразных модулей драйверов двигателей, L298N — является одним из самых популярных среди них. Он представляет собой двойной H-мост, что позволяет ему управлять двумя электродвигателями постоянного тока одновременно. Модуль позволяет управлять двигателями с питающим напряжением от 5 до 35 В и пиковым током до 2 А.

Внешний вид модуля драйвера двигателей L298N

Модуль L298N содержит две идентичные пары контактов для двигателей A и B, а также группу контактов, включающую Ground (общий провод/земля), питающее напряжение (VCC) для двигателей и контакт 5V, который может быть как входом, так и выходом.

Назначение контактов (распиновка) модуля L298N

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

Падение напряжения на модуле L298N составляет около 2 В. То есть если мы используем источник питания с напряжением 12 В, то напряжение на контактах, к которым подключаются двигатели, составляет около 10 В, то есть в данном случае мы не сможем достичь максимальной скорости вращения нашего двигателя постоянного тока, работающего от 12 В.

Падение напряжения на модуле L298N

Контакты Enable A и Enable B модуля L298N используются для включения и регулировки скорости вращения двигателей. Если на этих контактах присутствует джампер, то двигатель будет включен и вращаться с максимальной скоростью, если мы удалим джампер, то мы можем подключить эти контакты в выходам ШИМ микроконтроллера (платы) и с помощью сигнала ШИМ регулировать скорость вращения двигателей. Если мы подключим один из этих контактов к общему проводу/земле (Ground), то соответствующий двигатель будет отключен.

Контакты модуля L298N для регулировки скорости и направления вращения двигателей

Контакты Input 1 и Input 2 модуля L298N используются для задания направления вращения двигателя A, а контакты inputs 3 и 4 — для задания направления вращения двигателя B. С помощью данных контактов мы фактически управляем переключателями H-мостов внутри микросхемы L298N. Если на input 1 уровень LOW, а на input 2 уровень HIGH, то двигатель A будет вращаться в прямом направлении и наоборот, если на input 1 уровень HIGH, а на input 2 уровень LOW, то двигатель будет вращаться в обратном направлении. Если на обоих этих контактах одинаковый уровень, LOW или HIGH, двигатель остановится. Аналогично и для контактов inputs 3 и 4 и двигателя B.

Схема проекта

Схема подключения модуля драйвера двигателей L298N к плате Arduino представлена на следующем рисунке.

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

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

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

В комплекте GyverKIT Pro идёт драйвер для двух коллекторных моторов L9110S:

Драйвер работает по классической схеме Н-мост, по два пина управления на каждый мотор. Это позволяет подключать к нему как обычные коллекторные моторы (есть в наборе), так и двухфазные шаговые моторы, а также обычные RGB светодиодные ленты (как в этом проекте). Характеристики:

  • Напряжение логики: 3.. 5V
  • Напряжение мотора: 2.5.. 12V
  • Рабочий ток: 800 мА
  • Пиковый ток: 1.5А

Подключение

  • Для управления выходами достаточно подключить микроконтроллер к GND и управляющим пинам драйвера
  • VCC на плате драйвера идёт на питание мотора, то есть его к микроконтроллеру подключать не нужно (за исключением тех случаев, когда МК и драйвер питаются от одного источника)
  • Управляющие пины драйвера подключаются к любым цифровым пинам МК. Если нужно управление скоростью вращения мотора – один из пары пинов нужно подключать на пин МК с возможностью ШИМ сигнала
  • В данном модуле пины управления подтянуты к VCC резисторами на 10 кОм, то есть при управлении 12V нагрузкой они окажутся под высоким напряжением. Пины МК защищены от повышенного напряжения, но всё равно не рекомендуется управлять нагрузкой с напряжением выше питания МК. В наборе GyverKIT идут моторы, которые работают от 5V, а также сетевой адаптер (блок питания) на 5V

Библиотеки

Управлять драйвером с мотором можно и без библиотеки, про это у меня есть отдельный текстовый урок, и видео урок:

Но с библиотекой это делать гораздо удобнее, например универсальная GyverMotor, к ней есть отдельная документация. И видео урок:

Примеры

#include «GyverMotor.h» // (тип драйвера, пин, ШИМ пин, уровень драйвера) GMotor motor1(DRIVER2WIRE, 2, 3, HIGH); GMotor motor2(DRIVER2WIRE, 4, 5, HIGH); void setup() < motor1.setMode(FORWARD); // мотор 1 вперёд motor2.setMode(BACKWARD); // мотор 2 назад motor1.setSpeed(50); // скорость мотора 1 motor2.setSpeed(150); // скорость мотора 2 >void loop()
Связанные уроки

  • Управление моторами
  • ШИМ пины

Как работает драйвер двигателя L293D и как его подключить к Arduino

Если вы планируете управлять электродвигателями постоянного тока, то простой драйвер двигателя L293D — один из самых подходящих помощников на эту роль. В данной статье мы рассмотрим принципы работы данного драйвера двигателя и как его подключить к плате Arduino.

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

Ранее на нашем сайте мы уже рассматривали проекты с применением драйвера двигателя L293D:

  • подключение двигателя постоянного тока к микроконтроллеру AVR ATmega16;
  • управление двигателем постоянного тока с помощью Arduino Uno;
  • робот-пылесос на Arduino для автоматической уборки помещений;
  • шилд драйвера двигателей на NodeMCU ESP8266 и микросхеме L293D.

Необходимые компоненты

  1. Плата Arduino UNO (купить на AliExpress).
  2. Драйвер двигателей L293D (купить на AliExpress, также данный драйвер двигателя можно купить в виде готового модуля).
  3. Электродвигатели постоянного тока — 2 шт.

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

Для управления двигателями постоянного тока с помощью микроконтроллеров в современной схемотехнике используется ШИМ (широтно-импульсная модуляция) и устройства под названием H-мосты. ШИМ применяется для управления скоростью вращения вращения двигателя, а H-мосты — для управления направлением его вращения.

ШИМ для управления скоростью вращения двигателя

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

Чем больше значение коэффициента заполнения, тем выше среднее значение напряжения, подаваемого на двигатель постоянного тока (что приводит к более высокой скорости его вращения), а чем меньше значение коэффициента заполнения, тем ниже среднее значение напряжения, подаваемого на двигатель (что приводит к более низкой скорости его вращения).

Управление направлением вращения двигателя с помощью H-моста

Чтобы изменить направление вращения двигателя необходимо изменить полярность приложенного к нему напряжения. Один из наиболее простых способов сделать это — использование H-моста. По своей структуре H-мост состоит из 4-х переключателей (обычно это MOSFET транзисторы). Принцип действия H-моста наглядно показан на следующем видео.

Замкнув/включив два противоположных переключателя H-моста, мы можем изменить направление протекание тока, тем самым изменив направление вращения двигателя.

Микросхема драйвера двигателя L293D

L293D — это микросхема драйвера двигателей, способная управлять двумя двигателями постоянного тока, способными вращаться в обе стороны, либо одним шаговым двигателем. По принципу действия L293D представляет собой четырехкратный сильноточный полупроводниковый драйвер. Он способен управлять токами до 600 мА при напряжении от 4,5 В до 36 В. Также микросхема L293D может использоваться для управления индуктивными нагрузками, такими как реле, соленоиды, двигатели постоянного тока и биполярные шаговые двигатели.

Внешний вид микросхемы L293D

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

Примечание . Обратите внимание, что L293 и L293D — это два разных варианта драйвера двигателя, микросхема L293 не имеет встроенных обратных диодов, поэтому вам необходимо добавить их в свою схему, если вы используете версию L293. В версии L293D все обратновходовые диоды подключены внутри микросхемы, поэтому для при использованииL293D вам не нужно подключать внешние диоды.

Распиновка микросхемы драйвера двигателя L293D

Распиновка микросхемы драйвера двигателя L293d показана на следующем рисунке. L293D имеет в общей сложности 16 контактов, которые можно подключить к микроконтроллерам и двигателям.

Распиновка микросхемы драйвера двигателя L293d

ENA, ENB — контакты 1 и 9 микросхемы. При подаче на эти контакты напряжения низкого уровня (low) двигатели перестают вращаться. Подавая на эти контакты ШИМ сигнал можно управлять скоростью вращения двигателей.

IN1, IN2, IN3, IN4 — контакты для управления направлением вращения двигателей. IN1 и IN2 управляют двигателем A, а IN3 и IN4 — двигателем B.

OUT1, OUT2, OUT3, OUT4 — выходные контакты драйвера L293D. OUT1 и OUT2 для управления первым двигателем, OUT3 и OUT4 — вторым. Данные контакты выдерживают ток до 600mA и на них можно подавать напряжение в диапазоне 5-36V.

GND — контакты 4,5 и 12,13 являются контактами общего провода (земли) данной микросхемы. Также данные контакты являются своеобразным радиатором (теплоотводом) микросхемы.

VCC1 — контакт для подачи питания на двигатели, на него можно подавать напряжение от 4.5V до 36V.

VCC2 — контакт для питания внутренней логики микросхемы, на него необходимо подавать 5V.

Часто задаваемые вопросы по микросхеме драйвера двигателя L293D

Почему мы используем L293D?

L293D предназначен для обеспечения двунаправленного управляющего тока до 600 мА при напряжении от 4,5 В до 36 В. Он способен управлять индуктивными нагрузками, такими как реле, соленоиды, двигатели постоянного тока и биполярные шаговые двигатели, а также другие высоковольтные устройства, токовые/высоковольтные нагрузки в приложениях с положительным питанием.

Как работает L293D?

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

Могу ли я подключить 4 двигателя к L293D?

Данный драйвер может управлять четырьмя соленоидами, четырьмя однонаправленными двигателями постоянного тока, двумя двунаправленными двигателями постоянного тока или одним шаговым двигателем. Микросхема L293D имеет диапазон подачи питания на подключенные устройства от 4,5 В до 36 В и способна выдавать пиковый выходной ток 1,2 А на канал, поэтому она очень хорошо работает с большинством современных двигателей.

Сколькими двигателями может управлять L293D?

L293D — это 16-контактная микросхема драйвера двигателя, которая может одновременно управлять двумя двигателями постоянного тока в любом направлении.

Как L293D управляет скоростью вращения двигателей?

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

Схема проекта

Схема подключения драйвера двигателя L293D к плате Arduino представлена на следующем рисунке.

Схема подключения драйвера двигателя L293D к плате Arduino

Для нашей схемы мы будем использовать небольшой редукторный двигатель постоянного тока 3 В, поэтому мы будем питать микросхему драйвера от внешнего источника питания 5 В на ее выводе VCC1. Также нам необходимо подключить 5 В к выводу VCC2 микросхемы, которое будет питать ее внутреннюю логическую схему. Также мы подключили контакты 9 и 3 к контактам ENA и ENB Arduino, контакты 9 и 3 являются контактами ШИМ (PWM), поэтому мы сможем управлять скоростью вращения двигателя с помощью платы Arduino. Контакты 8,7,5,4 платы подключены к контактам IN1, IN2, IN3 и IN4 микросхемы драйвера. Наконец, контакты OUT1, OUT2, OUT3 и OUT4 подключаются к двигателям (в нашем проекте мы для простоты использовали один двигатель, хотя на представленной схеме продемонстрирована возможность подключения двух двигателей).

Объяснение кода программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе мы инициализируем используемые контакты.

Как работает драйвер двигателя A4988 и как его подключить к Arduino

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

Внешний вид проекта подключения драйвера двигателя A4988 к плате Arduino

В данной статье мы рассмотрим основные принципы работы и устройство драйвера шагового двигателя A4988 и его подключение к плате Arduino. Ранее на нашем сайте мы уже рассматривали управление шаговым двигателем NEMA 17 с помощью драйвера A4988 и платы Arduino.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Драйвер шагового двигателя A4988 (купить на AliExpress).
  3. Шаговый двигатель.

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

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

Драйвер двигателя A4988 позволяет управлять на выходе напряжениями до 35V и токами до ±2A. Это позволяет управлять биполярными шаговыми двигателями такими, к примеру, как NEMA 17, с выходным током до 2А на катушку. На следующем видео показан принцип работы шагового двигателя.

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

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

Распиновка драйвера шагового двигателя A4988

VDD – контакт для подачи питания на модуль драйвера. От него запитывается внутренняя схема модуля. Можно использовать источник питания от 3.3V до 5.5V.

GND – контакт общего провода (земли) драйвера. Его необходимо подключить к контакту общего провода платы Arduino. Таких контакта у драйвера два – 9 и 16.

VMOT – контакт для подачи питания на двигатель, можно использовать напряжение в диапазоне от 8V до 35V. В соответствии с даташитом на модуль драйвера вместе с ним необходимо использовать развязывающий конденсатор.

MS1, MS2, MS3 – контакты выбора разрешения микрошагов. С их помощью мы можем выбрать один из пяти режимов, представленных на следующем рисунке.

Возможные режимы работы шагового двигателя при управлении им с помощью драйвера A4988

На контакты MS1, MS2, MS3 с помощью внутренних подтягивающих резисторов модуля подается уровень LOW, поэтому если вы оставите их неподключенными, то двигатель будет работать в режиме полного шага (full step).

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

DIR – с помощью этого контакта происходит управление направлением вращения двигателя. Если на него подать HIGH, то двигатель будет вращаться по часовой стрелке, если LOW – то против часовой стрелки.

EN – контакт управления доступностью модуля драйвера. Если на нем LOW, то драйвер двигателя A4988 доступен (enabled). По умолчанию на этом контакте присутствует уровень LOW, поэтому драйвер модуля будет доступен (в активном состоянии) до тех пор пока вы не подадите на него HIGH. Данный контакт полезен, к примеру, когда необходимо экстренно остановить двигатель.

SLP – контакт управления спящим режимом модуля. Если на нем LOW, то модуль переходит в спящий режим, тем самым уменьшая до минимума потребление электроэнергии. Этот режим можно использовать для уменьшения потребления энергии вашим устройством.

RST – контакт сброса модуля драйвера. Когда на нем LOW, все входы STEP игнорируются. Также это приводит к сбросу модуля драйвера, устанавливая его внутренний преобразователь (translator) в значение по умолчанию “home” – это начальное состояние, с которого начинает вращение двигатель, и оно зависит от установленного разрешения по микрошагам (microstep resolution).

1B, 1A, 2A, 2B – выходные контакты драйвера двигателя A4988. Каждый из этих контактов выдерживает ток до 2 А, что позволяет подключать к ним электродвигатели средних размеров, например, NEMA 17.

Компоненты драйвера двигателя A4988

Драйвер A4988 достаточно дешев и прост в эксплуатации, поэтому он находит широкое применение в современных электронных устройствах. Его компоненты показаны на следующем рисунке.

Компоненты драйвера двигателя A4988

Как вы видите из представленного рисунка, его основным компонентом является контроллер шагового двигателя A4988.

Наиболее часто задаваемые вопросы про драйвер двигателя A4988

Какова спецификация драйвера двигателя A4988?
A4988 представляет собой законченный модуль управления двигателем с возможностью управления по микрошагам и встроенным преобразователем (транслятором). Он предназначен для управления биполярными шаговыми двигателями в режимах полного шага, 1/2, 1/4, 1/8 и 1/16 шага с поддержкой выходного напряжения до 35 V и выходного тока до 2 A.

Какие основные отличия между драйверами A4988 and DRV8825?
Драйвер DRV8825 обеспечивает более высокое напряжение на своих выходах (45V против 35V), что означает более безопасное использование DRV8825 при более высоких напряжениях и меньшую чувствительность к возможным выбросам напряжения. Более подробно про отличия между этими драйверами вы можете прочитать в этой статье.

Какие ограничения по току (лимит) у A4988?
Микросхема драйвера двигателя A4988 выдерживает максимальный ток до 2 A на каждую обмотку, но данное значение максимального выдерживаемого тока будет зависеть от того, насколько хорошо вы охлаждаете микросхему драйвера.

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

Схема драйвера двигателя A4988

Схема драйвера A4988 показана на следующем рисунке. Как вы можете видеть, она достаточно проста. Более подробно про ее функционирование вы можете прочитать в даташите на драйвер.

Схема драйвера двигателя A4988Схема проекта

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

Схема подключения драйвера двигателя A4988 к плате Arduino

Запитывать схему мы будем от лабораторного источника питания.

Объяснение программы для Arduino

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

В коде программы мы первым делом дадим осмысленные названия используемым контактам и объявим переменную stepsPerRevolution .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *