Моторы · разбор
Мотор и Arduino: подключение, драйвер L298N и управление скоростью
Мотор нельзя воткнуть в вывод платы — и дело не только в токе. Разбираем, что ставят между платой и мотором, как устроен H-мост, куда девается пара вольт по дороге к обмотке и почему мотор иногда просто гудит. Схемы на странице живые: их можно переключать и двигать. Все числа — из даташита L298, кода ядра Arduino и карточек наших модулей.
Если вы делаете это в первый раз — начните с урока 23 «Мотор и транзистор»: там один мотор, одна сторона вращения и подробная сборка на макетной плате. Здесь — следующий шаг: как ездить в обе стороны, как выбрать драйвер и что делать, когда мотор крутится не так, как хочется.
Почему мотор нельзя подключить прямо к выводу платы
Вывод микроконтроллера рассчитан на 20 миллиампер — этого хватает светодиоду и не хватает никакому мотору. Но одним током дело не заканчивается: у мотора есть три свойства, каждое из которых по-своему опасно для платы.
Первое: ток зависит от нагрузки, а не от мотора. Одно и то же колесо на свободном ходу берёт десятки миллиампер, а упёршись в стену — больше ампера. Выбирать драйвер нужно по этому большому числу, потому что в момент старта мотор проходит через него каждый раз: пока вал стоит, он потребляет столько же, как если бы его держали рукой.
Второе: мотор проседает питание. В момент старта он выгребает ток так резко, что напряжение на всей схеме падает — и плата перезагружается, а экран гаснет. Это самая частая жалоба «всё работало, пока не подключил мотор».
Третье: обмотка не отпускает ток сразу. Катушка запасает энергию в магнитном поле, и когда питание выключают, она пытается протолкнуть ток дальше, поднимая напряжение до десятков вольт. Этот выброс и убивает выводы платы. Поэтому в любой схеме с мотором есть диоды, которые дают току безопасный обратный путь: на модулях они уже распаяны, а к голой микросхеме их пришлось бы добавлять руками — даташит L298 прямо требует четыре быстрых диода на каждый мост.
Три способа поставить что-то между платой и мотором
Выбор простой и зависит от одного вопроса: нужно ли мотору ездить назад. Если нет — хватит одного транзистора. Если да — нужен H-мост: четыре ключа, собранные в две половинки, которые подают на обмотку напряжение то в одну, то в другую сторону.
| Что ставим | Для чего | Направление | Чем платим |
|---|---|---|---|
| Один транзистор (силовой ключ) | Вентилятор, помпа, лента — всё, что крутится в одну сторону | Только одно | Дешевле всего, один вывод платы |
| H-мост малой мощности | Маленькие моторы игрушек и настольных роботов, до 300 мА | Обе стороны | Два вывода платы, размер со спичечный коробок |
| H-мост на два канала (L298N) | Мотор-редукторы робота, до 2 А на канал, питание до 35 В | Обе стороны, два мотора | Шесть выводов платы, нужен радиатор |
| Готовый шилд или драйвер по шине | То же самое, но без россыпи проводов | Обе стороны, два мотора | Дороже, зато собирается за минуту |
Как работает H-мост
Название — от формы схемы: два вертикальных плеча и обмотка мотора перекладиной между ними, вместе получается буква H. Каждое плечо умеет прицепить свой конец обмотки либо к плюсу питания, либо к земле. Всё поведение мотора — это четыре комбинации двух таких переключателей.
Обратите внимание на два последних состояния: остановка бывает разной. Выбег — мост отпускает обмотку, и тяжёлый робот проезжает ещё полметра. Торможение — оба конца обмотки замкнуты между собой, мотор начинает работать генератором сам на себя и встаёт почти мгновенно. В даташите L298 эти состояния так и называются: Free Running Motor Stop и Fast Motor Stop.
У микросхемы L298 на каждый мотор всего два управляющих входа, а не четыре — и это сделано специально. Верхний и нижний ключ одного плеча переключаются вместе и всегда навстречу друг другу, так что комбинации, при которой оба открыты и питание замкнуто накоротко, просто нет. Сжечь мост неудачной командой не получится — программа выбирает только сторону.
| IN1 | IN2 | ENA | Что делает мотор | Как это названо в даташите |
|---|---|---|---|---|
| HIGH | LOW | ШИМ | Крутится вперёд | Forward |
| LOW | HIGH | ШИМ | Крутится назад | Reverse |
| LOW | LOW | HIGH | Резко тормозит | Fast Motor Stop |
| HIGH | HIGH | HIGH | Резко тормозит | Fast Motor Stop |
| любой | любой | LOW | Катится по инерции | Free Running Motor Stop |
Модуль L298N: что на нём подписано
Это самый распространённый драйвер для начинающих: красная плата с чёрным радиатором. На ней стоят сама микросхема, восемь защитных диодов, стабилизатор на 5 вольт и три группы контактов.
Моторы прикручиваются к синим клеммникам по краям: первый — к OUT1 и OUT2, второй — к OUT3 и OUT4. Если мотор поехал не в ту сторону, эти два провода просто меняют местами, программу править не нужно. Питание приходит на средний клеммник, а управление — на гребёнку из шести штырьков.
| На модуле | На плате Uno | Зачем |
|---|---|---|
| ENA | 9 (с ШИМ) | Скорость первого мотора |
| IN1 | 8 | Направление первого мотора |
| IN2 | 7 | Направление первого мотора |
| IN3 | 4 | Направление второго мотора |
| IN4 | 2 | Направление второго мотора |
| ENB | 10 (с ШИМ) | Скорость второго мотора |
| GND | GND | Общая земля — без неё ничего не работает |
| +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 вольт» ставят источник на 12 вольт и мирятся с тем, что до обмотки доедет около девяти. Потерянные вольты превращаются в тепло — поэтому у модуля радиатор, и греется он честно, а не от поломки. И если мотор рассчитан на 5–6 вольт, а питание такое же, до него доедет половина: он может даже не тронуться. В этом случае берут либо питание повыше, либо драйвер на полевых транзисторах, у которых падение в разы меньше.
Ещё одна мелочь из даташита: сама микросхема без всякого мотора потребляет до 70 миллиампер. Для батарейного робота это заметная величина — драйвер стоит обесточивать, когда он не нужен.
Питание: откуда брать ток
Правило простое: плата питается сама, моторы — сами, земля общая. Для мотор-редукторов робота подходит батарейный отсек на четыре-шесть пальчиковых батареек или аккумулятор; для настольного проекта — блок питания на 12 вольт с запасом по току хотя бы вдвое от того, что берут моторы.
На модуле есть перемычка стабилизатора. По карточке нашего модуля правило такое: питание от 6 до 12 вольт — перемычка стоит, и встроенный стабилизатор сам делает 5 вольт для логики драйвера. Питание выше 12 вольт — перемычку обязательно снять и подать 5 вольт на клемму +5V отдельно, иначе стабилизатор перегреется.
Обратный вариант — питать плату Arduino от этих же 5 вольт с модуля — работает, но только когда плата не подключена к компьютеру по USB. Одновременно два источника на одну линию 5 В подавать не нужно.
Если плата перезагружается в момент старта мотора, а провода уже правильные, помогает электролитический конденсатор на 470–1000 мкФ прямо на клеммах питания моторов: он сглаживает провал. Это не роскошь, а стандартная часть схемы с моторами.
Скорость: ШИМ и порог трогания
Скоростью управляет не «сила тока», а доля времени. Плата очень быстро включает и выключает питание мотора: команда analogWrite(ENA, 128) означает «включено половину времени». Мотор из-за инерции сглаживает эти ступеньки и крутится так, будто ему дали половину напряжения.
Частота этих ступенек у Uno фиксированная и зависит от того, на какой вывод вы попали. Это же таблица конфликтов: каждый счётчик времени, кроме ШИМ, занят ещё чем-то полезным.
| Выводы | Частота ШИМ | Кто ещё пользуется этим счётчиком |
|---|---|---|
| 5 и 6 | 977 Гц | Счётчик 0 — он же ведёт время: millis(), delay() |
| 9 и 10 | 490 Гц | Счётчик 1 — его целиком забирает библиотека Servo |
| 3 и 11 | 490 Гц | Счётчик 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.
Драйвер мотора, Trema-модуль
Один мотор до 300 миллиампер, питание мотора 2,5–12 вольт, размер 30 на 30 миллиметров. Управление предельно простое: один вывод задаёт направление, второй — скорость. Для настольного проекта и маленьких моторов этого хватает, а проводов вдвое меньше.
Motor Shield на два канала, до 35 В
Тот же L298, но в виде платы, которая надевается на Uno сверху — паять и разводить провода не нужно. Питание моторов от 2,5 до 35 вольт, до 2 ампер суммарно. По умолчанию занимает выводы с 4 по 7, перемычками их можно переназначить. Есть и версия полегче — до 10,8 вольта за 740 ₽.
Драйвер мотора с контроллером, FLASH-I2C
Драйвер со своим управляющим контроллером: занимает две линии шины I²C вместо трёх выводов на мотор, держит до 3 ампер, умеет читать энкодер и сам защищается от перегрева и перегрузки. Стоит своих денег, когда выводы платы кончились или робот должен ехать ровно.
Робоплатформа на двух колёсах
Готовая механика под всё, что описано выше: акриловый корпус, два колеса с мотор-редукторами TT и опорный ролик. Сами моторы продаются и отдельно, по 216 ₽ — питание 3–12 вольт, без нагрузки 70 миллиампер, при максимальной 670.
Эта тема в 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.
