Сегодня про управление самыми обычными двигателями и правильное питание Arduino!
🔌 Подключение через драйвер или реле
Моторы нельзя подключать к Arduino напрямую к портам по нескольким причинам:
— Максимальный ток, который может проходить через порты микроконтроллера - 100мА, что значительно меньше, чем необходимо для работы большинства моторов
— Напряжение в порту микроконтроллера - всегда 5В, а двигателям необходимо различное напряжение в зависимости от характеристик.
Для правильной работы необходим промежуточный элемент: реле или драйвер.
Реле подойдет в случае, когда нужно управлять включением-выключением двигателя, который работает длительное время на постоянной скорости!
Для задач робототехники, лучше подойдет драйвер!
Что такое драйвер?
Драйвер DC-мотора (постоянного тока) - это устройство, которое управляет скоростью и направлением вращения DC-мотора. С помощью управляющих сигналов от микроконтроллера. При этом драйвер передает высокое напряжение и ток от внешнего источника питания на моторы.
Какие бывают драйверы?
Одним из самых популярных драйверов для образовательных проектов является L298N. Он поддерживает достаточно высокий ток - около 1А на каждый двигатель и напряжение до 12 В.
Этих параметров достаточно для большинства проектов начального уровня!
Как все подключить?
Следуем нескольким правилам, и все будет работать:
— «Минусы» ВСЕХ устройств соединяем вместе
— Arduino питаем от отдельного регулятора напряжения, выставленного ровно на 5В через порт
— Плюс размыкаем кнопкой для возможности быстрого выключения
— НЕ питаем Arduino от порта 5V драйвера, даже если очень хочется
— НЕ питаем Arduino через порт Vin, даже если очень хочется
Для простоты отладки кода я подготовил проект в TinkerCad, где можно протестировать ваши идеи:
В простом примере управление моторами осуществляется просто переключением состояния портов «0 или 1». Двигатели меняют направление своего вращения. Такой подход, однако не позволяет регулировать скорость вращения моторов.
⚡ Управление скоростью через ШИМ
Для регулировки скорости моторов используется широтно-импульсная модуляция (ШИМ). Это метод, при котором передаваемая энергия ограничивается с помощью быстрого переключения состояния порта. Время «включенного» состояния и определяет количество передаваемой.
ШИМ-сигнал определяет скорость мотора, например:
Если порт №1 установлен в состояние «0» (командой digitalWrite(port1, 0), то чем выше будет значение ШИМ (от 0 до 255) на порту №2 (командой analogWrite(port2, 200), тем быстрее будет крутиться мотор.
Однако, если нужно изменить направление вращения, то логика меняется:
Порт №1 устанавливается в состояние «1» (командой digitalWrite(port1, 1). И чем меньше будет значение ШИМ, тем быстрее будет крутиться мотор ((командой analogWrite(port1, 0)
🛑 Остановка моторов
Для остановки моторов обычно просто отправляется 0 на пины управления скоростью моторов. Это прекращает подачу напряжения на моторы и заставляет их остановиться.
Теперь вы знаете как управлять скоростью моторов вашего робота или устройства с помощью Arduino и драйвера моторов! Надеюсь, это поможет вам создать еще более захватывающие проекты робототехники. Удачи! 🤖✨