Мотор-редуктор 1:48 для Arduino: подключение и робот на NRF24L01

Как управлять мотором с редуктором 1:48 через транзистор и драйвер L298N и собрать радиоуправляемую платформу на двух таких моторах.
Мотор для лёгких роботов
Шасси любительских роботов обычно приводят в движение мотор-редукторы: при малых размерах они дают достаточную тягу. Для лёгких платформ чаще всего берут мотор постоянного тока с редуктором 1:48.

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

Обороты и потребление
| 3,7 В | 195 об/мин, 120 мА | 138 об/мин, 120 мА |
| 4,8 В | 258 об/мин, 130 мА | 192 об/мин, 125 мА |
| 6 В | 330 об/мин, 150 мА | 246 об/мин, 130 мА |
| 7,4 В | 408 об/мин, 170 мА | 312 об/мин, 135 мА |
| 12 В | 672 об/мин, 270 мА | 480 об/мин, 160 мА |
Ток такого порядка выводы Arduino напрямую не обеспечат, а моторов в проекте обычно минимум два, поэтому нужен силовой ключ или драйвер.
Простой вариант: полевой транзистор
Включать и выключать мотор можно полевым транзистором с логическим уровнем управления затвором, например IRL540N. Затвор подключают к выводу D9: изменяя на нём ШИМ, регулируют скорость.

- Резистор 220 Ом ограничивает ток затвора.
- Резистор 100 кОм разряжает затвор при низком уровне на D9; без него мотор может продолжить работать после отключения.
- Диод 1N4007 защищает цепь управления от импульсов самоиндукции двигателя.
Демонстрационный скетч командой analogWrite плавно наращивает значение ШИМ с шагом в 20 мс, держит полную мощность 2 секунды, затем снижает скорость и делает паузу. Недостаток схемы в том, что нет реверса, поэтому она годится только для простых проектов.
Полноценное управление: L298N
Мостовой драйвер L298N управляет сразу двумя моторами постоянного тока с реверсом и регулировкой скорости. Удобнее брать готовый модуль с обвязкой.

В тестовой схеме модуль и Arduino Nano питаются от 7 В. Первый мотор управляется выводами IN1, IN2 и ENA (пины 8, 7 и 9), второй выводами IN3, IN4 и ENB (пины 6, 5 и 3). ENA и ENB заведены на пины с ШИМ. Скетч проходит четыре состояния: разгон с приращением скорости на 17 каждые 500 мс, 5 секунд на максимуме, вращение в обратную сторону с постепенным снижением скорости и остановка на 5 секунд.
Проект: радиоуправляемая платформа
Связь обеспечивает пара модулей NRF24L01 с библиотекой RF24. Пульт собран на четырёх тактовых кнопках (вперёд, назад, вправо, влево) на входах A0–A3 с внутренней подтяжкой и потенциометре скорости на A7. Выводы CE и CSN радиомодуля подключены к пинам 10 и 9. В настройках выбраны канал 5 (2,405 ГГц), скорость 1 Мбит/с, уровень мощности RF24_PA_HIGH и труба с адресом 0x7878787878LL. В цикле состояния кнопок и потенциометра складываются в массив из пяти элементов и отправляются командой radio.write. Такой пульт подойдёт и для других проектов.
На шасси приёмник использует те же параметры радиоканала и включает прослушивание. Правое колесо управляется выводами IN1, IN2 и ENA (пины 8, 7 и 6), левое выводами IN3, IN4 и ENB (пины 4, 3 и 5). Принятое значение потенциометра функцией map переводится из 0–1023 в 0–255 и задаёт ШИМ обоих колёс. Нажатая кнопка приходит как 0: для движения вперёд и назад оба колеса вращаются в одну сторону, при повороте одно колесо стоит, а другое вращается вперёд; без команд моторы остановлены.
На что обратить внимание при сборке
- Все выводы GND должны быть соединены, а землю L298N лучше вести отдельным проводом прямо к источнику, чтобы большие токи не шли через плату Arduino.
- Вместо четырёх пальчиковых батареек можно взять два последовательно соединённых Li-Ion аккумулятора.
- Электролитический конденсатор 100 мкФ в цепи питания NRF24L01 обязателен: без него модуль работает нестабильно или не инициализируется.
- Моторы стоят зеркально, поэтому и подключать их к драйверу нужно зеркально.