Как подключить двигатель постоянного тока к Arduino. Какие компоненты нужны для управления DC мотором. Как написать код для контроля скорости и направления вращения двигателя. Какие типы проектов можно реализовать с помощью Arduino и DC мотора.
Что такое двигатель постоянного тока и как он работает
Двигатель постоянного тока (DC мотор) — это электромеханическое устройство, преобразующее электрическую энергию в механическую. Его основные компоненты:
- Статор — неподвижная часть с постоянными магнитами
- Ротор — вращающаяся часть с обмотками
- Щетки — передают ток на обмотки ротора
- Коллектор — переключает полярность тока в обмотках
При подаче постоянного тока на обмотки ротора возникает магнитное поле, которое взаимодействует с полем статора, создавая вращающий момент. Скорость вращения зависит от величины напряжения, а направление — от полярности.
Преимущества использования DC моторов с Arduino
Двигатели постоянного тока отлично подходят для проектов с Arduino благодаря ряду преимуществ:
- Простота управления скоростью и направлением
- Широкий диапазон скоростей вращения
- Высокий крутящий момент при низких оборотах
- Компактные размеры и небольшой вес
- Низкая стоимость
- Высокая надежность и долговечность
Эти качества делают DC моторы идеальным выбором для роботов, автоматизированных систем и других подвижных конструкций на базе Arduino.
Необходимые компоненты для подключения DC мотора к Arduino
Для управления двигателем постоянного тока с помощью Arduino понадобятся следующие компоненты:
- Arduino (Uno, Nano, Mega и др.)
- DC мотор (3-12В)
- Драйвер двигателя (L298N, L293D)
- Внешний источник питания (батарейный блок или блок питания)
- Макетная плата
- Соединительные провода
Драйвер двигателя необходим, так как Arduino не может напрямую обеспечить достаточный ток для питания мотора. Внешний источник питания нужен для подачи напряжения на драйвер и двигатель.
Схема подключения DC мотора к Arduino
Рассмотрим типовую схему подключения двигателя постоянного тока к Arduino через драйвер L298N:
- Подключите GND драйвера к GND Arduino
- Соедините 5V выход драйвера с 5V входом Arduino
- Подключите контакты IN1 и IN2 драйвера к цифровым пинам Arduino (например, 9 и 10)
- Соедините контакты OUT1 и OUT2 драйвера с выводами двигателя
- Подключите внешний источник питания к клеммам VCC и GND драйвера
Такая схема позволяет управлять скоростью и направлением вращения мотора с помощью ШИМ-сигналов с Arduino.
Базовый код для управления DC мотором с Arduino
Вот простой пример кода для управления двигателем постоянного тока:
// Определение пинов для подключения драйвера const int motorPin1 = 9; const int motorPin2 = 10; void setup() { // Настройка пинов на выход pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); } void loop() { // Вращение в одну сторону digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); delay(2000); // Остановка digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); delay(1000); // Вращение в другую сторону digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); delay(2000); }
Этот код обеспечивает попеременное вращение двигателя в обе стороны с паузами. Для регулировки скорости можно использовать функцию analogWrite() вместо digitalWrite().
Управление скоростью вращения DC мотора
Как контролировать скорость вращения двигателя постоянного тока с помощью Arduino? Для этого используется широтно-импульсная модуляция (ШИМ). Вот улучшенная версия кода с регулировкой скорости:
const int motorPin1 = 9;
const int motorPin2 = 10;
void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
}
void loop() {
// Плавное увеличение скорости
for (int speed = 0; speed <= 255; speed++) {
analogWrite(motorPin1, speed);
analogWrite(motorPin2, 0);
delay(20);
}
// Плавное уменьшение скорости
for (int speed = 255; speed >= 0; speed--) {
analogWrite(motorPin1, speed);
analogWrite(motorPin2, 0);
delay(20);
}
}
Функция analogWrite() позволяет задавать значения от 0 (остановка) до 255 (максимальная скорость). Изменяя эти значения, можно точно контролировать скорость вращения мотора.
Проекты с использованием DC моторов и Arduino
Двигатели постоянного тока в сочетании с Arduino открывают широкие возможности для создания интересных проектов. Вот несколько идей:
- Робот-пылесос: использует моторы для движения и управления щетками
- Система автоматического полива: моторы управляют клапанами подачи воды
- 3D-принтер: точное позиционирование печатающей головки с помощью моторов
- Автоматические жалюзи: регулировка положения ламелей
- Робот-манипулятор: управление движением «руки» робота
Эти проекты демонстрируют versatility DC моторов в сочетании с возможностями Arduino по обработке сигналов и управлению.
Робот-пылесос на Arduino и DC моторах
Рассмотрим подробнее, как можно реализовать простейшего робота-пылесоса с использованием Arduino и двигателей постоянного тока:
- Шасси: используйте два DC мотора для приводных колес
- Управление: подключите моторы через драйвер L298N к Arduino
- Навигация: добавьте ультразвуковые датчики для обнаружения препятствий
- Уборка: установите дополнительный мотор для вращения щетки
- Питание: используйте аккумуляторную батарею для автономной работы
Код для такого робота будет включать функции движения вперед, назад, поворотов, а также алгоритм навигации и уборки. Это отличный проект для изучения работы с моторами и сенсорами.
Диагностика и устранение распространенных проблем
При работе с DC моторами и Arduino могут возникнуть некоторые сложности. Вот как решить типичные проблемы:
- Мотор не вращается: проверьте подключение и полярность питания
- Низкая мощность: убедитесь, что источник питания обеспечивает достаточный ток
- Нестабильное вращение: проверьте качество соединений и состояние щеток мотора
- Перегрев драйвера: установите радиатор или уменьшите нагрузку на мотор
- Помехи в работе Arduino: используйте развязывающие конденсаторы и отдельное питание для моторов
Правильная диагностика и устранение этих проблем позволят создать надежную и эффективную систему управления двигателями.
Выбор правильного источника питания
Один из ключевых аспектов работы с DC моторами — выбор подходящего источника питания. От чего зависит выбор питания?
- Напряжение: должно соответствовать номинальному напряжению мотора
- Ток: необходимо обеспечить достаточный ток для пиковых нагрузок
- Емкость: влияет на время автономной работы устройства
- Тип: аккумуляторы для мобильных проектов, блоки питания для стационарных
Правильно подобранный источник питания обеспечит стабильную работу моторов и всей системы в целом.
Сравнение DC моторов с другими типами двигателей для Arduino
Двигатели постоянного тока — не единственный вариант для проектов с Arduino. Как они сопоставляются с другими типами моторов?
| Тип двигателя | Преимущества | Недостатки |
|---|---|---|
| DC мотор | Простота управления, низкая цена | Менее точное позиционирование |
| Шаговый двигатель | Высокая точность позиционирования | Сложнее в управлении, дороже |
| Серводвигатель | Точное угловое позиционирование | Ограниченный угол поворота |
Выбор типа двигателя зависит от конкретных требований проекта. DC моторы идеальны для непрерывного вращения и простых задач позиционирования.
Продвинутые техники управления DC моторами
Для более сложных проектов можно использовать продвинутые методы управления двигателями постоянного тока:
- ПИД-регулирование: позволяет точно контролировать скорость и положение
- Eнкодеры: обеспечивают обратную связь о положении и скорости вращения
- H-мост: позволяет реверсировать направление вращения
- Плавный старт и остановка: уменьшают механические нагрузки на систему
- Синхронизация нескольких моторов: для согласованной работы в сложных системах
Освоение этих техник позволит создавать более совершенные и эффективные устройства на базе Arduino и DC моторов.
Реализация ПИД-регулирования для DC мотора
ПИД-регулирование (Пропорционально-Интегрально-Дифференциальное) — это метод управления, который позволяет достичь высокой точности и стабильности работы двигателя. Как реализовать ПИД-регулятор для DC мотора на Arduino?
- Подключите энкодер к мотору для получения обратной связи о скорости
- Напишите функцию для чтения данных с энкодера
- Реализуйте алгоритм ПИД-регулирования в коде
- Настройте коэффициенты П, И и Д экспериментальным путем
- Используйте выход ПИД-регулятора для управления скоростью мотора
ПИД-регулирование позволяет добиться плавного изменения скорости и высокой точности позиционирования, что особенно важно в робототехнике и автоматизации.

Ардуино — Мотор | Arduino Tutorial
Мы изучим:-
Какие типы двигателей можно использовать с Arduino
-
Чем отличаются типы двигателей
-
Как управлять каждым типом двигателей
В Arduino широко используются три типа двигателей:
-
Серводвигатель
-
Шаговый двигатель
-
Двигатель постоянного тока
Серводвигатель включает два основных типа: серводвигатель с углом поворота 180° и серводвигатель с углом поворота 360°. На самом деле, большинство людей неявно понимают «серводвигатель» как «серводвигатель на 180°».
Серводвигатель с углом поворота 360° аналогичен двигателю постоянного тока, за исключением того, что для него не требуется аппаратный драйвер.
-
Поворот ограничен от 0° до 180°
-
Направление вращения: по часовой стрелке, против часовой стрелки
-
Положение вращения: можно управлять поворотом на определенный угол от 0° до 180°
-
Скорость вращения: можно регулировать, но не плавно
-
Дополнительный аппаратный драйвер: НЕ требуется.
Просто управляйте напрямую с контакта Arduino .
-
Дополнительный источник питания: требуется
-
Как управлять: легко, просто используйте ШИМ-сигнал
Arduino — руководство по серводвигателю
-
Вращение не ограничено
-
Направление вращения: по часовой стрелке, против часовой стрелки
-
Положение вращения: можно контролировать точное вращение в любом угловом положении.
-
Скорость вращения: точно регулируется. Более того, ускорение и торможение можно точно контролировать
-
Дополнительный драйвер оборудования: требуется
-
Дополнительный источник питания: требуется
-
Как управлять: сложно, новичкам следует пользоваться библиотекой
-
Автоматика и робототехника
-
Принтеры, 3D-принтер, ЧПУ, X-Y плоттер,
-
Автомат для коктейлей
Arduino — руководство по шаговому двигателю
Arduino — руководство по шаговому двигателю с драйвером L298N
Arduino — руководство по шаговому двигателю 28BYJ-48
-
Вращение не ограничено
-
Направление вращения: по часовой стрелке, против часовой стрелки
-
Положение вращения: очень трудно точно повернуть на определенный угол
-
Скорость вращения: легко контролировать, насколько быстро, но очень трудно точно контролировать определенное значение скорости.
-
Дополнительный драйвер оборудования: требуется.
-
Дополнительный источник питания: требуется
-
Как управлять: легко, просто используйте высоковольтный ШИМ-сигнал
※ ПРИМЕЧАНИЕ:
-
Для управления положением двигателя постоянного тока нам потребуется дополнительное оборудование, называемое энкодером, а затем использовать метод управления с обратной связью, такой как метод ПИД-регулирования. Это очень сложно для начинающих.
-
Для контроля скорости мы можем легко контролировать скорость, например, медленную, среднюю, быструю, очень быструю, сколько процентов от полной скорости. Однако, чтобы контролировать количество циклов в секунду, нам нужно дополнительное оборудование, называемое энкодером, а затем использовать метод управления с обратной связью, такой как метод ПИД-управления. Это очень сложно для начинающих.
-
Некоторые двигатели постоянного тока на рынке имеют встроенный энкодер
-
Используется для управления чем-то, что должно вращаться непрерывно, но скорость указывать не нужно.
Например, вентилятор, насос, радиоуправляемая машинка, дрель…
※ ПРИМЕЧАНИЕ:
Существует два основных типа двигателей постоянного тока: коллекторные двигатели постоянного тока и бесщеточные двигатели постоянного тока. Коллекторный двигатель постоянного тока широко используется в проектах «сделай сам»
Arduino — руководство по двигателю постоянного тока
Выбор двигателя для проекта в зависимости от многих факторов, таких как переносимый вес, источник питания, характеристики приложения…
-
Если ваш проект необходимо повернуть в угловое положение между 0° и 180°, найти подходящий серводвигатель на 180°
-
Если в вашем проекте необходимо точное вращение в любое положение, найдите подходящий шаговый двигатель
-
Если в вашем проекте требуется точное непрерывное вращение без какой-либо позиции, найдите подходящий двигатель постоянного тока или серводвигатель с поворотом на 360°
| 180° Servo motor SG90 Buy on Amazon | |
| 180° Servo motor MG996R Buy on Amazon | |
| 360° Servo motor FS90R Buy on Amazon | |
| Stepper motor Buy on Amazon | |
| DC motor Buy on Amazon | |
| DC motor with encoder Buy on Amazon | |
| Аппаратный драйвер шагового двигателя и двигателя постоянного тока Купить на Amazon |
Обратите внимание: это партнерские ссылки.
Если вы покупаете компоненты по этим ссылкам, мы можем получить комиссию без каких-либо дополнительных затрат для вас. Мы ценим это.
-
Посмотрите лучший комплект Arduino для начинающих
※ НАШИ СООБЩЕНИЯ
-
МОЖНО АРЕНДА. Узнайте, как нанять нас для создания вашего проекта
-
Если этот урок полезен для вас, пожалуйста, мотивируйте нас сделать больше уроков.
-
Вы можете поделиться ссылкой на это руководство где угодно. Однако, пожалуйста, не копируйте контент для публикации на других сайтах. Мы потратили много времени и сил на создание содержания этого урока, пожалуйста, уважайте нашу работу!
Подписывайтесь на нас
Поделись с друзьями!
Управление скоростью двигателя с помощью Arduino
Mark Li
19.11.19 ·
В этом примере мы будем управлять скоростью линейного привода с Arduino и драйвером двигателя.
Примечание. Этот учебник предполагает предварительное знание основных электронных принципов, аппаратного и программного обеспечения Arduino. Если вы впервые используете Arduino, мы предлагаем изучить основы в одном из множества отличных учебных пособий для начинающих, доступных через поиск Google и YouTube. Имейте в виду, что у нас нет ресурсов для предоставления технической поддержки для пользовательских приложений, и мы не будем отлаживать, редактировать, предоставлять код или схемы соединений за пределами этих общедоступных учебных пособий.
Компоненты
- Линейный привод 12 В
- Блок питания 12 В
- Ардуино
- Моторный драйвер
- Потенциометр (дополнительно)
- Электрические провода для соединения и обжимной инструмент или паяльник
Проводка
Обзор аппаратного и программного обеспечения
Для двигателей постоянного тока в линейных приводах требуется большой ток (до 5 А).
контакты, так как они рассчитаны только на 40 мА каждый. Поэтому мы используем драйвер двигателя, который может принимать слаботочный ШИМ-сигнал (широтно-импульсная модуляция) с платы Arduino и выводить сильноточный ШИМ-сигнал на линейный привод.
Драйвер двигателя подключен к двум цифровым контактам ШИМ (контакты 10 и 11 на Arduino Uno). Установив один из этих контактов в LOW, а другой в HIGH (см. строки 18 и 19 в коде ниже), мы можем выдвигать привод на максимальной скорости. Чтобы остановить привод, мы устанавливаем оба контакта в положение LOW (см. строки 21 и 22 в коде ниже), а чтобы изменить направление движения, мы можем изменить порядок контактов HIGH и LOW (см. строки 24 и 25 в коде ниже). Мы также можем настроить скорость, изменив переменную «Скорость» на любое значение в диапазоне [0, 255]; см. строку 17 кода ниже.
Код
https://gist.github.com/Will-Firgelli/c0ef0871dc1946d75257e0c29dccae2a
Регулировка скорости с помощью потенциометра
В приведенном выше примере мы вручную устанавливаем скорость в строке 17 кода.
Однако могут возникнуть ситуации, когда мы хотим изменить скорость привода во времени. Самый простой способ добиться этого — использовать потенциометр. Потенциометр представляет собой переменный резистор с тремя выводами, который может действовать как делитель напряжения. При вращении ручки потенциометра выходное напряжение будет меняться, и мы можем подключить его к аналоговому выводу на Arduino, чтобы установить переменную скорость.
Электропроводка
Обзор аппаратного и программного обеспечения
Как упоминалось выше, потенциометр представляет собой вращающееся устройство, сопротивление которого изменяется при вращении ручки. Подключив два внешних контакта потенциометра к 5V и GND, а средний контакт к аналоговому выводу Arduino A0, создается делитель напряжения. При вращении ручки Arduino будет считывать аналоговые показания в диапазоне [0, 1023].
Для значений в диапазоне [512, 1023] мы хотим, чтобы привод выдвигался, а для значений [0, 511] мы хотим, чтобы привод втягивался, это может быть достигнуто с помощью простого оператора if()/else в строках 22 и 28 в приведенном ниже коде.

Просто управляйте напрямую с контакта Arduino