Як керувати двигунами постійного струму за допомогою Arduino та драйвера двигуна L293D

керувати

Існує безліч способів керувати двигунами постійного струму за допомогою Arduino. Але одним з найпростіших і найпопулярніших є драйвер двигуна L293D. Драйвер двигуна L293D розроблений спеціально для управління двигунами постійного струму, кроковими двигунами, соленоїдами та будь-яким іншим навантаженням з високим імпедансом. Однією з головних його переваг є те, що він може самостійно контролювати швидкість та напрямок роботи двох двигунів постійного струму.

У цьому підручнику ми розглянемо наступне:

  • Як працює драйвер двигуна L293D
  • Як підключити двигун L293D та постійного струму до Arduino
  • Як керувати напрямком одного двигуна постійного струму
  • Як контролювати швидкість обертання двох двигунів постійного струму

Як працює L293D

L293D - це двоканальна мікросхема H-Bridge, здатна управляти двома двигунами постійного струму. L293D може керувати до двох двигунів постійного струму з напругою від 4,5 В до 36 В.

На схематичній схемі нижче показана спрощена версія внутрішньої схеми, яка управляє одним двигуном:

Дві пари транзисторів Дарлінгтона (Q1/Q4 та Q2/Q3) встановлені як H-міст. На випромінювачі та колекторі кожного транзистора є діод, щоб запобігти зворотній ЕРС від двигуна, що спричиняє пошкодження транзисторів.

Коли транзистори Q1 і Q4 ввімкнені, а транзистори Q2 і Q3 вимкнені, струм протікає через двигун від Vcc до землі так:

Це призводить до обертання двигуна за годинниковою стрілкою або проти. Напрямок обертання залежить від полярності двигуна та способу його підключення до джерела живлення.

Коли транзистори Q2 і Q3 увімкнені, а Q1 і Q4 вимкнені, струм через двигун змінюється. Реверсуючи потік струму через двигун, напрямок його обертання буде зворотним.

L293D Схема контактів

Ось мінімальна схема L293D:

L293D має два окремі H-мости. Один H-міст знаходиться ліворуч, а інший - праворуч:

H-міст 1 може керувати одним двигуном, а H-міст 2 може керувати іншим двигуном.

Кожен штифт має наступну функцію:

  • Результат 1: потужність для двигуна H-bridge 1
  • Вихід 2: потужність для двигуна H-bridge 1
  • Результат 3: потужність для двигуна H-bridge 2
  • Вихід 4: потужність для двигуна H-bridge 2
  • Vcc 1: Живлення 5 В для мікросхеми L293D
  • Vcc 2: джерело живлення для двигунів (від 4,5 В до 36 В постійного струму)
  • Увімкніть 1, 2: вмикає/вимикає H-міст 1 (HIGH дозволяє, LOW відключає)
  • Увімкніть 3, 4: вмикає/вимикає H-bridge 2 (HIGH дозволяє, LOW відключає)
  • Вхідні дані 1: сигнал керування двигуном для H-мосту 1
  • Вхід 2: сигнал керування двигуном для H-мосту 1
  • Вхід 3: сигнал керування двигуном для H-мосту 2
  • Вхід 4: сигнал керування двигуном для H-мосту 2

Щоб увімкнути електродвигун H-bridge 1, надішліть сигнал HIGH на вхід 1 контакт, а сигнал LOW на вхід 2 pin. Це призведе до обертання двигуна в одному напрямку. Щоб двигун обертався у зворотному напрямку, надішліть НИЗЬКИЙ сигнал на вхідний 1 контакт, а ВИСОКИЙ сигнал на вхідний 2-контактний. Щоб вимкнути двигун, надішліть низький сигнал на вхідний 2-контактний.

Налаштування двигуна постійного струму за допомогою L293D

У цьому посібнику ми збираємося створити кілька прикладів проектів, щоб продемонструвати, як використовувати L293D для управління двигунами постійного струму на Arduino. Для побудови прикладних проектів вам знадобляться такі частини:

Підключіть двигун постійного струму та L293D до Arduino

Давайте побудуємо прикладний проект, який змусить двигун постійного струму обертатися в одному напрямку протягом двох секунд, зупинятися, а потім обертатися у зворотному напрямку протягом двох секунд. Щоб побудувати цей проект, підключіть двигун постійного струму, L293D та Arduino таким чином:

Ймовірно, вам знадобиться окреме джерело живлення для двигуна. Тут ми використовуємо джерело живлення 12 В для живлення двигуна та окреме джерело живлення 5 В для живлення Arduino та L293D.

Код Arduino для управління двигуном постійного струму

Після того, як ви побудували схему вище, завантажте цей код на свій Arduino:

Перші два рядки коду призначають змінну in1 для виводу 10 Arudino, а змінну in2 - для виводу 11. Потім у розділі налаштування ми встановлюємо in1 та in2 як виходи за допомогою функції pinMode ().

У розділі циклу digitalWrite (in1, HIGH) і digitalWrite (in2, LOW) обертаються1 HIGH і in2 LOW, що змушує двигун обертатися в одному напрямку. Функція затримки (2000) підтримує обертання двигуна протягом двох секунд. Потім digitalWrite (in1, LOW) вимикає двигун, встановлюючи in1 LOW. Функція затримки (1000) утримує двигун вимкненим на одну секунду.

Після того, як двигун вимкнений на одну секунду, ми змінюємо напрямок двигуна, встановлюючи in1 LOW і in2 HIGH за допомогою digitalWrite (in1, LOW) і digitalWrite (in2, HIGH). Ми використовуємо затримку (2000), щоб утримувати обертання двигуна у зворотному напрямку протягом двох секунд. Потім ми вимикаємо двигун, встановлюючи in2 LOW за допомогою digitalWrite (in2, LOW) .

Контролюйте напрямок роботи двох двигунів

Тепер додамо до ланцюга другий двигун. Дотримуйтесь схеми підключення нижче, щоб підключити все:

Код Arduino для управління напрямком роботи двох двигунів

Цей ескіз змусить один двигун обертатися вперед і назад протягом двох секунд, а потім змусити другий двигун обертатися вперед і назад протягом двох секунд.

Контролюйте швидкість двох двигунів

Тепер додамо можливість контролювати швидкість роботи двох двигунів. Вам потрібно буде додати два потенціометри на 10 Км до попередньої схеми. Підключіть усі компоненти відповідно до цієї електричної схеми:

Код Arduino для управління швидкістю двох двигунів

Після того, як ви підключили схему вище, завантажте цей код в Arduino:

Для використання потенціометрів для керування швидкістю двигунів постійного струму візьмемо analogRead () контактів, підключених до потенціометрів - speedControl1 та speedControl2. Значення analogRead (), виміряне з цих штифтів, буде цілим числом від 0 до 1023, залежно від положення потенціометра. Це значення зберігається у змінних setting1 та setting2.

L293D буде направляти потужність на двигуни в залежності від напруги, що подається на вимикачі. Чим вище напруга, що подається на вимикач, тим більше енергії буде подаватися на двигун, і тим швидше він буде обертатися. Отже, ми використовуємо analogWrite (ena, setting1) та analogWrite (enb, setting2) для передачі показань напруги з потенціометрів на двигуни постійного струму. Це змінить швидкість обертання двигунів у міру повороту потенціометрів.