Обзор драйвера мотора на L298N

Одним из самых простых и недорогх способов управления двигателями постоянного тока является модуль L298N Motor Driver с Arduino. Он может контролировать скорость и направление вращения двух двигателей постоянного тока, а так же  управлять биполярным шаговым двигателем (типа NEMA 17).

Технические параметры 

► Напряжение питания логики модуля: 5 В
► Потребляемый ток встроенной логики:  36 мА
► Напряжение питания драйвера: 5 В – 35 В
► Рабочий ток драйвера: 2 А (пиковый ток 3 А)
► Габариты: 43.5 мм х 43.2мм х 29.4мм

Общие сведения

Основной чип модуля это микросхема L298N, состоящая из двух H-мост (H-Bridge), один для выхода A, второй для выхода B. H-мост широко используется в электронике и служит для изменения вращения двигателем, схема H-моста содержит четыре транзистора (ключа) с двигателем в центре, образуя H-подобную компоновку. Принцип работы прост, при одновременном закрытие двух отдельных транзистора изменяется полярность напряжения, приложенного к двигателю. Это позволяет изменять направление вращения двигателя. На рисунке ниже, показана работа H-мостовой схемы.

Драйвер мотора на L298N, схема H-Моста

Для управления скоростью двигателя постоянного тока используется метод PWM (Широтно-импульсной модуляции).

Обзор драйвера мотора на L298N

Модуль L298N содержит разъем для подключения питания, ряд перемычек для настройки модуля, два выхода A и B и разъем управления, которые регулируют скорость и направление вращения, назначение каждого можно ознакомится ниже:

►  Вывод Vss — питание двигателей, от 5 до 35 В;
►  Вывод GND — общий вывод заземления;
►  Вывод Vs — питание для логической схемы;
►  Перемычка ENA  — используются для управления скоростью двигателя A;
►  Вывода IN1 и IN2 — используются для управления направлением вращения двигателя A;
►  Вывода IN3 и IN4 — используются для управления направлением вращения двигателя B;
►  Перемычка ENB — используются для управления скоростью двигателя B;
►  Выходы OUT1 и OUT2 — разъем для двигателя A;
►  Выходы OUT3 и OUT4 — разъем для двигателя B;

Принципиальная схема модуля L298N 

Принципиальная схема модуля L298N 

Питание модуля.
Питание модуля L298N осуществляется через трех контактный разъем, шагом 3,5 мм:
► Vs — источник питания двигателей, 3B — 35B
GND — земля
► Vss — источник питания модуля, 4,5В — 5,5В
Фактически у модуля L298N, есть два контакта питания, а именно. «Vss» и «Vs». От «Vs» питаются двигатели с допустимым напряжением от 5 В до 35 В, а от «Vss» питается логическая схема модуля 4,5В до 5,5В. На плате установлен встроенный стабилизатор напряжения на 5 Вольт (78M05), его можно включить или отключить с помощью перемычки. Когда перемычка установлена, стабилизатор включен и питает логику модуля (Vss) от источника питания двигателя (Vs). При включенном стабилизаторе, вход «Vss» работает как выход и обеспечивает 5В с током 0,5 А. Когда перемычка убрана, стабилизатор отключен и необходимо отдельно подключить питание 5 Вольт на вход Vss.

Внимание! Нельзя установить перемычку, если напряжение двигателя выше 12 Вольт.

Обзор драйвера мотора на L298N

Падение напряжения L298N
Падение напряжения драйвера L298N составляет около 2 В, это связано с внутренним падением напряжения в транзисторах в цепи H-мосте. Таким образом, если мы подключим 12 В к источнику питания двигателя, то двигатели получат напряжение около 10 В. Это означает, что двигатель на 12 В не будет работать с максимальной скоростью, для получения максимальной скорости, напряжение поданное на двигателя должен быть выше напряжения (2 В), чем потребность в фактическом напряжении двигателя. Учитывая падение напряжения на 2 В, если вы используете двигатели 5 В, вам необходимо обеспечить питание 7 В. Если у вас 12-ваттные двигатели, то напряжение питания вашего двигателя должно составлять 14 В.

Управления скоростью
Разъемы управления скоростью ENA и ENB используются для включения и выключения управления скоростью двигателей. Когда перемычка установлена, двигатель вращается с максимальной скоростью. Если необходимо управлять скоростью двигателей,  необходимо убрать перемычку и подключить выводы к контактам с поддержкой PWM на Arduino.

Подключение L298N к Arduino (коллекторный двигатель)

Необходимые детали:
► 
Arduino UNO R3 x 1 шт.
► Драйвер мотора на L298N (5-35V, 2A) x 1 шт.
► Коллекторный двигатель x 2 шт.
► Комплект проводов DuPont 2.54 мм, 20 см x 1 шт.

Подключение:
Первым делом необходимо подключить источник питания 12B к двигателям, в примере используется распространенные двигатель постоянного тока, рассчитанные на 3B . . . 12B (применяемые в робототехнике). Учитывая внутреннее падение напряжения на микросхеме L298N, двигатели получат 10 В и будут вращаться не в полную силу.
Далее, нужно подключить 5 вольт на логическую схему L298N, для этого  воспользуемся встроенным стабилизатором напряжения, который работает от источника питания двигателя, поэтому, перемычка EN должна быть установлена. 
Теперь осталось подключить управляющие провода ENA, IN1, IN2, IN3, IN4 и ENB к шести цифровым выводам Arduino 9, 8, 7, 5, 4 и 3. Обратите внимание, что выводы Arduino 9 и 3 поддерживают ШИМ. Теперь, подключаем двигатели, один к клемме A (OUT1 & OUT2), а другой к клемме B (OUT3 & OUT4). Принципиальная схема  подключения приведена ниже.

Подключение L298N к Arduino (коллекторный двигатель)

Осталось подключить Arduino к источнику питания и загрузить скетч.

  Скачать скетч

Описание скетча:
Скетч простой, не требует дополнительных библиотек.
Управление скоростью осуществляется с помощью выводов ENA и ENB через ШИМ (от 0 до 255), то-есть 0 равносильно 0B и значит остановка, а 255 равносильно 5В и двигатели крутятся на максимальной скорости. 

Направление вращения двигателя, осуществляется с помощью выводов IN1 и IN2 для первого двигателя и IN3 и IN4 для второго двигателя, то-есть, если подать на вывода IN1 — 0B (LOW), а на IN2 — 5B (HIGH) двигатель A будет вращаться вперед (так же и для двигателя B). Для вращения назад, необходимо подать на IN1 — 5B (HIGH), а на IN2 — 0B (LOW) двигатель A будет вращаться назад (так же и для двигателя B).

Подключение L298N к Arduino (шаговый двигатель)

Необходимые детали:
► 
Arduino UNO R3 x 1 шт.
► Драйвер мотора на L298N (5-35V, 2A) x 1 шт.
► Шаговый двигатель Nema 17 x 2 шт.
► Комплект проводов DuPont 2.54 мм, 20 см x 1 шт.

Описание:
В примере используется шаговый двигатель Nema 17, который совершает 200 шагов за один оборот и может работать на скорости 60 об/мин. Прежде чем мы начнем подключать двигатель к модулю, необходимо определить провода A+, A-, B+ и B-. Самый просто способ сделать это открыть документацию на двигатель, для нашего двигателя это красный , зеленый , синий и желтый.

Подключение L298N к Arduino (шаговый двигатель)

Подключение простое, первым делом необходимо установить перемычку EN, ENA и ENB. Далее подключаем источник питания на 12 В к клемме Vss. Теперь подключите входные контакты (IN1, IN2, IN3 и IN4) модуля L298N к четырем цифровым выходным контактам Arduino (8, 9, 10 и 11). 
Наконец, подключите провода A +, A-, B + и B- от шагового двигателя к модулю, как показано на рисунке ниже.

Запускаем среду разработки IDE Arduino и загружаем скетч ниже

  Скачать скетч

Описание скетча
Программа начинается с подключении стандартной библиотеки Stepper.

Следующей переменной с именем «stepsPerRevolution» указываем количество шагов на оборот, в нашем случаи это 200, то есть 1,8 градуса за шаг.

Далее указываем указываем к выводам подключен шаговый двигатель.

В void setup устанавливаем скорость шагового двигателя, вызывая функцию «setSpeed()» и инициализируем последовательный порт.

В void loop вызываем функцию «step()», которая вращает двигатель на определенное количество шагов со скоростью, определяемой в функцией setSpeed(). 

Подключение L298N к Arduino (шаговый двигатель)

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Комплект проводов DuPont, 2,54 мм, 20 см
  Драйвер мотора на L298N (5-35V, 2A)
  Мотор-колесо, диаметр 66 мм
  Шаговый двигатель Nema 17

17 комментариев для “Обзор драйвера мотора на L298N”
  1. Дуже цікава стаття виликою перевагою є те шо тут код є дісно роботчий провіряв .Неолік в коді для двох моторів не показано як керувати швидкістю мотору.

  2. Здравствуйте.
    Если я правильно понял, шаговый двигатель булдет последовательно совершать 500 шаго вперед, затем 500 шагов назад. И так до отключения питания.
    А как остановить процесс поле завершения цикла?

    1. Добрый день,
      Можете добавить в void setup() и он сделает цикл один раз.
      Но лучше оставить в void loop() и с помощь if ждать условия для выполнения цикла, например ожидания нажатия кнопки.

      1. Здравствуйте, Сергей. Могли бы Вы написать этот фрагмент программы.
        И еще один вопрос. Я подключил к драйверу шаговый мотор от сканера M35SP-11. Почему он так сильно греется. При этом преимущественно находясь в режиме ожидания.
        Останавливал я цикл с помощью delay(120000);

          1. Огромная благодарность.
            Попробую в этом разобраться. Драйвер заказал 🙂

      2. Сергей, в догонку еще вопрос, можно?
        Какой драйвер лучше для моего двигателя этот или A4988?
        Как микрошаги влияют на работу мотора, шум, скорость и пр…?
        Спасибо, извините за многословие, Вы единственный, кто так быстро и адекватно реагирует на мои вопросы

  3. Сергей, здравствуйте.
    Опять решил обратиться к вам за помощью:
    Начал эксперименты с мотором НЕМА 17 тип 4401. с драйвером L298N, н могу заставить его тупо вращаться в заданном направлении долго. Мне не понятно stepsPerRevolution = 200 назначает число шагов на оборот, а myStepper.setSpeed(60) скорость (число оборотов в минуту). Каким образом назначить вращение на 2 минуты или как задать 2000 оборотов всего?

    Опять длинные вопросы…
    с драйвером A4988, удается установить количество шагов до 32000, но при этом сам драйвер дико греется, радиатор без обдува не справляется, напряжение 15 В. (с обдувом еще не проверял) напряжение на потенциометре установил 1,2 В.

  4. Сергей,ответьте,пожалуйста начинающему ардуинщику. По незнанию заказал на Али вместо L298 модуль на MX1616.Как мне теперь реализовать управление скоростью моторов (Здесь нет выводов EN)?

    1. Здравствуйте, к сожалению MX1616 не поддерживает регулировку скорости.

  5. Здравствуйте. Я извиняюсь. Подключил мотор 17HS4401 к драйверу L298N по вшей схеме. Драйвер сильно греется, палец не удержать. Буквально за 20 сек, разогрелся сильно. Не подскажете в чем проблема? Питание на драйвер дал от компьютерного Блока питания 12В. Землю объеденил с ардуино.Убрал джампер на драйвере и подал питание на логику с ардуины. В чем проблема не пойму, так же и спалить драйвер можно.

    1. Здравствуйте,
      К драйверу можно подключить шаговый двигатель, но маломощные. Мотор 17HS4401 слишком мощный для драйвера L298N и в нем нет ограничение по току.
      Лучше воспользуйтесь A4988 или DRV8825

      1. Здравствуйте, а я купил мотор шилд для ардуино нано на L298P. Там управление по двум проводам In1 и In2, а In3 и In4 соответственно подключены к первым двум через инверторы. Примеров использования этого шилда в интернете нет вообще, а мне нужно управлять энкодером шаговик. Выводы шилда соединены с ардуиной нано таким образом: DirA D12, DirB D13, PWMA D3, PWMB D11, BrakeA D9, BrakeB D8, Current sendingA A0 и Current sendingB A1. Тормоза и измерители тока можно отрезать от ардуинки прямо на плате. Пытаюсь слепить из разных скетчей, но воз и ныне там.

  6. Здравствуйте. Поясните, пожалуйста, начинающему чайнику такой момент:
    Если я правильно понял, то сигналы на INT1 и INT2 указывают направление вращения двигателя. Если на обоих входах будет 0 то двигатель вращаться не будет? А если на обоих входах будет 1 — не получится КЗ через транзисторы моста?

  7. Внимание! Нельзя установить перемычку, если напряжение двигателя ниже 12 Вольт. Вообще-тот все наоборот …

  8. Скажите, а можно ли обойтись без ардуино?
    Например использовать простой генератор прямоугольных импульсов.

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

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