Как подключить двигатель постоянного тока к Arduino. Какую схему использовать для управления направлением вращения мотора. Как контролировать скорость двигателя с помощью ШИМ. Какой код нужно загрузить в Arduino для управления мотором.
Основы работы двигателя постоянного тока
Двигатель постоянного тока (DC motor) — один из самых распространенных типов электродвигателей, используемых в робототехнике и электронных проектах. Его популярность обусловлена простотой конструкции и управления.
Основные характеристики DC двигателя:
- Имеет всего 2 вывода — положительный и отрицательный
- При подаче напряжения начинает вращаться
- Направление вращения меняется при смене полярности питания
- Скорость вращения зависит от величины подаваемого напряжения
Однако для полноценного управления двигателем в проектах на Arduino требуется дополнительная схема — так называемый H-мост.
Зачем нужен H-мост для управления двигателем?
H-мост — это электронная схема, позволяющая управлять направлением вращения двигателя постоянного тока без физического переключения проводов. Основные преимущества использования H-моста:

- Возможность программно менять направление вращения
- Управление скоростью двигателя с помощью ШИМ
- Защита двигателя от перегрузок
- Возможность одновременного управления несколькими моторами
H-мост получил свое название из-за характерного расположения транзисторов в схеме, напоминающего букву H. В простейшем варианте H-мост состоит из 4 транзисторов.
Микросхема L298N — популярный драйвер двигателей
Для управления DC моторами с помощью Arduino чаще всего используется микросхема L298N. Это готовый двухканальный H-мост со следующими характеристиками:
- Напряжение питания: 5-35В
- Максимальный ток: 2А на канал
- Возможность управления 2 двигателями
- Встроенная защита от перегрева
- Управление направлением и скоростью для каждого мотора
L298N имеет 15 выводов, но для базового подключения одного двигателя достаточно использовать 6 из них.
Схема подключения двигателя к Arduino через L298N
Для управления одним DC мотором потребуется следующее подключение:
- Vcc и GND L298N подключаются к 5В и GND Arduino соответственно
- IN1 (вывод 5) L298N — к цифровому пину 8 Arduino
- IN2 (вывод 7) L298N — к цифровому пину 9 Arduino
- ENA (вывод 6) L298N — к ШИМ пину 2 Arduino
- Выводы OUT1 и OUT2 L298N — к выводам двигателя
Пины IN1 и IN2 отвечают за направление вращения, а ENA — за скорость (через ШИМ).

Логика управления направлением вращения
Направление вращения двигателя определяется комбинацией сигналов на входах IN1 и IN2:
IN1 | IN2 | Направление |
---|---|---|
0 | 0 | Стоп |
1 | 0 | Вперед |
0 | 1 | Назад |
1 | 1 | Стоп |
Таким образом, меняя значения на цифровых выходах Arduino, подключенных к IN1 и IN2, можно программно управлять направлением вращения мотора.
Управление скоростью с помощью ШИМ
Для регулировки скорости вращения двигателя используется широтно-импульсная модуляция (ШИМ). Вывод ENA подключается к ШИМ-пину Arduino. Изменяя скважность ШИМ-сигнала от 0 до 255, можно плавно регулировать скорость от полной остановки до максимальной.
В Arduino для установки ШИМ используется функция analogWrite(). Например, analogWrite(2, 128) установит 50% скорость на выводе 2.
Пример скетча для управления двигателем
Вот базовый скетч для Arduino, демонстрирующий управление направлением и скоростью DC мотора:
«`cpp const int PWM_PIN = 2; // ШИМ-пин для управления скоростью const int IN1_PIN = 8; // Пин для управления направлением const int IN2_PIN = 9; // Пин для управления направлением void setup() { pinMode(PWM_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } void loop() { // Вращение по часовой стрелке digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); analogWrite(PWM_PIN, 255); // Полная скорость delay(3000); // Торможение digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH); delay(1000); // Вращение против часовой стрелки digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH); analogWrite(PWM_PIN, 128); // Половина скорости delay(3000); // Торможение digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH); delay(1000); } «` Этот скетч демонстрирует основные принципы управления двигателем:
- Установка направления вращения через цифровые выходы
- Управление скоростью через ШИМ
- Реализация торможения
- Циклическое изменение режимов работы
Советы по работе с DC моторами и Arduino
При разработке проектов с использованием двигателей постоянного тока и Arduino следует учитывать несколько важных моментов:
- Используйте отдельный источник питания для двигателей, не подключайте их напрямую к Arduino
- Добавьте защитные диоды параллельно двигателю для защиты от обратных токов
- При использовании мощных двигателей обеспечьте хорошее охлаждение микросхемы L298N
- Для точного контроля скорости используйте энкодеры обратной связи
- При необходимости управления несколькими двигателями рассмотрите использование специализированных драйверов моторов
Расширенные возможности управления DC моторами
Базовая схема на L298N позволяет решать большинство задач, связанных с управлением двигателями постоянного тока. Однако для более сложных проектов могут потребоваться дополнительные функции:
- Плавный пуск и остановка двигателя
- Точное позиционирование вала
- Синхронизация нескольких моторов
- Определение препятствий и защита от перегрузки
Для реализации этих функций могут потребоваться дополнительные компоненты, такие как энкодеры, датчики тока, микроконтроллеры с более высокой производительностью.

Заключение
Управление двигателями постоянного тока с помощью Arduino открывает широкие возможности для создания подвижных механизмов и роботов. Использование готовых драйверов типа L298N значительно упрощает разработку, позволяя сосредоточиться на алгоритмах управления, а не на низкоуровневых аспектах работы с моторами.
Освоив базовые принципы, изложенные в этой статье, вы сможете реализовывать самые разнообразные проекты — от простых движущихся игрушек до сложных робототехнических систем.
Картонный робот-пылесос на Ардуино / Хабр
Следуя инструкции под катом (и имея в наличии все нужные компоненты), за несколько часов можно построить простой картонный робот-пылесос. Конечно, это, скорее, игрушка, но удивительно, сколько пыли она собирает с вроде-бы чистого пола. Также может быть любопытно опробовать на ней алгоритмы управления роботом-пылесосом, дополнить сонаром или другими датчиками препятствий.
Требуемые компоненты:
- Модуль Ардуино
- Motor-shield — модуль управления двигателями, также известный как H-Bridge
- Два мотора с редукторами и проводами питания
- Два колеса
- Набор аккумуляторов, батареек или power-bank на 5 вольт
- Турбинка охлаждения для компьютера (не вентилятор, а именно турбина) на 5 вольт (или на 12 вольт — с преобразователем напряжения 5 вольт — 12 вольт)
- Набор сильных магнитов
- Кабель с USB коннектором
- Кабель с разъемом питания для Ардуино
- Провода для соединения контактов Ардуино
- Плотный картон
- Клеевой пистолет с термоклеем
- Кусочек жести (можно от консервной банки или алюминиевой банки из под сока)
- Пластиковую коробку — емкость для собираемой пыли
Определяется примерное расположение компонент, вырезается из картонна круг подходящего размера — шасси робота:
В шасси вырезаются отверстия для колес надетых на оси редукторов и под входное отверстие турбинки. Моторы прикрепляются к шасси пластиковыми стяжками:
К шасси термоклеем приклеивается турбина:
Турбина — на верху шасси, моторы — внизу:
С нижней стороны шасси отмечается контур коробки (той, что для сбора пыли) и вокруг контура прокалываются насквозь отверстия, отмечая расположения магнитов — магнитами коробка будет удерживаться на шасси (простейший из испробованных ранее способов):
С верхней стороны шасси приклеиваются магниты на местах отметок-проколов. Если картон гофрированный — вырезается фрагмент верхнего слоя по размеру магнитов:
С нижней стороны шасси прикладываются магниты, подложив под них лист бумаги:
Коробка для пыли устанавливается между магнитами и приклеивается к ним:
С верхней стороны шасси наклеиваются аккумуляторы или отсек с батареей и крепления для модуля Ардуино. В данном случае используются куски деревянных шпажек приклееных термоклеем.
Модуль Ардуино с motor-shield устанавливаются в крепления. Провода питания от аккумулятора и Ардуино отрезаются по размеру.
Провода питания скручиваются (еще лучше — спаиваются), изолируются и подключаются к турбине, Ардуино, motor-shield и аккумулятору.
Из полосок картона вырезаются, сгибаются и склеиваются полукругом бамперы:
Бамперы приклеиваются с боков шасси — шасси предварительно подрезается так, чтобы приклеенные бамперы могли немного придавливаться к нему при столкновении с припятствием:
Два проводника присоединяются к двум кусочкам жести (предварительно зачищенной для хорошего контакта) и фиксируются на них термоклеем:
Кусочки жести приклеиваются к бамперам, их провода будут подключены к Ардуино (к контактам 5 и 8 для приведенной программы). Напротив них приклеиваются контакты двух других проводников, присоединяемые к контактам GND Ардуино.
Для фильтрации пыли используется многослойная волокнистая синтетическая ткань (например прямоугольник вырезанный из салфетки вытирания столов на кухне) — фильтр кладется снизу на шасси и прижимается коробкой с приклеенными на нее магнитами:
В коробке прорезается длинное отверстие — краями выгнутыми наружу. К коробке приклеивается округлая опора — кусок пластика или пробки так, чтобы выгнутый край отверстия коробки находился на 1 мм над полом, когда робот установлен на колеса и опирается на опору. Высотой опоры можно регулировать качаство уборки и проходимость робота:
Если у коробки слишком высокие стенки — их можно укоротить, переклеив магниты:
Программа для Ардуино и motor-shield на Github.
Мотор с редуктором — 100-200 оборотов в минуту (RPM). Редукторы к моторам можно распечатать на 3D принтере — вот так выглядит картонный робот с распечатанными мотор-редукторами. Желательно также припаять конденсаторы на 0.1 мкФ между контактами моторов (обычно на радиоутравляемых игрушках такие конденсаторы уже припаяны).
Турбина — 5 вольт, 0.2 А; 12 вольт, 0.2 А — лучше (она мощнее), но требует преобразователя 5 вольт — 12 вольт (Step-Up converter). Находится на ebay по словам «cooling blower fan 5V».
Ардуино motor-shield — в данном случае YFRobot на микросхеме L298P; другие motor-shield могут иметь другие номера контактов и программно управляться иначе — например, этот. Также возможно использование внешних модулей управления двигателями или просто микросхему L293D (последнее потребует пайки).
Самодельное колёсное шасси 4х4 с ардуино мотор редукторами часть 2 смотреть онлайн видео от Э+М в хорошем качестве.
12+
7 месяцев назад
Э+М110 подписчиков
В этом видео я покажу, как можно сделать самодельное колесное шасси 4х4 с ардуино мотор-редукторами и независимой подвеской..
======================================================
Arduino шасси купить http://ali.pub/ty401
Arduino мотор-редуктор с колесом http://ali.pub/h3bd1
Аппаратура радиоуправления http://ali.pub/tp0sy
=====================================================
ОТВЕТЫ НА ЧАСТЫЕ ВОПРОСЫ.
1) Наша группа ВК https://vk.com/epm_club
2) Программа 3D моделирования называется Autodesk Inventor
3) Коврик зелёный на столе называется (CUTTING MAT) http://ali.pub/p0zxa
4) Электродвигатель 3V (круглый) http://ali.pub/jq8zv продается без шкива.
5) Электродвигатель 3V (плоский) http://ali. pub/1xeft
6) Шкив ведущий на двигатель http://ali.pub/vmwo0 заказывать надо под ось 2мм.
7) Аппаратура радиоуправления для машинки http://ali.pub/2nrul
8) Аппаратура радиоуправления для танка http://ali.pub/tp0sy
==========================================================
ТОПОВЫЕ ТОВАРЫ ДЛЯ САМОДЕЛОК.
1) Arduino UNO R3, на МК(MEGA328P) http://ali.pub/p8mk9
2) Arduino NANO Ch440, на МК(MEGA328p)http://ali.pub/8ejap
3) Arduino мотор-редуктор с колесом (колесо хорошее, редуктор так себе) http://ali.pub/h3bd1
4) Arduino мотор-редуктор (редуктор нормальный) http://ali.pub/kzqai
5) Провода для Arduino http://ali.pub/9dgqy
6) Джойстик для Arduino http://ali.pub/begiz
7) Гироскоп 3-оси, модуль для Arduino, на МС(MPU 6050) http://ali.pub/3rxaw
8) Лазерный модуль KY-008 для Arduino http://ali.pub/o81q2
9) Лазерная головка 5V, 5mW, 650nm http://ali.pub/xvyfa
10) Датчики холла, модуль для Arduino http://ali.pub/wncr1
11) Повышающий напряжение DC-DC модуль, на МС(XL6009) http://ali.pub/49ok0
12) Повышающий напряжение DC-DC модуль, на МС(MT3608) http://ali.
pub/nt3yh
13) Li-ion аккумуляторы 18650 http://ali.pub/9sqpa http://ali.pub/zj5lo http://ali.pub/0ek6x
14) Модуль для зарядки Li-ion аккумуляторов 18650, на МС(TP4056) http://ali.pub/rnpzb
15) Боксы для аккумуляторов 18650 http://ali.pub/ku3mt
16) Элементы Пельтье TEC12705 http://ali.pub/ea8dj
17) Радио модуль NRF24L01+ http://ali.pub/h7jpg
18) Сервопривод SG90 http://ali.pub/xqw0b
19) Контроллера электродвигателей на МС(L298N) http://ali.pub/8l35c
===========================================================
ИНСТРУМЕНТ И ВСПОМОГАТЕЛЬНЫЕ МАТЕРИАЛЫ.
1) Коврик для пайки огнеупорный силиконовый http://ali.pub/pszaq
2) Патрон для мини-дрели (зажим цанга) на вал 2мм http://ali.pub/uijeh
3) Мини-дрели с патроном и цангами http://ali.pub/65uvt
======================================================
Композиция «Real Bad Girl» принадлежит исполнителю Audionautix. Лицензия: Creative Commons Attribution (https://creativecommons.org/licenses/by/4.0/).
Исполнитель: http://audionautix.com/
=====================================================
Отблагодарить автора за его труд, чертежи и уроки:)
Яндекс.
Деньги 410014334017254
https://money.yandex.ru/to/410014334017254
WebMoney (Z343563415592; R350733365372)
Bitcoin — 1ET2cmbjsKCMP98dKNj7NxqnR9T9djgqPd
Робот: Управление двигателем | CoderDojo York
Arduino и схемы среднего уровня — 1 час
В этом первом руководстве по роботам мы рассмотрим, как заставить настоящего робота двигаться с помощью двигателей, и проследим, как далеко мы продвинулись.
В каждом колесе робота есть двигатель, и наша Arduino может указать этим двигателям двигаться вперед или назад в зависимости от сигнала, который мы ему подаем.
Вам понадобится…
- SparkFun RedBot (или что-то подобное)
- Arduino Uno в роботе
- USB-кабели и ноутбук
Нулевой шаг: Запустите редактор кода Arduino
Достаньте Arduino Uno, подключите его к компьютеру и загрузите онлайн-программу создания кода Arduino редактор. Вы можете использовать онлайн или обычное приложение для программирования, но мы используем онлайн-версию.
Шаг первый: Соберите робота
Если вы в CoderDojo York, это уже сделано! Запишите PIN-коды, используемые для управления выходом двигателя и обратной связью.
Шаг второй: Заставьте двигатели двигаться
Подключите Arduino к ноутбуку с помощью USB-кабеля. Чтобы заставить двигатель двигаться, нам нужно отправить аналоговый сигнал на PIN-код, к которому он подключен. Размер этого аналогового сигнала определяет, насколько «сильно» будет вращаться двигатель, но он будет иметь максимальное значение. Используйте следующий код, чтобы повернуть левый двигатель. Измените PIN-коды, если двигатели подключены по-разному.
Загрузите этот скетч Arduino и убедитесь, что моторы двигаются
Шаг третий: прочтите показания пульса
Чтобы узнать, как далеко мы продвинулись вперед (или назад), нам нужно выяснить, насколько далеко сдвинулись колеса. Мы можем сделать это с помощью чего-то, что называется Rotary Encoder.
Моторы имеют магнитный металлический диск, который вращается вместе с колесами, и небольшой датчик, который определяет изменение магнитного поля с помощью эффекта Холла. Когда колеса поворачиваются, датчик обнаруживает это и выдает небольшое аналоговое напряжение. Чем больше вращаются колеса, тем выше напряжение.
Чтобы прочитать этот сигнал двигателя, мы используем еще немного кода Arduino…
Теперь, когда вы запустите код, откройте последовательный плоттер и посмотрите, как увеличивается переменная leftMotorEncoderCount
. Попробуйте немного замедлить колесо пальцами, и вы увидите, что переменная увеличивается меньше.
Шаг четвертый: Немного переместите двигатель
Теперь мы можем прочитать сигнал двигателя, мы можем использовать его для поворота двигателей на заданное расстояние. Используйте следующий код, чтобы добавить больше контроля над вашими двигателями.
Задание I: Левые повороты
Напишите код для левого поворота, просто повернув правое колесо, а не левое, сделайте это как можно ближе к прямому повороту!
Задание II: Двигайтесь по квадрату
Напишите алгоритм, заставляющий робота двигаться по квадрату.
Это руководство будет иметь несколько разделов, добавленных позже0066 Creative Commons Attribution-NonCommercial 4.0 Международная лицензия.
Коммерческое использование нашего материала запрещеноКак управлять двигателем постоянного тока с помощью Arduino
Ариба Аршад
15 232 просмотра Двигатель постоянного токачаще всего используется из-за его простой конструкции и функций. У него всего 2 вывода, положительный и отрицательный. Если подключить эти провода напрямую к аккумулятору, двигатель будет вращаться. Если один переключает провода, то двигатель будет вращаться в противоположном направлении.
Как управлять вращением?
Если мы хотим управлять вращением двигателя постоянного тока без изменения подключения провода, то подходящим вариантом является использование Н-моста .
H-мост представляет собой небольшую электронную схему, способную вращать двигатель как по часовой стрелке, так и против часовой стрелки. H-мост имеет различные применения, наиболее важным из которых является управление двигателями в роботе. Он называется H-мост, так как в нем используются 4 транзистора, поэтому схема выглядит как H.9.0004
Чтобы управлять двигателем постоянного тока с помощью Arduino, мы будет использовать L298 H-Bridge IC. ИС L298 управляет как скорость и направление двигателей постоянного тока. Он может даже управлять 2 двигателями одновременно.
Hardware Components
L298 IC Pinout
S.no Component Qty 1. Breadboard 1 2. Connecting Wires 1 3. Ардуино Мега2560 1 4. H-Bridge IC L298 1 5. DC Motor 1 Controlling 2 Motors
- 3 inputs are available для каждого мотора.
- Для двигателя 1 входные контакты включают IN1, IN2 и ENA
- Для двигателя 2 входные контакты включают IN3, IN4 и ENB
- Однако здесь мы покажем, как подключить один двигатель постоянного тока с L298 IC.
- Сначала мы подключим Arduino к IN1 (контакт 5), IN2 (контакт 7) и Enable1 (контакт 6). стороны, контакт 6 требует сигнала PWM для достижения контроля скорости.
- При изменении значений входа 1 и входа 2 направление вращения двигателя также будет изменено.
См. следующее таблицу для дальнейшего уточнения.
Вход 1 Input 2 Direction of rotation 0 0 Stop 1 0 Forward 0 1 Backward 1 1 Стоп
- Контакт 8 Arduino подключен к контакту IN1 микросхемы L298
- Контакт № 9 подключен к контакту IN2 L298 ИК.
- Эти два цифровых контакта 8 и 9 Arduino управляют направлением вращения двигателя постоянного тока.
- Контакт 2 Arduino подключен к EN. 8 и 9,
- Мы будем использовать аналоговую функцию Write() для установки значения вывода 2
Код Arduino
const int pwm = 2 ; //инициализация вывода 2 как ШИМ константный интервал in_1 = 8 ; константа int_2 = 9 ; //Для обеспечения логики L298 IC для выбора направления двигателя постоянного тока недействительная установка () { pinMode(ШИМ,ВЫХОД) ; //мы должны установить вывод ШИМ в качестве выхода pinMode(in_1,OUTPUT) ; //Логические выводы также устанавливаются как выходные pinMode(in_2,OUTPUT) ; } пустой цикл () { //Для движения по часовой стрелке in_1 = High, in_2 = Low digitalWrite(in_1,HIGH) ; цифровая запись (in_2, LOW) ; аналогЗапись(ШИМ,255) ; /* установка pwm двигателя на 255 мы можем изменить скорость вращения изменяя вход ШИМ, но мы только используя arduino, поэтому мы используем самый высокий значение для привода двигателя */ // По часовой стрелке в течение 3 секунд задержка(3000) ; //Для тормоза digitalWrite(in_1,HIGH) ; digitalWrite(in_2,HIGH) ; задержка(1000) ; //Для движения против часовой стрелки - IN_1 = LOW, IN_2 = HIGH цифровая запись (in_1, LOW) ; digitalWrite(in_2,HIGH) ; задержка(3000) ; //Для тормоза digitalWrite(in_1,HIGH) ; digitalWrite(in_2,HIGH) ; задержка(1000) ; }Шаги для управления двигателем постоянного тока Arduino
- Подключите 5 В и GND микросхемы L298 к 5 В и GND Arduino.