Модуль 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: ідеї та збірка


Контрольні запитання

  1. Як керувати кутом повороту сервопривода?
  2. Навіщо потрібен MOSFET при керуванні двигуном?
  3. Які функції виконує драйвер L298N?
  4. Як реалізувати реверс обертання двигуна?

Авторський курс по Arduino для початківців. Використання матеріалів на комерційних сайтах допускається з вказанням джерела.

<< Проекти << Усі товари >> Статті, уроки >>

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Модуль годинника реального часу DS1302

Модуль годинника реального часу DS1302

Модуль годин реального часу на основі мікросхеми DS1302 призначений для роботи з контролерами Ardu..

50.25грн.

Контроль виконання програми Arduino

Контроль виконання програми Arduino

Контроль виконання програми ArduinoЦя стаття присвячена опису структур, що використовуються для упра..

Компаратор подвійний LM393DR

Компаратор подвійний LM393DR

LM393DR в корпусі SOP-8 для поверхневого монтажу.Ці мікросхеми розробники усіляких датчиків для люби..

4.04грн.

Модуль стабілізатора напруги 3,3 В

Модуль стабілізатора напруги 3,3 В

Модуль призначений для живлення різних електронних пристроїв, модулів, що працюють від напруги 3,3 В..

18.61грн.

Дискретний горизонтальний датчик рівня рідини (М15, 100В, 0.5А)

Дискретний горизонтальний датчик рівня рідини (М15, 100В, 0.5А)

Дискретний горизонтальний датчик рівня рідини призначений для контролю досягнення певного рівня ріди..

105.67грн.