Компоненты8 мин чтения28 сентября 2026 г.

L298N, L9110S или TB6612: какой драйвер моторов выбрать?

Сравниваем четыре популярных драйвера моторов: напряжение питания, ток, сколько вольт теряет каждый, число пинов на мотор и способ остановки. Какой подойдёт маленькому роботу с моторами TT и почему.

Фото: Les Pounder · CC BY-SA 2.0

Пин Arduino может безопасно отдать около 20 мА. Мотор-редуктор TT потребляет около 0,3 А во время езды и примерно до 1 А, когда его вал заблокирован. Поэтому между ними стоит драйвер моторов: ток от батареи идёт через драйвер к мотору, а Arduino только говорит драйверу, что делать.

В маленьких роботах чаще всего встречаются четыре драйвера: L298N, L9110S, MX1508 и TB6612FNG (его часто называют просто TB6612). Работу они делают одну и ту же, но по-разному, и эта разница видна в скорости, во времени работы от батареек и в коде.

Внутри каждого драйвера — H-мост

На каждой плате два H-моста, по одному на мотор. H-мост — это четыре электронных ключа (по сути, выключателя) вокруг мотора. На схеме он похож на букву H, а мотор в ней — перекладина посередине. Включена одна пара ключей по диагонали — мотор крутится вперёд. Включена другая пара — назад. Включены оба нижних ключа или оба верхних — выводы мотора соединяются между собой, и вращающийся мотор быстро тормозит. Все четыре выключены — мотор вращается по инерции, пока не остановится.

Драйверы различаются тем, из чего сделаны их ключи и какие пины ими управляют.

Сравниваем четыре драйвера

Четыре драйвера моторов в одном масштабе: большой L298N и гораздо меньшие L9110S, TB6612FNG и MX1508.
Драйвер Напряжение моторов Ток на мотор Падение напряжения внутри Пинов на мотор При одинаковых входах
L298N 5–35 В до 2 А (около 1 А без дополнительного охлаждения) около 1,8–2 В 3: ENA, IN1, IN2 тормоз, пока на ENA HIGH
L9110S 2,5–12 В около 0,8 А около 1,85 В при 0,75 А 2 оба LOW или оба HIGH: остановка
MX1508 2–9,6 В около 1,5 А небольшое 2 оба LOW: по инерции; оба HIGH: тормоз
TB6612FNG 4,5–13,5 В 1,2 А очень малое 3: PWMA, AIN1, AIN2, плюс STBY оба LOW: по инерции; оба HIGH: тормоз

Мотором B у L298N управляют пины ENB, IN3 и IN4. Если на ENA у L298N подан LOW, мотор свободно вращается по инерции, что бы ни было на IN1 и IN2.

Биполярные транзисторы или MOSFET: куда уходят вольты

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

В робот-машине CoreEngine четыре батарейки AA дают около 6 В. Около 1,8 В остаётся внутри L298N, поэтому моторам достаётся около 4,2 В. Эта потеря превращается в микросхеме в тепло. Вот почему на модуле стоит большой металлический радиатор.

Полевой транзистор (MOSFET) работает иначе. Полностью включённый, он ведёт себя как небольшой резистор, поэтому потеря напряжения — это просто ток × сопротивление. При токах моторов TT это доли вольта. По даташиту TB6612FNG два ключа вместе теряют около 0,15 В при 0,3 А. В MX1508 тоже стоят MOSFET. С такими драйверами моторы получают почти всё напряжение батареи.

Сильнее всего потери заметны при низком напряжении. Два потерянных вольта от источника 12 В — это шестая часть. От четырёх батареек AA — уже треть. Маленькие роботы работают от низкого напряжения, поэтому именно здесь драйвер на MOSFET помогает больше всего. Маленький L9110S тут не поможет: по его даташиту теряется около 1,85 В при 0,75 А.

Драйверы на два пина: одинаковые входы — разный результат

У L9110S и MX1508 нет пина разрешения (enable). У каждого мотора два входа, и эта пара задаёт и направление, и скорость. Чтобы менять скорость, один вход вы держите в постоянном состоянии, а на другой подаёте широтно-импульсную модуляцию (ШИМ).

А вот одинаковые сигналы на обоих входах эти две микросхемы понимают по-разному:

Входы MX1508 L9110S
оба LOW выходы отключены: мотор вращается по инерции оба выхода LOW: мотор останавливается
оба HIGH тормоз оба выхода LOW: мотор останавливается

ШИМ включает и выключает вход сотни раз в секунду. Если второй вход держать в LOW, то в каждой паузе между импульсами оба входа оказываются одинаковыми. В эти моменты MX1508 оставляет мотор вращаться по инерции, а L9110S его останавливает. Поэтому одно и то же значение скорости может дать разную скорость, а робот, который с одним драйвером плавно докатывается до остановки, с другим останавливается резко. Код, написанный для одной платы, не обязательно подойдёт для другой. Сверяйтесь с таблицей истинности именно той платы, которую покупаете.

Какой выбрать для маленького робота с моторами TT?

Выбирайте драйвер по току при блокировке вала, а не по току во время езды. Каждый пуск начинается с короткой блокировки, когда ток доходит примерно до 1 А. А если робот упёрся в стену, его моторы так и остаются застопоренными.

  • L9110S: маленький и простой. Его 0,8 А хватает для езды, но застопоренный мотор TT может потребовать больше.
  • MX1508: маленький и работает от четырёх батареек AA. Его 1,5 А хватает и при блокировке, а теряет он мало. Код управления скоростью для него пишется под два пина.
  • TB6612FNG: лучше всех подходит для этой задачи. Теряет очень мало, его 1,2 А хватает при блокировке, а управляется он как L298N: один пин ШИМ и два пина направления на каждый мотор. На его пине STBY должен быть HIGH, иначе выходы останутся выключенными.
  • L298N: большой, и моторам достаётся примерно на 1,8 В меньше. Зато он надёжный, распространённый и простой в подключении.

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

Почему в робот-машине CoreEngine стоит L298N

  • Он распространённый и надёжный. Он входит во многие наборы робот-машин. До 2 А на канал — это намного больше, чем нужно моторам TT во время езды, а ещё у него есть радиатор и винтовые клеммы.
  • Он питает Uno. Его собственный стабилизатор на 5 В подаёт питание на пин 5V платы Uno (около 4,4 В от четырёх батареек AA, и этого достаточно), так что всего робота питает один батарейный отсек.
  • Его код легко читать. Скорость задаётся на ENA и ENB, направление — на IN1–IN4.
  • Он есть в симуляторе, причём с учётом падения напряжения, так что каждый проект с этого сайта можно сначала проверить там.

Про его пины рассказывает урок Моторы и драйвер L298N, а сам модуль есть в Маркете.

Как потом перейти на другой драйвер

Все скетчи на сайте управляют драйвером через одну небольшую функцию:

// speed from -255 (full backwards) to 255 (full forwards); 0 lets the motor coast
void setMotor(byte enablePin, byte inA, byte inB, int speed) {
  speed = constrain(speed, -255, 255);
  digitalWrite(inA, speed > 0);
  digitalWrite(inB, speed < 0);
  analogWrite(enablePin, abs(speed));
}

Всё остальное — drive(), конечный автомат, таймеры — только вызывает эту функцию.

Переход на TB6612FNG. PWMA, AIN1 и AIN2 занимают место ENA, IN1 и IN2, а PWMB, BIN1 и BIN2 — место ENB, IN3 и IN4. Моторы подключаются к выходам A и B, выводы правого мотора, как и раньше, меняются местами. STBY и VCC (питание логики) идут на 5V платы Uno, VM — на плюс батареи, а все GND соединяются вместе. setMotor() работает без изменений. Меняются три вещи:

  • Моторы получают больше напряжения, поэтому при том же значении скорости робот едет быстрее. Заново подберите длительности, например время поворота в проекте Первый заезд.
  • В паузах между импульсами ШИМ TB6612FNG тормозит мотор, а L298N оставляет его вращаться по инерции.
  • У него нет стабилизатора на 5 В, поэтому Uno нужно своё питание, например USB-пауэрбанк, подключённый к USB-разъёму платы.

Переход на MX1508 или L9110S. Здесь setMotor() придётся изменить, потому что пина разрешения нет. Каждому мотору нужен сигнал ШИМ на одном из двух входов, поэтому проверьте, какие пины с ШИМ ещё свободны. Стабилизатора на 5 В нет ни на одной из этих плат.

Какой бы драйвер вы ни выбрали, соедините его GND с GND платы Uno: сигналы имеют смысл только относительно общей земли. Что нужно самим моторам, читайте в статье Мотор-редукторы TT: что означают цифры.