Драйвер двигателя L298N и Arduino: схема подключения, управление скоростью и направлением, скетч
L298N — самый распространённый модуль для управления двумя моторами постоянного тока или одним шаговым. Внутри две H-мостовые схемы, радиатор и стабилизатор на 5 В, который может даже питать саму Arduino от аккумулятора моторов.
У него есть цена: два вольта теряются на ключах. Мотор на 12 В получит десять — незаметно. Мотор на 6 В получит четыре — заметно. Для маленьких моторов от батареек лучше взять TB6612 или DRV8833; L298N хорош там, где моторы на 9–12 В и ток до двух ампер.
Схема подключения
Распиновка
| Провод | Куда и зачем |
|---|---|
| IN1, IN2 | Направление мотора A: 1-0 вперёд, 0-1 назад, 0-0 выбег, 1-1 тормоз. |
| IN3, IN4 | То же для мотора B. |
| ENA, ENB | Разрешение и скорость канала. С перемычкой — всегда включён на полную; без перемычки — ШИМ с вывода Arduino. |
| 12V | Вход питания моторов, 7–35 В. Название условное: сюда подают то, на что рассчитаны моторы. |
| GND | Земля силовой части. Соединяется с землёй Arduino. |
| 5V | Выход встроенного стабилизатора при перемычке 5V-EN: отсюда можно питать Arduino через VIN. Если питание моторов выше 12 В, перемычку снимают и сюда подают 5 В снаружи. |
| OUT1, OUT2 | Клемма мотора A. |
| OUT3, OUT4 | Клемма мотора B. |
Характеристики
- Микросхема
- L298N, двойной H-мост
- Питание моторов
- 7–35 В
- Ток
- до 2 А на канал, 3 А пиковый
- Падение на ключах
- около 2 В
- Логика
- 5 В, совместима с 3,3 В по входам
- Стабилизатор 5 В
- до 0,5 А при питании до 12 В
- Размер
- 43 × 43 мм
Перемычка 5V-EN и питание Arduino
При установленной перемычке встроенный стабилизатор делает из напряжения моторов 5 В и выдаёт их на клемму 5V. Их хватает, чтобы питать Arduino через вывод VIN или 5V: одна батарея на всё. Правило — так делают только при питании до 12 В, выше стабилизатор перегревается.
Если моторы питаются от 24 В, перемычку снимают, а на клемму 5V подают 5 В от Arduino: без них логика драйвера не работает. Это единственный случай, когда ток идёт в клемму 5V, а не из неё.
Библиотека
не нужна— Три digitalWrite и один analogWrite на канал. Библиотеки вроде L298N упрощают код, но ничего не добавляют.
Готовый скетч
// Один мотор на канале A драйвера L298N
const int ENA = 9; // ШИМ — скорость
const int IN1 = 8;
const int IN2 = 7;
void forward(int speed) {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, speed); // 0..255
}
void backward(int speed) {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, speed);
}
void stop() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
analogWrite(ENA, 0);
}
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
stop();
}
void loop() {
forward(200); delay(2000);
stop(); delay(500);
backward(120); delay(2000);
stop(); delay(500);
}Скетч собирается arduino-cli под Arduino UNO
Скорость ниже 60–80 из 255 мотор обычно не тянет: ключи съедают напряжение, и он гудит на месте.
Частые ошибки
Мотор крутится только на полной скорости
Перемычка на ENA не снята: канал всегда включён, ШИМ на него не влияет. Снимите перемычку и подключите ENA к выводу с ШИМ.
Мотор вялый, хотя питание 6 В
Два вольта уходят на ключи L298N — мотору достаётся четыре. Либо поднимите питание, либо возьмите драйвер с меньшим падением: TB6612 или DRV8833.
Arduino перезагружается при старте мотора
Плата питается от того же аккумулятора, и пусковой ток мотора просаживает напряжение. Электролит 1000 мкФ на клемме 12V, а лучше — отдельное питание платы.
Радиатор обжигает пальцы
При двух амперах на канал микросхема рассеивает до 8 Вт — это норма для L298N. Если нагрев мешает, ток меньше или драйвер современнее.
Работает канал A, молчит канал B
Питание логики не подано: перемычка 5V-EN снята, а на клемму 5V ничего не пришло. Верните перемычку или подайте 5 В.
Что понадобится
- Модуль драйвера L298N
- Мотор постоянного тока 6–12 В
- Аккумулятор или блок питания под мотор
- Arduino UNO
- Провода «папа-мама» и «папа-папа»