Драйвер L298N: управление моторами с Arduino

Модуль L298N на двух H-мостах управляет двумя коллекторными моторами или одним биполярным шаговым. Разбираем подключение и логику скетча.
Что умеет модуль
L298N — популярный у радиолюбителей драйвер для двигателей постоянного тока. В его основе два H-моста, поэтому к одной плате можно подключить либо два щёточных мотора одновременно, либо один биполярный шаговый двигатель. Драйвер позволяет менять и скорость, и направление вращения.

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


Подключение двух моторов
В примере драйвер работает с платой Arduino Nano. Входы разрешения ENA и ENB отвечают за скорость первого и второго мотора и подключены к пинам 9 и 3. Направление первого мотора задают входы IN1 и IN2 (пины 7 и 6), второго — IN3 и IN4 (пины 5 и 4).

- ENA — пин 9, ENB — пин 3: ШИМ-сигнал скорости;
- IN1 — пин 7, IN2 — пин 6: направление мотора №1;
- IN3 — пин 5, IN4 — пин 4: направление мотора №2.
Как работает скетч
В начале программы макроопределениями задаются номера всех используемых выводов, а в setup() они переводятся в режим выхода. На IN1–IN4 сразу выставляются логические нули, чтобы при старте моторы гарантированно стояли.
Скорость хранится в переменной power — это значение ШИМ, которое командой analogWrite передаётся на ENA и ENB. Стартовое значение — 105. В основном цикле моторы вращаются в одну сторону (на IN1 и IN3 высокий уровень, на IN2 и IN4 низкий), и каждые 3 секунды значение увеличивается на 30, пока не подойдёт к максимуму 255. Затем уровни на входах направления меняются местами, моторы начинают крутиться в обратную сторону, а скорость с тем же шагом и интервалом снижается от 225 до 105. После этого всё повторяется.
Тот же модуль подходит и для биполярного шагового двигателя, который занимает оба моста; в источнике упоминается такая схема на Arduino Nano, а в качестве практического применения драйвера приводится робот-машинка на колёсном шасси.