Высокопроизводительная библиотека Arduino для управления двигателями постоянного тока
Компоненты и материалы
| Arduino UNO | × | 1 |
| Биполярный транзистор NPN (general purpose) | × | 2 |
| Биполярный транзистор PNP (general purpose) | × | 2 |
| Резистор 1 кОм | × | 2 |
| Диод 1N4007 (высоковольтный, высокотоковый) | × | 4 |
Приложения и сервисы
- Arduino IDE
О проекте




Представляю библиотеку Arduino для управления двигателями постоянного тока. Она обладает широкими возможностями и гибкостью, позволяя управлять любым двигателем постоянного тока требуемым образом. Библиотека разработана с учетом требований промышленного управления движением и включает 16 функций для универсального управления.
Возможности библиотеки
- Управление направлением вращения.
- Управление скоростью 0–100%.
- Мягкий пуск (soft start) за заданное время — плавный разгон от 0% до заданной скорости.
- Плавная остановка (smooth stop) за заданное время — плавное снижение скорости до 0%.
- Рывковое управление (jog control) в любом направлении — короткий импульс движения.
- Динамическое торможение (DC BRAKE) — мгновенная/аварийная остановка.
Ниже краткое описание всех функций, затем примеры использования. В конце приведена схема с H-мостом для управления двигателями.
Для использования скопируйте папку DC_Motor в директорию библиотек Arduino (например, C:\arduino-1.6.7\libraries).
Описание функций библиотеки
Базовые функции (без управления скоростью):
DC_Motor(int pin1, int pin2)— объявление пинов Arduino для управления двигателем.DC_Motor(int pin1, int pin2, int speed_flag)— объявление ШИМ-пинов для управления скоростью.start_motor(int dir)— запуск вращения в заданном направлении (1 — вперед, 0 — назад).forward()— запуск вперед.reverse()— запуск назад.dc_break()— мгновенная остановка* (требует специальной схемы с тормозными резисторами и осторожности).stop_motor()— остановка двигателя.jogg_full_speed(int dir)— рывок на полной скорости 5 сек в заданном направлении.
Функции с управлением скоростью (требуют инициализации второй функцией с speed_flag=1 на ШИМ-пинах):
set_speed(int speed)— установка скорости 0–100%.forward_with_set_speed()— запуск вперед с заданной скоростью.reverse_with_set_speed()— запуск назад с заданной скоростью.run_motor(int dir, int speed)— вращение в направлении dir со скоростью speed.jogg_set_speed(int dir, int speed)— рывок в направлении dir со скоростью speed.motor_speed_zero()— плавное снижение скорости до 0 (не используйтеstop_motor(), он выдает цифровой сигнал).soft_start(int dir, int speed, int time_in_sec)— разгон от 0 до speed за time_in_sec секунд в направлении dir.smooth_stop(int time_in_sec)— плавная остановка от текущей скорости до 0 за time_in_sec секунд.
Примеры
1) Вращение вперед/назад на полной скорости (без управления скоростью)
/* this program will rotate DC motor forward for 5 sec
then stop for 2 sec and again rotate motor reverse for
5 sec, stop for 2 sec continuously
created by A M Bhatt (+91-9998476150), Gujarat, INDIA
on 12/10/2016
*/
#include
DC_Motor motor(8, 12);
void setup() {}
void loop() {
motor.forward();
delay(5000);
motor.stop_motor();
delay(2000);
motor.reverse();
delay(5000);
motor.stop_motor();
delay(2000);
}
2) Вращение вперед/назад с заданной скоростью
/* this program will rotate DC motor forward for 5 sec
at 40% speed then stop for 2 sec and again rotate motor reverse for
5 sec at 80% speed continuously
created by A M Bhatt (+91-9998476150), Gujarat, INDIA
on 12/10/2016
*/
#include
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor2.set_speed(40);
motor2.forward_with_set_speed();
delay(5000);
motor2.motor_speed_zero();
delay(2000);
motor2.set_speed(80);
motor2.reverse_with_set_speed();
delay(5000);
motor2.motor_speed_zero();
delay(2000);
}
3) Рывковое управление в обе стороны с/без скорости
/* this program applies jog to two different DC motors
* it applies jog to 1st motor in full speed in both direction
* and then provides jog to 2nd motor with 80% speed in reverse
* direction and 30% speed in forward direction
* created by Ashutosh M Bhatt(+91-9998476150), Gujarat (INDIA)
* on 22/10/2016
*/
#include
DC_Motor motor(8, 12);
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor.jogg_full_speed(1);
motor.jogg_full_speed(0);
motor2.jogg_set_speed(0, 80);
motor2.jogg_set_speed(1, 30);
}
4) Мягкий пуск и плавная остановка
/* this program will give soft start to motor and increase its speed
from 0 to 90% in 10 sec in forward direction
then it gives smooth stop from 90% to 0 in 5 sec
again soft start from 0 to 50% in 6 sec in reverse direction
and finally smooth stop from 50% to 0 in 3 sec
created by A M Bhatt (+91-9998476150), Gujarat, INDIA
on 12/10/2016
*/
#include
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor2.soft_start(1, 90, 10);
delay(3000);
motor2.smooth_stop(5);
motor2.soft_start(0, 50, 6);
delay(3000);
motor2.smooth_stop(3);
}
Код
Библиотека управления DC-мотором (C Header File)
Библиотека управляет скоростью и направлением всех типов двигателей постоянного тока. Предпросмотр недоступен (только скачивание).
Схемы

Производственный процесс
- Создание аудио-эффектов, управляемых датчиками, с набором Satellite CCRMA
- Сборка домашней машины для написания домашних заданий (плоттер-писатель)
- Робот для поиска людей на базе Arduino Uno: пошаговая интеграция датчиков
- Полнофункциональная библиотека для управления биполярным шаговым двигателем на Arduino
- Android-управляемая робот-платформа на Raspberry Pi и Motor Shield
- Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
- Автономный линий-следующий робот на Arduino UNO
- Управление Roomba Create 2 через Arduino и Android: пошаговое руководство
- Точное управление сервоприводом через MPU6050 (Arduino, SG90, MG996R)
- Набор для создания робота с умной внутренней навигацией на базе Arduino