Модуль 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 для початківців. Використання матеріалів на комерційних сайтах допускається з вказанням джерела.




