Драйвер моторов
Цветной блок в визуальной программе может означать «ехать вперёд» или «установить скорость», но сам блок не питает двигатель. Команда сначала превращается в сигналы микроконтроллера, а силовой ток переключает отдельное устройство — драйвер моторов.

На снимке из опубликованной модели Tinkercad моторы подключены к силовым выходам L293D, а источник питания показан отдельно от USB. Два потенциометра внизу относятся к исходному проекту и для этого урока необязательны.
Arduino передаёт драйверу слабые управляющие сигналы. Драйвер берёт энергию от подходящего источника и направляет её в мотор. Мотор подключают к силовым выходам драйвера, а не к контактам микроконтроллера.
Зачем это нужно
Колёса учебного робота должны не только вращаться, но и останавливаться, менять направление и двигаться с разной скоростью. Микроконтроллер умеет принять решение, однако его вывод рассчитан на сигнал, а не на ток тягового двигателя. Особенно большой ток возникает при старте, тяжёлой нагрузке и заблокированном валу.
Если соединить мотор с цифровым выводом напрямую, программа может вести себя непредсказуемо: плата перезапускается, напряжение проседает, мотор дёргается, а вывод рискует выйти из строя. Блоковая среда не отменяет электрические ограничения. Она лишь скрывает синтаксис программы.
Драйвер образует границу между двумя частями робота:
- логическая часть решает, куда и с какой командой ехать;
- силовая часть подаёт ток в обмотку мотора;
- общий провод даёт входам драйвера и контроллеру одну точку отсчёта;
- защитные возможности зависят от конкретной микросхемы и платы драйвера.
Главная идея
Полезно читать систему слева направо:
блоки программы -> сигналы Arduino -> драйвер -> ток мотора -> движение
источник питания -> драйвер
Блок «направление» выбирает состояние управляющих входов. Блок «скорость» обычно задаёт PWM-команду. Драйвер по этим сигналам переключает силовые ключи. Положительный провод моторного источника не должен попадать на сигнальный вывод Arduino.

Схема и блоки взяты из двух разных опубликованных проектов Tinkercad. Второй скриншот показывает форму блоков, а не распиновку первой схемы. В своём проекте сначала составьте единую таблицу «контакт Arduino → вход L293D», а затем выберите эти же номера в блоках.
Как Tinkercad управляет L293D
В Tinkercad для L293D не требуется стороннее моторное расширение. Ученик использует обычные синие блоки set pin ... to HIGH/LOW для входов направления. Если вход Enable соединён с PWM-выводом Arduino, числовой блок от 0 до 255 задаёт долю активного времени.
| Уровень | Что видит ученик | Что происходит в устройстве |
|---|---|---|
| визуальная программа | блоки уровней для входов L293D | Tinkercad сохраняет номера контактов и состояния |
| созданная программа | digitalWrite() или analogWrite() | Tinkercad создаёт код Arduino |
| логические сигналы | несколько слабых линий | драйвер распознаёт направление и PWM |
| силовая цепь | мотор начинает вращаться | ключи драйвера переключают ток отдельного источника |
Поэтому копировать цепочку блоков без распиновки недостаточно. В каждом проекте Tinkercad номера в блоках должны точно совпадать с проводами от Arduino к входам L293D.
Контакты и два питания
На драйверах встречаются разные обозначения. Их точный смысл берут из документации выбранного модуля.
| Группа | Распространённые обозначения | Назначение |
|---|---|---|
| логические входы | IN1, IN2, DIR, PWM, EN | получают команды контроллера |
| силовое питание | VM, VS, VIN | получает энергию для мотора |
| логическое питание | VCC, VLOGIC | питает логику, если требуется отдельно |
| общий провод | GND | связывает точки отсчёта контроллера, драйвера и источника |
| силовые выходы | OUT1, OUT2, M+, M- | подключаются к двум выводам одного мотора |
| служебные контакты | STBY, SLEEP, FAULT | включают драйвер или сообщают о неисправности |
У некоторых плат логическое и силовое питание уже разведены на модуле, у других их нужно подключать отдельно. Иногда вывод ожидания требуется явно перевести в рабочее состояние. Эти различия нельзя угадывать по цвету платы.
Направление, PWM и остановка
H-мост меняет направление тока через обмотку. Распространённая учебная модель с двумя входами выглядит так:
| Первый вход | Второй вход | Возможный режим |
|---|---|---|
| низкий | высокий | вращение в одну сторону |
| высокий | низкий | вращение в другую сторону |
| низкий | низкий | часто выбег или отключение |
| высокий | высокий | часто активное торможение |
Это не универсальная таблица. У отдельной микросхемы сочетания могут означать другие режимы, а вход ENABLE или STBY меняет результат. Визуальный блок «стоп» тоже может выбрать либо свободный выбег, либо электрическое торможение.
PWM быстро включает и выключает силовой путь. Доля активного времени влияет на передаваемую мотору энергию, но значение блока не является точным числом оборотов. Скорость зависит от напряжения источника, нагрузки, трения, редуктора и самого мотора. При малой команде двигатель может гудеть и не тронуться, потому что момента не хватает для старта.
Источник сохраняет своё напряжение, а драйвер подаёт его импульсами. Механика и обмотка сглаживают действие импульсов. Для точного поддержания скорости нужны измерение, например энкодером, и обратная связь.
Собираем безопасную цепочку блоков
Для первого опыта колесо лучше поднять над столом. Логика может быть такой:
при запуске
остановить мотор
выбрать направление вперёд
установить небольшую скорость
ждать
установить скорость ноль
ждать
выбрать направление назад
установить небольшую скорость
ждать
остановить мотор
Это смысловая запись, а не названия кнопок конкретного редактора. Начальная команда остановки не даёт мотору случайно стартовать во время настройки. Перед реверсом скорость снижают до нуля и дают механике замедлиться. Переход «полный вперёд — полный назад» создаёт большой ток и удар в редукторе.
В Tinkercad состояние каждого входа L293D задаётся отдельным блоком. Перед изменением направления оба канала переводят в остановку, добавляют паузу и только затем задают новую пару уровней.
Выбор драйвера и источника
Для подбора недостаточно фразы «работает от батарейки». Сравнивают:
- диапазон силового напряжения драйвера и напряжение источника;
- непрерывный ток канала и ток мотора под нагрузкой;
- кратковременный ток при старте или блокировке;
- совместимость логических уровней с платой;
- охлаждение, провода, разъёмы и возможности источника.
Ток холостого хода описывает лёгкий режим. При остановленном валу ток обычно гораздо выше. Не удерживайте мотор заблокированным ради проверки. Точные пределы, допустимое время пика и требования к конденсаторам берут из datasheet двигателя, драйвера и руководства модуля.
Пример: два колеса робота
Дифференциальному роботу нужны два независимых моторных канала. Поворот получается из пары команд:
| Левый мотор | Правый мотор | Поведение |
|---|---|---|
| стоп или медленнее | вперёд | поворот влево по дуге |
| назад | вперёд | разворот на месте |
| одинаковая команда | разная фактическая скорость | робот уходит в сторону |
Сначала проверяют каналы по одному. Если одно колесо вращается «назад», питание выключают и либо меняют два моторных провода местами, либо корректируют соответствие направления в проекте. Переставлять проводку во включённой цепи нельзя.
Для движения по датчику цепочка блоков расширяется: чтение входа, сравнение с порогом, выбор направления, установка скоростей. Ошибка в условии относится к программе, а отсутствие силового питания — к схеме. Такое разделение ускоряет поиск причины.
Диагностика от команды к движению
| Симптом | Первая проверка |
|---|---|
| оба мотора молчат | питание драйвера, общий GND, STBY/ENABLE |
| один канал не работает | распиновка канала, выходы, мотор и соединения |
| плата перезапускается | просадка питания и путь силового тока |
| направление не меняется | реальные уровни входов и таблица режимов |
| мотор дёргается | контакт проводов, слишком малая команда, ограничение источника |
| драйвер быстро нагревается | заклинивание, перегрузка, короткое замыкание, охлаждение |
Проверяйте модель по слоям: номера в блоках, провода от Arduino к L293D, логические уровни, ветвь силового питания и выходы мотора. Меняйте схему только при остановленной симуляции.
Что запомнить про моторный блок
- Визуальный блок задаёт команду, но не подаёт моторный ток.
- Коллекторный мотор подключают только к силовым выходам подходящего драйвера.
- Силовое питание отделяют от сигнальных выводов, а земли объединяют по схеме.
- Направление, PWM, выбег и торможение зависят от конкретного драйвера.
- Перед реверсом команду уменьшают и дают механике замедлиться.
- Первый запуск проводят с поднятыми колёсами и небольшой командой.
Практика
Задание 1. Карта контактов
Добавьте в Tinkercad Arduino Uno, L293D, два мотора и источник. По названиям контактов микросхемы составьте таблицу: логические входы, Enable, логическое и силовое питание, GND и выходы моторов. Симуляцию пока не запускайте.
Задание 2. Мягкая последовательность
Соберите цепочку блоков: безопасная остановка, движение вперёд на небольшой команде, пауза, остановка, пауза, движение назад и окончательная остановка. Значения и длительности выберите для своего стенда без готового ответа.
Задание 3. Два канала
Составьте четыре пары команд для левого и правого моторов: прямо, поворот по дуге, разворот на месте и стоп. До запуска предскажите направление каждого колеса.
Задание 4. План поиска ошибки
Робот принимает блоки без сообщения об ошибке, но мотор не вращается. Запишите порядок из шести проверок — от настройки проекта до силовой цепи — так, чтобы не менять несколько причин одновременно.
Проверьте себя
- Почему мотор нельзя подключать прямо к цифровому выводу Arduino?
- Чем логическая команда отличается от силового тока?
- Зачем контроллеру и драйверу общий
GND? - Что обычно задаёт PWM-команда и почему она не равна точной скорости?
- Почему таблицу режимов нельзя переносить с одного драйвера на другой?
- Чем свободный выбег отличается от активного торможения?
- Зачем снижать команду перед сменой направления?
- Какие параметры нужно сравнить при выборе драйвера и источника?
Сначала ответьте без подсказки. Ответ можно считать полным, если вы:
- формулируете основную мысль своими словами;
- называете важные условия, ограничения или меры безопасности;
- для схемы, кода или расчёта показываете ход решения и ожидаемый результат.
Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.
Словарь статьи
- Драйвер мотора — силовой узел, который переключает ток двигателя по командам контроллера.
- H-мост — схема ключей, позволяющая менять направление тока через мотор.
- PWM (ШИМ) — импульсная команда, в которой меняется доля активного времени.
- Силовое питание — источник энергии для двигателя и ключей драйвера.
- Логический вход — контакт, принимающий слабый управляющий уровень.
- Общий провод — общая точка отсчёта напряжений, обычно
GND. - Выбег — замедление мотора без активного электрического торможения.
- Ток блокировки — ток при приложенном напряжении и неподвижном роторе.
Связанные темы
- Плавное мигание светодиодом — первое знакомство с PWM в блоках.
- Обработка датчика — как значение входа превращается в команду движения.
- Встроенные блоки Tinkercad — как обычные блоки выхода превращаются в код Arduino.
- Сервопривод — привод со встроенным управлением положением.
Источники
- Arduino Motor Shield Rev3 — документация и схема
- Arduino Language Reference: analogWrite()
- Toshiba TB6612FNG — datasheet
- Tinkercad: опубликованная модель двух моторов с L293D — источник первой иллюстрации.
- Science Buddies: схема моторного узла — распиновка L293D, раздельные ветви питания и ссылка на модель Tinkercad.
- Instructables: Arduino With Dual Motor Tank Coded in Tinkercad — источник англоязычного скриншота блоков.