Модуль 7 — Двигатели и исполнительные устройства (курс для начинающих)
Цель модуля: освоить управление различными исполнительными устройствами: сервоприводами, коллекторными моторами и драйверами. Вы научитесь использовать ШИМ (PWM) для регулировки скорости, а также подключать двигатели через транзисторы и драйверы.
Теория
Сервоприводы
Сервопривод — это устройство, которое позволяет поворачивать вал на заданный угол (обычно от 0° до 180°). Управление осуществляется с помощью ШИМ-сигнала с фиксированным периодом 20 мс, где длительность импульса определяет угол поворота.
Управление мотором через MOSFET
Для включения/выключения и регулировки скорости коллекторных моторов часто используют n-канальные MOSFET-транзисторы. Они управляются с Arduino через цифровой пин с ШИМ, что позволяет менять скорость вращения.
Двунаправленное управление — драйвер L298N
L298N — популярный драйвер для управления двигателями в обе стороны. Он позволяет управлять двумя коллекторными моторами, а также регулировать скорость через PWM. Драйвер принимает сигналы управления от Arduino и подаёт питание на моторы от внешнего источника.
Практика
Поворот сервопривода по команде
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9); // Пин для управления
}
void loop() {
myservo.write(0); // Поворот на 0°
delay(1000);
myservo.write(90); // Поворот на 90°
delay(1000);
myservo.write(180); // Поворот на 180°
delay(1000);
}
Управление скоростью мотора через PWM (MOSFET)
int motorPin = 5; // Пин с поддержкой PWM
void setup() {
pinMode(motorPin, OUTPUT);
}
void loop() {
for (int speed = 0; speed <= 255; speed += 5) {
analogWrite(motorPin, speed); // Увеличиваем скорость
delay(50);
}
for (int speed = 255; speed >= 0; speed -= 5) {
analogWrite(motorPin, speed); // Уменьшаем скорость
delay(50);
}
}
Двустороннее управление коллекторным двигателем (L298N)
int in1 = 8;
int in2 = 9;
int enA = 5; // Пин с PWM
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enA, OUTPUT);
}
void loop() {
// Вращение вперед
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 200);
delay(2000);
// Стоп
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
delay(1000);
// Вращение назад
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 200);
delay(2000);
// Стоп
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
delay(1000);
}
Типичные ошибки
- Подключение мотора напрямую к пину Arduino — это может сжечь контроллер. Всегда используйте транзисторы или драйверы.
- Отсутствие диода для защиты от обратного тока мотора.
- Недостаточное питание сервопривода или мотора — приводит к рывкам и сбоям.
Что дальше
В следующем модуле мы рассмотрим Финальный проект Arduino: идеи и сборка
Контрольные вопросы
- Как управлять углом поворота сервопривода?
- Зачем нужен MOSFET при управлении мотором?
- Какие функции выполняет драйвер L298N?
- Как реализовать реверс вращения двигателя?
Авторский курс по Arduino для начинающих. Использование материалов на коммерческих сайтах допускается с указанием источника.





