Первая машинка жила без драйвера один вечер: моторчики я повесил на транзисторные ключи из прошлого кластера, «вперёд» и «назад» делал перекидыванием проводов, а поворот — остановкой одного колеса. Разворачивать направление программно такая схема не умеет в принципе: биполярный или полевой ключ включает и выключает нагрузку, но не меняет полярность на моторе.
Решение — H-мост: четыре ключа вокруг мотора, открыта одна диагональ — ток идёт слева направо, открыли другую пару — мотор крутится обратно. L298N — два таких моста в одном корпусе: два мотора, направление на IN-пинах, скорость на EN. Красная плата с пластиной-радиатором и клеммниками продаётся везде, стоит дешевле двух чашек кофе и прощает новичку почти всё, кроме земли.
Раскладка модуля: ENA, IN1, IN2 — мотор A; ENB, IN3, IN4 — мотор B; клеммник VS — питание моторов 7-12 вольт, клеммник 5V — логика моста, GND общий. На платах ранних ревизий ENA и ENB сидят на перемычках: сняли — на штырьки подаётся ШИМ, поставили — мост держит полный газ.
Один полевой ключ из урока про IRLZ44N — это выключатель; мост — четыре выключателя, которые умеют ещё и менять полярность. Практику с этой платой я показывал в машинке на ИК-пульте, здесь — сама логика моста, цена падения и земли, без которых остальное не работает.
Логика моста: IN1-IN4, ENA и четыре состояния
На каждый мотор — два управляющих пина. IN1 высоко, IN2 низко — мотор крутится в одну сторону; поменяли местами — в другую. Оба в нуле — мотор свободно выбегает: обмотка ни к чему не подключена. Оба в единице — электрический тормоз: обмотка закорочена на себя, и мотор останавливается резко, с рывком. Эти четыре состояния — весь мост, остальное — скорость.
Скорость задаёт EN: ШИМ 0-255 через analogWrite на пине с тильдой. Двести пятьдесят пять — полный газ, сто двадцать — половина, ноль — стоите даже при заданном направлении. Если перемычка EN на месте, мост держит максимальную скорость независимо от ШИМ — для первой проверки это удобно: направление отрабатываете без кода, скорость подключаете потом.
Частота дефолтного ШИМ — 490 герц, и на малых оборотах моторы тонко пищат: слышимая механика, на работу не влияющая. Раздражает — уводите частоту выше, но L298N сам по себе медленный мост, выше 5-10 килогерц его гонять незачем. Плавный разгон шагами без delay — приём из урока про millis, он же бережёт шестерёнки и батарею.
Ток моторов прикидываю до схемы: жёлтые TT-моторчики из наборов на ровном ходу едят 200-250 миллиампер, на подъёме с грузом — до 700, и канал L298N с паспортными двумя амперами переваривает такой диапазон с запасом. Стопорное значение всегда выше ходового — застрявшее колесо просит больше, чем ровная дорога, — и именно его я вписываю в расчёт питания, а не красивую цифру с холостого хода.
Цена моста видна на клеммах: внутри L298N стоят биполярные дарлингтоновые каскады, и на пути тока садятся честные 1,4-2,5 вольта. Подаёте 12 на VS — на моторе при полном газе 9-10. Подаёте 5 — мотор получает 3-4 и половину момента: машинка «слабая» не потому, что мотор слабый. Отсюда моё правило — L298N кормят от 9 вольт, а моторы на 5-6 вольт ведут полевыми мостами.
Мнение, которое выскажу прямо: для машинки на 6-12 вольт я сегодня беру TB6612FNG, а L298N оставляю для толстых старых проектов. TB6612 — полевой мост: падение в сотые доли вольта, нагрев в разы меньше, ток канала 1,2 ампера против двух. Проигрывает он только размером и привычкой — крошечный модуль без клеммников втыкать в макетку неудобно. Нагрев всё равно решает: пластину L298N через полчаса езды не поднять.
Ловушка, на которой я потерял вечер с первой машинкой: моторы дёргаются сами, команды плавают, плата перезагружается на старте. Виновата земля: моторный ток течёт по тонкому проводу, поднимает потенциал общего провода, и логика читает собственные команды криво. Лечится одним толстым проводом: минус батареи, GND модуля и GND платы — в одну точку. Механика — в уроке про общий провод, питание моторов отдельным блоком — в уроке про внешнее питание макетки.
| Состояние | IN1 | IN2 | ENA |
|---|---|---|---|
| вперёд | HIGH | LOW | ШИМ 0-255 |
| назад | LOW | HIGH | ШИМ 0-255 |
| выбег накатом | LOW | LOW | любой |
| электрический тормоз | HIGH | HIGH | любой |
Два мотора: ENB, развороты и общий радиатор
Второй канал подключается зеркально: ENB — на второй пин с тильдой, IN3 и IN4 — на любые свободные цифровые, мотор B — на свои клеммы. Дальше начинается самое интересное: повороты делаются разностью скоростей — левое колесо на 180, правое на 90, и машинка описывает дугу; для разворота на месте левый канал крутится вперёд, правый — назад. Обе стороны управляются независимо, и никаких перекидываний проводов из первой машинки больше не нужно.
Ток при этом складывается: два мотора под нагрузкой просят ампер-полтора и выше, и это общий бюджет шины, а не два независимых потребителя. Радиатор у модуля тоже общий — пластина греется от двух каналов сразу, и 1,4-2,5 вольта падения умножаются на суммарный ток. Для машинки это выглядит как горячий модуль после пяти минут гонок: считайте ватты на оба канала вместе, а не по отдельности.
И про сами моторы: жёлтые TT-моторчики из стартовых наборов рассчитаны на 3-6 вольт, и 12 на клемме VS их убивают — я пропах изоляцией один редуктор за вечер гонок. Правило простое: напряжение на VS выбирается под моторы, а не по привычке «там было 12». Для трёх-шести вольт честнее полевой мост вроде TB6612, о котором ниже, — у него падение в сотые доли и лишних вольт на мотор не остаётся.
Проверка на клеммах и протокол из двух чисел
После сборки мост проверяется вольтметром за минуту. На клеммах мотора при ENA = 255 и 12-вольтовом входе — 9-10 вольт: это ваши честные 12 минус падение моста. Просели до 7-8 под нагрузкой — добавились сопротивление проводов и просадка батареи, и ровно эта разница греет пластину радиатора. От 5-вольтового входа увидите свои 3-4 вольта — та цифра, которая объясняет слабую машинку без всякой мистики. Приёмы измерений — в уроке про мультиметр.
Перед сменой направления на ходу я гашу ШИМ, жду 100-200 миллисекунд и только потом перещёлкиваю IN: разворот при полном газе выбрасывает из батареи двойной ток и выбивает щелчок из шестерён. Тормоз HIGH-HIGH держу не дольше пары сотен миллисекунд — ток в закороченной обмотке греет её без пользы.
Отдельная грабля — забытая перемычка на ENA: скорость из скетча не меняется, мотор всегда на максимуме, а виноват не код. Перемычка шунтирует вход EN на питание, и ШИМ до моста не доходит. Диагностика простая: сняли перемычку — скорость появилась; ставится она обратно только тогда, когда канал нужен на полный газ без ШИМ.
// Мотор A на L298N: ENA на D9 (ШИМ), IN1 на D6, IN2 на D7.// В мониторе шлём пару чисел через пробел:// "1 180" - вперёд на 180, "2 90" - назад вполовину, "0 0" - выбег.const int PIN_ENA = 9;const int PIN_IN1 = 6;const int PIN_IN2 = 7; void setup() { Serial.begin(9600); pinMode(PIN_ENA, OUTPUT); pinMode(PIN_IN1, OUTPUT); pinMode(PIN_IN2, OUTPUT); Serial.println("napravlenie 1/2/0 i skorost 0-255: '1 180'");} void loop() { if (Serial.available() > 0) { int napr = Serial.parseInt(); int skor = Serial.parseInt(); if (napr == 1) { digitalWrite(PIN_IN1, HIGH); digitalWrite(PIN_IN2, LOW); } else if (napr == 2) { digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, HIGH); } else { digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, LOW); // выбег: обмотка свободна skor = 0; } int vyhod = constrain(skor, 0, 255); analogWrite(PIN_ENA, vyhod); Serial.print("napr="); Serial.print(napr); Serial.print(" ENA="); Serial.println(vyhod); }}Протокол из двух чисел выбран не случайно: направление и скорость едут одной строкой, и parseInt разбирает их по очереди, пропуская пробел. Приёмы работы с числами из порта — отдельная тема, я разбирал её в уроке про parseInt и числа из Serial. В мониторе видно обратную связь: каждая пара возвращается строкой с фактическим ENA, и спор «скетч или мост» закрывается сразу.
Для машинки на два мотора скетч тиражируется: ENB и IN3-IN4 получают свои константы, а пара чисел превращается в три — левое колесо, правое колесо, направление каждого. Дальше добавляются команды поворота через разность скоростей, и на этом фундаменте уже стоит вся навигация, включая пульт из урока по ссылке выше.
Когда каналов два, я выношу управление мотором в функцию с параметрами: направление, скорость, пины канала — и скетч машинки сокращается до вызовов для левого и правого колеса. Вторая привычка из машинки на пульте — стоп по таймауту: пропал сигнал с последнего кадра, millis-счётчик перевалил за двести миллисекунд — ENA в ноль. Моторы, едущие без команды, сами находят ближайшую стену.
Две грабли из первой машинки опознаются с одного взгляда на стенд. Мотор стоит, скетч отработал, в мониторе честный ненулевой ENA: перемычка EN снята, а ШИМ не подключён — вход повис в воздухе, и мост молчит; до первого скетча с ШИМ верните перемычку или подайте на EN хотя бы обычный HIGH. Направление меняется само, без команд из порта, — это я забыл общий GND: логика моста и плата сидят на разных потенциалах, входы IN слушают наводки от моторов и щёлкают стороной на ровном месте. Один толстый провод минуса в общую точку закрывает оба фокуса.
- 1. На клемме VS — 12 вольт, ENA = 255. Сколько вольт на клеммах мотора?
- 2. IN1 и IN2 оба HIGH. Что делает мотор?
- 3. Что подать на ENA, чтобы держать примерно половину скорости?
- 4. Моторы дёргаются сами, плата перезагружается при старте. Первая проверка?
- 5. Почему TB6612 греется заметно меньше L298N?
- H-мост меняет полярность на моторе: IN1/IN2 задают сторону, оба LOW — выбег, оба HIGH — электрический тормоз.
- Скорость живёт на EN: ШИМ 0-255 через analogWrite; перемычка EN держит полный газ без кода.
- Падение моста 1,4-2,5 В: от 12 В мотор получает 9-10, от 5 В — 3-4; L298N кормят от 9 вольт.
- Минус батареи, GND модуля и GND платы сходятся в одной точке — иначе моторные помехи читаются как команды.
- Для моторчиков на 6-12 В TB6612 выгоднее: полевой мост, падение в сотые вольта, нагрев в разы меньше.
Частые вопросы по теме урока
- На клемме VS — 12 вольт, ENA = 255. Сколько вольт на клеммах мотора?
- Внутри моста два биполярных каскада, на которых садится 1,4-2,5 вольта. От 12 вольт на моторе остаётся 9-10 — и именно эта разница греет пластину радиатора. 9-10 В
- IN1 и IN2 оба HIGH. Что делает мотор?
- Оба HIGH закорачивают обмотку на себя — мотор останавливается резко. Оба LOW дают противоположность: свободный выбег без торможения. стоит с электрическим тормозом
- Что подать на ENA, чтобы держать примерно половину скорости?
- ENA — вход скорости: analogWrite на пин с тильдой, 128 из 255 — половина. Обычный HIGH откроет мост на полный газ независимо от задуманной скорости. ШИМ около 128
- Моторы дёргаются сами, плата перезагружается при старте. Первая проверка?
- Моторный ток по тонкому проводу поднимает потенциал земли, и логика читает собственные команды криво. Толстый провод минуса в одну точку закрывает вопрос. общий GND батареи, модуля и платы в одной точке
- Почему TB6612 греется заметно меньше L298N?
- L298N — биполярные дарлингтоны с 1,4-2,5 В падения; TB6612 — MOSFET-мост, где на пути тока остаются сотые доли вольта. Разница уходит не в тепло, а в мотор. внутри полевые ключи с падением в сотые доли вольта