Моторы · разбор

Мотор и Arduino: подключение, драйвер L298N и управление скоростью

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

Если вы делаете это в первый раз — начните с урока 23 «Мотор и транзистор»: там один мотор, одна сторона вращения и подробная сборка на макетной плате. Здесь — следующий шаг: как ездить в обе стороны, как выбрать драйвер и что делать, когда мотор крутится не так, как хочется.

Почему мотор нельзя подключить прямо к выводу платы

Вывод микроконтроллера рассчитан на 20 миллиампер — этого хватает светодиоду и не хватает никакому мотору. Но одним током дело не заканчивается: у мотора есть три свойства, каждое из которых по-своему опасно для платы.

Сколько тока просит мотор и сколько отдаёт вывод платыВывод платы отдаёт20 мАМотор без нагрузки80 мАМотор везёт робота380 мАМаксимальная нагрузка1300 мАМотор — с карточки JGA25-370B (12 В, 620 об/мин): 80, 380 и 1300 мА
Полоска вывода платы почти не видна — и это главный ответ на вопрос «почему нельзя напрямую». Между платой и мотором всегда стоит что-то, что берёт ток из отдельного питания.

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

Второе: мотор проседает питание. В момент старта он выгребает ток так резко, что напряжение на всей схеме падает — и плата перезагружается, а экран гаснет. Это самая частая жалоба «всё работало, пока не подключил мотор».

Третье: обмотка не отпускает ток сразу. Катушка запасает энергию в магнитном поле, и когда питание выключают, она пытается протолкнуть ток дальше, поднимая напряжение до десятков вольт. Этот выброс и убивает выводы платы. Поэтому в любой схеме с мотором есть диоды, которые дают току безопасный обратный путь: на модулях они уже распаяны, а к голой микросхеме их пришлось бы добавлять руками — даташит L298 прямо требует четыре быстрых диода на каждый мост.

Три способа поставить что-то между платой и мотором

Выбор простой и зависит от одного вопроса: нужно ли мотору ездить назад. Если нет — хватит одного транзистора. Если да — нужен H-мост: четыре ключа, собранные в две половинки, которые подают на обмотку напряжение то в одну, то в другую сторону.

Что ставимДля чегоНаправлениеЧем платим
Один транзистор (силовой ключ)Вентилятор, помпа, лента — всё, что крутится в одну сторонуТолько одноДешевле всего, один вывод платы
H-мост малой мощностиМаленькие моторы игрушек и настольных роботов, до 300 мАОбе стороныДва вывода платы, размер со спичечный коробок
H-мост на два канала (L298N)Мотор-редукторы робота, до 2 А на канал, питание до 35 ВОбе стороны, два мотораШесть выводов платы, нужен радиатор
Готовый шилд или драйвер по шинеТо же самое, но без россыпи проводовОбе стороны, два мотораДороже, зато собирается за минуту

Как работает H-мост

Название — от формы схемы: два вертикальных плеча и обмотка мотора перекладиной между ними, вместе получается буква H. Каждое плечо умеет прицепить свой конец обмотки либо к плюсу питания, либо к земле. Всё поведение мотора — это четыре комбинации двух таких переключателей.

H-мост: две половинки, каждая цепляет свой конец обмотки к плюсу или к земле+ питание моторовобщая земляплюсIN1 = HIGHземляIN2 = LOWобмотка мотораENA = ШИМмост включёнВ даташите это состояние называется «Forward»
Левый конец обмотки подключён к плюсу, правый — к земле. Ток идёт слева направо, вал крутится в одну сторону.

Обратите внимание на два последних состояния: остановка бывает разной. Выбег — мост отпускает обмотку, и тяжёлый робот проезжает ещё полметра. Торможение — оба конца обмотки замкнуты между собой, мотор начинает работать генератором сам на себя и встаёт почти мгновенно. В даташите L298 эти состояния так и называются: Free Running Motor Stop и Fast Motor Stop.

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

IN1IN2ENAЧто делает моторКак это названо в даташите
HIGHLOWШИМКрутится вперёдForward
LOWHIGHШИМКрутится назадReverse
LOWLOWHIGHРезко тормозитFast Motor Stop
HIGHHIGHHIGHРезко тормозитFast Motor Stop
любойлюбойLOWКатится по инерцииFree Running Motor Stop

Модуль L298N: что на нём подписано

Это самый распространённый драйвер для начинающих: красная плата с чёрным радиатором. На ней стоят сама микросхема, восемь защитных диодов, стабилизатор на 5 вольт и три группы контактов.

Модуль на L298N: всё, что подписано на платеL298N8 диодовуже на плате78M05OUT1 · OUT2OUT3 · OUT4+12VGND+5VJP1ENAENBIN1IN2IN3IN4первый моторвторой моторснять, если питание выше 12 Вснять, чтобы управлять скоростью
Подписи взяты с самой платы: клеммы моторов, винтовой клеммник питания, перемычка стабилизатора и гребёнка управления. Восемь диодов и стабилизатор уже распаяны — к голой микросхеме их пришлось бы добавлять самому.

Моторы прикручиваются к синим клеммникам по краям: первый — к OUT1 и OUT2, второй — к OUT3 и OUT4. Если мотор поехал не в ту сторону, эти два провода просто меняют местами, программу править не нужно. Питание приходит на средний клеммник, а управление — на гребёнку из шести штырьков.

На модулеНа плате UnoЗачем
ENA9 (с ШИМ)Скорость первого мотора
IN18Направление первого мотора
IN27Направление первого мотора
IN34Направление второго мотора
IN42Направление второго мотора
ENB10 (с ШИМ)Скорость второго мотора
GNDGNDОбщая земля — без неё ничего не работает
+12VПлюс батареиПитание моторов, не с платы
+5VОбычно не трогаютВыход стабилизатора модуля, 5 В для логики

Выводы 9 и 10 выбраны не случайно: на них есть ШИМ, а значит, ими можно задавать скорость. Остальные четыре — обычные, они только показывают направление. Менять номера можно, но ENA и ENB обязаны остаться на выводах с ШИМ.

Управляющие входы понимают и пятивольтовую, и трёхвольтовую логику: по даташиту единицей считается всё, что выше 2,3 вольта. Поэтому тот же модуль без переходников работает с ESP32 и ESP8266 — а вот питание моторов к ним по-прежнему приходит своё.

Три ошибки, на которых спотыкаются почти все

  • Не соединили земли. Батарея питает моторы, USB питает плату, а минус у них общий не сделали. Драйвер сравнивает управляющий сигнал со своей землёй — и без общего минуса просто не понимает команд. Провод GND модуля к GND платы обязателен всегда.
  • Забыли снять перемычку с ENA. Если её оставить, вход разрешения жёстко притянут к пяти вольтам: мотор крутится только на полной скорости, а analogWrite будто не работает. Снимите перемычку и заведите ENA на вывод с ШИМ.
  • Питают моторы от вывода 5V платы. Так делать нельзя: у платы там маленький стабилизатор, он перегреется и уйдёт в защиту, а плата будет перезагружаться. Моторам нужен свой источник.

Первый рабочий скетч: мотор едет вперёд, останавливается, едет назад.

// Мотор через драйвер L298N: направление задают IN1 и IN2, скорость - ENA.
// Вывод под ENA обязательно с ШИМ: на Uno это 3, 5, 6, 9, 10 или 11.
// Землю платы и минус питания моторов соединяем - без общей земли
// драйвер не понимает сигналы.

const uint8_t IN1 = 8;   // первый вход моста
const uint8_t IN2 = 7;   // второй вход моста
const uint8_t ENA = 9;   // разрешение и скорость (ШИМ)

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENA, OUTPUT);
  coast();               // на старте мотор выключен
}

// Вращение в одну или другую сторону, скорость 0...255.
void run(bool forward, uint8_t speed) {
  digitalWrite(IN1, forward ? HIGH : LOW);
  digitalWrite(IN2, forward ? LOW : HIGH);
  analogWrite(ENA, speed);
}

// Выбег: мост отключён, вал докатывается сам.
void coast() {
  analogWrite(ENA, 0);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
}

void loop() {
  run(true, 200);        // вперёд
  delay(2000);
  coast();
  delay(1000);
  run(false, 200);       // назад
  delay(2000);
  coast();
  delay(1000);
}

Куда девается напряжение по дороге к мотору

Вот главная неожиданность этого драйвера. L298 сделан на биполярных транзисторах, а они не превращаются в идеальный провод — на каждом остаётся своё падение напряжения. Даташит даёт числа прямо: при токе 1 ампер типичное падение — 2,55 вольта (в лучшем случае 1,8, в худшем 3,2), при 2 амперах — 3,7 вольта и до 4,9 в пределе. На схеме ниже показан диапазон от типового до предельного.

Куда девается напряжение по дороге к мотору12,0 В на клеммемост забирает 2,53,2 Вмотору достаётся 8,89,4 ВЧисла — из даташита L298: типовое падение и предельное, при токе 1 А.Эти вольты превращаются в тепло на радиаторе, а не в обороты.
Подвигайте ползунок к шести вольтам — станет видно, почему «мотор на 6 В» через L298N часто не трогается с места: до обмотки доезжает меньше половины.

Отсюда сразу три вывода. Питание нужно брать с запасом: под «мотор на 12 вольт» ставят источник на 12 вольт и мирятся с тем, что до обмотки доедет около девяти. Потерянные вольты превращаются в тепло — поэтому у модуля радиатор, и греется он честно, а не от поломки. И если мотор рассчитан на 5–6 вольт, а питание такое же, до него доедет половина: он может даже не тронуться. В этом случае берут либо питание повыше, либо драйвер на полевых транзисторах, у которых падение в разы меньше.

Ещё одна мелочь из даташита: сама микросхема без всякого мотора потребляет до 70 миллиампер. Для батарейного робота это заметная величина — драйвер стоит обесточивать, когда он не нужен.

Питание: откуда брать ток

Правило простое: плата питается сама, моторы — сами, земля общая. Для мотор-редукторов робота подходит батарейный отсек на четыре-шесть пальчиковых батареек или аккумулятор; для настольного проекта — блок питания на 12 вольт с запасом по току хотя бы вдвое от того, что берут моторы.

На модуле есть перемычка стабилизатора. По карточке нашего модуля правило такое: питание от 6 до 12 вольт — перемычка стоит, и встроенный стабилизатор сам делает 5 вольт для логики драйвера. Питание выше 12 вольт — перемычку обязательно снять и подать 5 вольт на клемму +5V отдельно, иначе стабилизатор перегреется.

Обратный вариант — питать плату Arduino от этих же 5 вольт с модуля — работает, но только когда плата не подключена к компьютеру по USB. Одновременно два источника на одну линию 5 В подавать не нужно.

Если плата перезагружается в момент старта мотора, а провода уже правильные, помогает электролитический конденсатор на 470–1000 мкФ прямо на клеммах питания моторов: он сглаживает провал. Это не роскошь, а стандартная часть схемы с моторами.

Скорость: ШИМ и порог трогания

Скоростью управляет не «сила тока», а доля времени. Плата очень быстро включает и выключает питание мотора: команда analogWrite(ENA, 128) означает «включено половину времени». Мотор из-за инерции сглаживает эти ступеньки и крутится так, будто ему дали половину напряжения.

ШИМ: мотор получает полное напряжение, но не всё времявключеновыключенов среднем 5,9 ВНа выводах 5 и 6 такие ступеньки идут 977 раз в секунду,на выводах 3, 9, 10 и 11 — 490 раз. На этой частоте мотор пищит.Средние вольты посчитаны для питания 12 В через мост L298N.
Ниже какого-то значения мотор только гудит и не трогается: сил не хватает сорвать вал с места. Это значение у каждого мотора своё — его находят скетчем-лесенкой ниже.

Частота этих ступенек у Uno фиксированная и зависит от того, на какой вывод вы попали. Это же таблица конфликтов: каждый счётчик времени, кроме ШИМ, занят ещё чем-то полезным.

ВыводыЧастота ШИМКто ещё пользуется этим счётчиком
5 и 6977 ГцСчётчик 0 — он же ведёт время: millis(), delay()
9 и 10490 ГцСчётчик 1 — его целиком забирает библиотека Servo
3 и 11490 ГцСчётчик 2 — им пользуется команда tone()

Мотор гудит, но не крутится

У каждого мотора есть порог: значение ШИМ, ниже которого сил не хватает сорвать вал с места. До порога мотор только пищит и греется. Число это своё у каждого мотора и зависит от нагрузки, поэтому его не берут из интернета, а находят за минуту: скетч поднимает скорость ступеньками и печатает их в монитор порта.

// Порог трогания: с какого значения ШИМ мотор реально начинает крутиться.
// Скетч поднимает скорость ступеньками и печатает её в монитор порта.
// Смотрите на вал: как только он тронулся - это ваше число.

const uint8_t IN1 = 8;
const uint8_t IN2 = 7;
const uint8_t ENA = 9;

const uint8_t STEP = 5;      // на сколько поднимаем ШИМ за ступеньку
const uint16_t HOLD = 800;   // сколько держим ступеньку, мс

void setup() {
  Serial.begin(9600);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENA, OUTPUT);
  digitalWrite(IN1, HIGH);   // направление задаём один раз
  digitalWrite(IN2, LOW);
  Serial.println(F("Смотрите на вал: когда тронется - это порог"));
}

void loop() {
  for (uint8_t value = 0; value <= 250; value += STEP) {
    analogWrite(ENA, value);
    Serial.println(value);
    delay(HOLD);
  }

  analogWrite(ENA, 0);       // отдых и заново
  Serial.println(F("--- пауза ---"));
  delay(3000);
}

Запомнили число — и дальше в программе не пишите значений ниже него. Удобнее пересчитывать: «скорость 30 %» превращать не в 76, а в значение между порогом и 255 — так проценты становятся честными. Именно это делает скетч робота ниже.

Писк на низкой скорости

490 раз в секунду — это частота, которую человек прекрасно слышит: обмотка мотора работает как маленький динамик. Лечится переводом счётчика на частоту выше слуха. Одна строчка в setup() поднимает частоту на выводах 3 и 11 до 31 372 Гц:

TCCR2B = (TCCR2B & 0b11111000) | 0x01;  // выводы 3 и 11: 31 372 Гц

Три оговорки. ENA после этого должен быть на выводе 3 или 11, а не на 9. Команда tone() начнёт врать — она пользуется этим же счётчиком. И сам L298 по даташиту рассчитан на переключение до 25–40 килогерц, причём каждое переключение занимает до двух микросекунд: на 31 килогерце мост заметную часть времени проводит в переходном состоянии и греется сильнее. Если греется сверх меры — вернитесь к штатной частоте или возьмите драйвер на полевых транзисторах.

ШИМ на ENA или на IN1 — разница есть

Обычно ШИМ подают на ENA: в паузах мост отпускает обмотку, ток гаснет через диоды. Но можно наоборот — держать ENA включённым, а ШИМ подавать на IN1 при IN2 в нуле. Тогда в паузах оба входа оказываются в одном состоянии, а это, по таблице выше, торможение: обмотка замкнута сама на себя и ток продолжает течь по кругу.

На практике второй способ даёт более ровный ход на малой скорости — ток в обмотке не рвётся. Начните с ШИМ на ENA (так написаны все примеры), а если на малых скоростях мотор дёргается, попробуйте перенести ШИМ на вход направления.

Две остановки: выбег и торможение

Разницу проще один раз увидеть, чем прочитать. Скетч разгоняет мотор и останавливает его двумя способами по очереди — прокрутите вал пальцем или наденьте на него бумажный флажок, чтобы разница бросалась в глаза.

// Два способа остановить мотор - и разница между ними.
// Выбег: снимаем разрешение, мост отключается, вал докатывается сам.
// Торможение: на оба входа один и тот же уровень при включённом ENA -
// обмотка замкнута сама на себя, и мотор встаёт заметно резче.

const uint8_t IN1 = 8;
const uint8_t IN2 = 7;
const uint8_t ENA = 9;

void setup() {
  Serial.begin(9600);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENA, OUTPUT);
}

void spinUp() {              // разгон до полной скорости
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, 255);
  delay(1500);
}

void loop() {
  Serial.println(F("Разгон, потом выбег"));
  spinUp();
  analogWrite(ENA, 0);       // мост выключен - вал докатывается
  delay(3000);

  Serial.println(F("Разгон, потом торможение"));
  spinUp();
  digitalWrite(IN1, LOW);    // оба входа в одно состояние -
  digitalWrite(IN2, LOW);    // это замыкание обмотки, а не выключение
  analogWrite(ENA, 255);     // разрешение остаётся, иначе получится выбег
  delay(3000);
}

Торможение — не бесплатная операция: в этот момент через мост идёт весь ток, который мотор вырабатывает сам. Даташит прямо предупреждает, что в режиме быстрой остановки нельзя выходить за предельные 2 ампера. Для тяжёлого робота на полном ходу лучше сначала сбросить скорость до нуля плавно, а потом уже тормозить.

Два мотора: робот на двух колёсах

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

// Двухколёсный робот на драйвере L298N.
// Левый мотор - клеммы OUT1/OUT2, правый - OUT3/OUT4.
// MIN_PWM возьмите из скетча-лесенки: ниже него мотор только гудит.

const uint8_t L_IN1 = 8;
const uint8_t L_IN2 = 7;
const uint8_t L_EN = 9;     // ШИМ

const uint8_t R_IN1 = 4;
const uint8_t R_IN2 = 2;
const uint8_t R_EN = 10;    // ШИМ

const int MIN_PWM = 60;     // порог трогания ваших моторов

void setup() {
  const uint8_t pins[] = {L_IN1, L_IN2, L_EN, R_IN1, R_IN2, R_EN};
  for (uint8_t i = 0; i < sizeof(pins); i++) {
    pinMode(pins[i], OUTPUT);
  }
  drive(0, 0);
}

// Скорость одного колеса: от -100 (полный назад) до 100 (полный вперёд).
void wheel(uint8_t in1, uint8_t in2, uint8_t en, int percent) {
  percent = constrain(percent, -100, 100);
  digitalWrite(in1, percent >= 0 ? HIGH : LOW);
  digitalWrite(in2, percent >= 0 ? LOW : HIGH);

  int power = abs(percent);
  if (power == 0) {
    analogWrite(en, 0);                          // выбег
  } else {
    analogWrite(en, map(power, 1, 100, MIN_PWM, 255));
  }
}

void drive(int left, int right) {
  wheel(L_IN1, L_IN2, L_EN, left);
  wheel(R_IN1, R_IN2, R_EN, right);
}

void loop() {
  drive(70, 70);            // вперёд
  delay(1500);
  drive(0, 0);
  delay(700);
  drive(70, -70);           // разворот на месте
  delay(700);
  drive(0, 0);
  delay(700);
  drive(-60, -60);          // назад
  delay(1200);
  drive(0, 0);
  delay(1500);
}

Два одинаковых мотора почти никогда не крутятся одинаково — робот будет уводить в сторону. Пока речь про игрушку, это лечится поправкой в программе: одному колесу дают на несколько процентов меньше. Если нужно ехать ровно по-настоящему, берут моторы с энкодерами: они сообщают плате, сколько оборотов реально сделали, и программа сама подравнивает колёса.

Одно направление? Хватит одного транзистора

Вентилятору, помпе или светодиодной ленте H-мост не нужен: там достаточно одного ключа, который включает и выключает питание. Схему с транзистором и защитным диодом мы подробно разбираем в уроке 23 — с макетной платой, полярностью диода и разбором ошибок.

Если собирать не хочется, есть готовый модуль — силовой ключ: подаёте на него сигнал с любого вывода, а он коммутирует до 10 ампер. И одна тонкость про полевые транзисторы, о которой обычно узнают поздно: сопротивление в паспорте указано при 10 вольтах на затворе, а плата даёт только 5. На токе в пару сотен миллиампер разницы не видно, а вот на ампере и выше транзистор начнёт греться. Для больших токов берут «логические» полевые — у них в маркировке есть буква L.

Мотор мотору рознь

Всё, что выше, относится к коллекторному мотору постоянного тока — тому самому, у которого два провода. Соседние типы управляются иначе, и путать их дорого.

ТипЧем управляютЧто нужно между платой и моторомГде применяют
Коллекторный (DC)Напряжение: больше вольт — быстрееТранзистор или H-мостКолёса, вентиляторы, помпы — всё, что просто крутится
СервоприводДлина импульса задаёт уголНе нужен, управляется одним выводомПовернуть на заданный угол: шлагбаум, рука, руль
ШаговыйОбмотки включаются по очередиСвой: ULN2003, A4988, DRV8825Точное перемещение: станки, принтеры, подача
Бесколлекторный (BLDC)Регулятор ESC, импульсы как у сервоРегулятор ESC, отдельно от платыДроны, модели, большие обороты

Сервопривод разобран в уроке 22: ему драйвер не нужен, но питание всё равно берут не с вывода платы. Шаговые двигатели и их драйверы перечислены в хабе модулей. А бесколлекторному мотору нужен регулятор ESC: плата шлёт ему такие же импульсы, как сервоприводу, той же библиотекой Servo, и после включения регулятор ждёт команду «ноль» — без этой процедуры он не запустится.

Не крутится, греется, перезагружается

Порядок проверки, от самого частого к редкому.

  • Мотор молчит совсем. Проверьте общую землю платы и питания моторов, затем питание на клеммах модуля тестером. Дальше проверьте железо без программы: верните перемычку на ENA, соедините IN2 с GND модуля и коснитесь IN1 проводом от +5V. Мотор должен закрутиться — значит, железо живо и дело в программе или в номерах выводов.
  • Крутится только на полной скорости. Перемычка на ENA не снята, либо ENA попал на вывод без ШИМ.
  • Гудит, но не трогается. Слишком маленькое значение ШИМ (найдите порог скетчем выше) или слишком низкое напряжение после падения на мосту.
  • Плата перезагружается при старте мотора. Моторы питаются от платы или от слабой батареи. Разделите питание, добавьте конденсатор.
  • Модуль ощутимо горячий. Это нормально в разумных пределах: на мосту оседает пара вольт. Ненормально — если пахнет или обжигает: значит, ток выше двух ампер, мотор клинит или произошло короткое замыкание в проводке моторов.
  • Один мотор из двух не крутится. Поменяйте моторы местами на клеммниках. Поехал другой — дело в канале драйвера или в номерах выводов; не поехал тот же — виноват мотор или его провода.
  • Мотор стартует сам при включении питания. Выводы платы в первый миг после подачи питания ещё не настроены. Даташит советует держать вход разрешения в нуле, пока питание включается и выключается: в скетче это первая строка setup().

Что купить

Всё перечисленное — наши модули, характеристики взяты с карточек. Цены и наличие указаны на 23 августа 2026 года.

Драйвер моторов на L298N

Тот самый модуль с радиатором. Два мотора по 2 ампера, питание моторов от 5 до 35 вольт, встроенный стабилизатор на 5 вольт. Управляющие входы понимают и 5, и 3,3 вольта, так что модуль подходит и к ESP32.

396 ₽
В магазин
арт. 60 · цена и наличие на 23.08.2026

Драйвер мотора, Trema-модуль

Один мотор до 300 миллиампер, питание мотора 2,5–12 вольт, размер 30 на 30 миллиметров. Управление предельно простое: один вывод задаёт направление, второй — скорость. Для настольного проекта и маленьких моторов этого хватает, а проводов вдвое меньше.

160 ₽
В магазин
арт. 1372 · цена и наличие на 23.08.2026

Motor Shield на два канала, до 35 В

Тот же L298, но в виде платы, которая надевается на Uno сверху — паять и разводить провода не нужно. Питание моторов от 2,5 до 35 вольт, до 2 ампер суммарно. По умолчанию занимает выводы с 4 по 7, перемычками их можно переназначить. Есть и версия полегче — до 10,8 вольта за 740 ₽.

1380 ₽
В магазин
арт. 1684 · цена и наличие на 23.08.2026

Драйвер мотора с контроллером, FLASH-I2C

Драйвер со своим управляющим контроллером: занимает две линии шины I²C вместо трёх выводов на мотор, держит до 3 ампер, умеет читать энкодер и сам защищается от перегрева и перегрузки. Стоит своих денег, когда выводы платы кончились или робот должен ехать ровно.

396 ₽
В магазин
арт. 1413 · цена и наличие на 23.08.2026

Робоплатформа на двух колёсах

Готовая механика под всё, что описано выше: акриловый корпус, два колеса с мотор-редукторами TT и опорный ролик. Сами моторы продаются и отдельно, по 216 ₽ — питание 3–12 вольт, без нагрузки 70 миллиампер, при максимальной 670.

1190 ₽
В магазин
арт. 1833 · цена и наличие на 23.08.2026

Эта тема в Trema IDE

  • Готовые примеры под моторы в разделах со скетчами — с русскими комментариями, включая плавный разгон и управление с крутилки.
  • Монитор порта с графиком. Скетч-лесенка из этой статьи печатает числа, а среда рисует по ним график — порог трогания видно глазами.
  • Ошибки объясняются по-русски. Если analogWriteпопал на вывод без ШИМ или библиотека конфликтует со счётчиком, среда переводит сообщение компилятора на человеческий язык.
  • Библиотеки ставятся из нашего каталога — без похода на чужие сайты и без ручной распаковки архивов.

Вопросы и ответы

Коротко о главном

Если чего-то не хватает — напишите нам через форму поддержки, мы дополняем страницы по реальным вопросам.

Как подключить мотор к Arduino?

Только через что-то, что берёт ток из отдельного источника. Вывод платы отдаёт 20 миллиампер, а мотору нужны сотни. Если мотор должен крутиться в одну сторону, хватит транзистора или силового ключа. Если нужно и вперёд, и назад — ставят H-мост, например модуль на микросхеме L298N. Землю платы и минус питания моторов при этом обязательно соединяют.

Почему мотор не крутится через драйвер L298N?

Три причины закрывают почти все случаи. Первая: не соединены земли платы и питания моторов — драйвер не понимает команд. Вторая: на входе ENA осталась перемычка, тогда скорость не меняется вовсе или мотор крутится только на полной. Третья: питания слишком мало — мост забирает себе от 1,8 до 3,2 вольта при токе в ампер, и мотору на 6 вольт остаётся половина.

Можно ли питать мотор от вывода 5V на плате Arduino?

Нет. Стабилизатор платы на такой ток не рассчитан: он перегреется и уйдёт в защиту, а плата начнёт перезагружаться в момент старта мотора. Моторам нужен свой источник — батарейный отсек, аккумулятор или блок питания, — а с платой у него должен быть общий минус.

Почему драйвер L298N сильно греется?

Так работает эта микросхема: на её транзисторах оседает от 1,8 до 4,9 вольта в зависимости от тока, и эти вольты превращаются в тепло. Тёплый радиатор — норма. Тревожный признак — запах или невозможность коснуться: значит, ток выше двух ампер, мотор клинит или в проводке моторов замыкание. Драйверы на полевых транзисторах греются в разы меньше.

Как заставить мотор крутиться в другую сторону?

Поменять местами уровни на двух входах направления: где был высокий — сделать низкий, и наоборот. Если мотор с самого начала поехал не туда, проще поменять местами два провода мотора на клеммнике драйвера — программу править не придётся.

Какой драйвер выбрать для робота на двух колёсах?

Считайте по току мотора при остановленном вале, а не по рабочему: в момент старта мотор потребляет именно столько. Для маленьких моторов до 300 миллиампер хватит компактного модуля с одним каналом на мотор. Для обычных жёлтых мотор-редукторов берут двухканальный драйвер на L298N или Motor Shield, который надевается на плату сверху.

Дальше по теме

Первый мотор своими руками, шаг за шагом — урок 23. Какие вообще бывают модули и как их подключают — Модули для Arduino. Чем занять моторы — Проекты на Arduino. Сколько памяти остаётся программе — Память Arduino.