Драйвер моторов L298N: обзор, схема, честные минусы
Синяя платка с большим радиатором — первое, что попадает в руки при сборке машинки на Arduino. Внутри микросхема STMicroelectronics L298: два полных моста, то есть два мотора вперёд-назад с регулировкой скорости. Разбираем по документации производителя, что она может, и сразу — чего она не может.

Характеристики по документации ST
| Параметр | Значение |
|---|---|
| Напряжение питания моторов | до 46 В |
| Суммарный ток | до 4 А |
| Каналов | два полных моста (2 мотора или 1 шаговый) |
| Управление | обычные логические уровни, «ноль» — до 1,5 В |
| Падение напряжения на ключах | около 1,8 В типовое, до 4,9 В в худшем случае |
| Защита | от перегрева, встроенная |
| Корпус микросхемы | Multiwatt15 |
Главный минус, о котором не пишут продавцы
Обратите внимание на строку с падением напряжения. L298 сделан на биполярных транзисторах, и часть питания оседает на них в виде тепла: при питании 12 В до мотора доходит около 9-10 В. Отсюда два следствия. Первое: мотор на 6 В от батарейного отсека 6 В попросту не поедет — нужно давать 9 В и выше. Второе: всё, что не доехало, греет радиатор, поэтому он такой большой.
Современная замена — драйверы на полевых транзисторах, например TB6612FNG или DRV8833: падение там доли вольта, размер меньше, нагрев почти нулевой. L298N остаётся оправдан, когда нужны высокое напряжение (до 46 В) и запас по току, или когда плата уже лежит в ящике.
Подключение к Arduino
L298N Arduino
ENA -> D5 (ШИМ, скорость мотора A)
IN1 -> D6
IN2 -> D7
IN3 -> D8
IN4 -> D9
ENB -> D10 (ШИМ, скорость мотора B)
GND -> GND (обязательно общий с платой!)
12V -> плюс питания моторов
OUT1/OUT2 -> мотор A
OUT3/OUT4 -> мотор B
Общий GND — не формальность: без него плата и драйвер не имеют единой точки отсчёта, и моторы ведут себя как попало.
Перемычка 5V EN: самое опасное место
На плате есть джампер рядом с клеммником. Он включает встроенный стабилизатор, который делает 5 В из питания моторов.
- Перемычка стоит — на пине 5V появляется напряжение, им можно питать Arduino. Но при питании выше 12 В стабилизатор перегревается.
- Перемычка снята — 5 В нужно подать снаружи. Именно так надо делать, если моторы питаются от 12 В и выше.
Типовая ошибка: оставить перемычку, подать 19 В от ноутбучного блока и удивиться запаху. Стабилизатор на плате рассчитан на скромный вход.
Код: едем вперёд и тормозим
const int ENA = 5, IN1 = 6, IN2 = 7;
void setup() {
pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
}
void loop() {
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); // вперёд
analogWrite(ENA, 200); // скорость 0..255
delay(2000);
digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); // выбег
delay(1000);
digitalWrite(IN1, HIGH); digitalWrite(IN2, HIGH); // торможение
delay(500);
}
Комбинация «оба входа в ноль» отпускает мотор, «оба в единицу» — тормозит замыканием обмотки. На малых значениях ШИМ (меньше 60-70) мотор обычно только гудит: не хватает момента, чтобы тронуться.
Шаговый двигатель
Тот же модуль крутит один биполярный шаговик: обмотки на OUT1/OUT2 и OUT3/OUT4, управление — стандартной библиотекой Stepper. Но для шаговых моторов удобнее специализированные драйверы вроде A4988: у них задаётся ток, есть микрошаг и меньше нагрев. L298N здесь — вариант «из того, что есть».
Если моторы будут работать от аккумулятора, посмотрите заодно разбор зарядного модуля TP4056: питание моторов и питание логики лучше разводить отдельно.
Информация собрана из открытых источников и паспортов производителей и не является истиной в последней инстанции. Характеристики, распиновку и совместимость проверяйте по документации конкретной партии модуля перед покупкой и подключением.