Працюємо з 09:00 до 19:00 без вихідних.
Самовивіз - Київ біля ТЦ Квадрат бул.Перова

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

1. Управління маленькими моторчиками

Управління маленьким двигуном може бути реалізовано доволі просто. Якщо двигун достатньо малий, він може бути безпосередньо з'єднаний з виводом Arduino, та просто змінюючи рівень керуючого сигналу від логічної одиниці до нуля будемо контролювати двигун. Цей проект покаже вам основну логіку управління двигуном; однак, це не є стандартним способом підключення двигуна до Arduino. Ми рекомендуємо, вам вивчити даний спосіб, а потім перейти на слідуючу ступінь - керування двигунами за допомогою транзисторів.

Підключимо мініатюрний вібромоторчик до нашого Arduino.

Нам знадобиться:

  1. Звичайний Arduino, підключений до USB-порта комп'ютера
  2. Резистор на 220 Ом

Мініатюрний вібромоторчик (можна знайти в старій непотрібній мобілці, або в магазині електроніки)

Підключення моторчика:

1. У вібромоторчика є два дроти живлення. З'єднайте один його дріт з нульовим виводом (GND) живлення Arduino. Не має значення який з двох дротів.

2. Підключіть резистор між вибраним дискретним виходом контролера та вільним не підключеним дротом моторчика. Резистор обмежить струм та гарантує нам цілісність та збереженність Ардуіни, так як вона не проектувалась для прямого управління двигунами без перетворювачів.

Наводимо схему підключення, де для управління вибрано другий дискретний вивід плати контролера:


А ось приклад, як усе можна об'єднати за допомогою макетної плати:


Текст програми

Наступний скетч запустить моторчик на 1 секунду, та зупинить його на такий же час і так далі по кругу:
// Декларуємо номер дискретного виходу
int motorPin = 2;
void setup() {
//Призначаємо другий дискретний вивід як вихід
pinMode(motorPin, OUTPUT);
}
void loop(){
// Увімкнути мотор
digitalWrite(motorPin, HIGH);
// Почекати 1000 мс
delay(1000);
// Вимкнути мотор
digitalWrite(motorPin, LOW);
// Почекати 1000 мс
delay(1000);
}

Як це працює

Кожний раз, коли програма буде подавати логічну одиницю на наш вихід, струм буде протікати через резистор, через двигун, та на землю. Якщо двигун дійсно малопотужний, він почне обертатись, якщо це стандартний двигун постійного струму; інакше він почне вібрувати, якщо це вібромоторчик. Резистор є дуже важливим елементом цієї схеми. Кожний дискретний вихід Arduino розраховано на струм тільки до 40 мА, при цьому рекомендується не перевищувати 20 мА. Вибране значення резистора 220 Ом обмежить струм до 22 мА, і тому, що двигун увімкнено з ним послідовно, струм буде навіть меншим. Якщо загальний опір двигуна вище, ніж 200 Ом, то можна з впевненістю прибирати резистор та підключити двигун напряму до цифрового вивода та GND.
В цьому проекті ми напряму до контролера підключили один вібромоторчик, ніхто нам не забороняє підключити їх навіть декілька.
Декілька двигунів можуть бути підключені на різні цифрові виводи плати Arduino. Наприклад, виходи 2, 3, та 4 можуть незалежно керувати трьома різними двигунами. Кожний дискретний вивід на Arduino може керувати окремим двигуном. Хоча взагалі то, так робити не рекомендується, так як це збільшить струм, що проходить через Arduino. Давайте поки що обмежимось одним двигуном в даній реалізації.
Кожний електродвигун постійного струму являє собою котушку індуктивності. Коли ми знімаємо з нього струм, або коли ми обертаємо двигун вручну, він буде генерувати зворотню напругу. Що може підсмалити підключений до нього електронний компонент. Щоб уникнути цього, ми можемо підключити діод між дискретним виходом та виводом живлення 5В. Кожний раз, коли двигун буде віддавати паразитну зворотну напругу, діод буде з'єднувати його з плюсом живлення. На щастя, Arduino має вбудований захисний діод на кожному виводі. Та нам нема необхідності його дублювати зовнішнім діодом.

2. Керування двигуном за допомогою транзисторів.

Ми звичайно можемо керувати мініатюрним двигуном безпосередньо підключиши його до виходу Arduino; однак, дискретний вихід не потяне двигуни, що споживають більше 40 мА. Вихід виявляється у використанні простого підсилюючого пристрою, транзистора, щоб мати можливість керувати двигунами постійного струму будь-якої потужності. Розглянемо на прикладі, як управляти великими двигунами, використовуючи два транзистори npn або pnp структури.
Для цього проекту нам знадобляться наступні електронні компонети:
  1. Плата Arduino, підключена до USB-порту комп'ютера
  2. Моторчик постійного струму
  3. Резистор з опором між 220 Ом та 10 кОм
  4. npn транзистор(BC547, 2N3904, N2222A, TIP120)
  5. Діод (1N4148, 1N4001, 1N4007)
Нижче наведені кроки, по підключенню двигуна за допомогою транзистора:
  1. Підключіть нуль живлення Arduino GND до мінусової шини макетної плати.
  2. Підключіть один з проводів двигуна до плюса живлення +5В плати контролера. Ми будемо використовувати 5В живлення USB-порта. Якщо потрібна більша потужність, тоді необхідно використовувати зовнішнє джерело живлення, такий як наприклад батарея. Поки що розглянемо живлення саме від USB.
  3. Інший дріт двигуна з'єднуємо з колектором транзистора npn. За специфікацією на ваш транзистор визначіть який з трьох його виводів являється колектором, який базою та який емітером.
  4. Підключіть емітер транзистора до мінуса живлення GND, використовуючи минусову шину живлення макетної плати.
  5. Встановіть резистор між базою транзистора та дискретним виходом плати Arduino.
  6. Увімкніть захисний діод паралельно до двигуна. Мінус діода повинний бути підключений до плюса живлення 5В.

Схема

Це одна з можливих реалізацій з підключенням до дев'ятого цифрового виходу. Arduino може бути підживлений від зовнішнього джерела живлення. А якщо ні, то ми можемо підключити двигун окремо до зовнішнього живлення 5В, а Ардуіно до свого живлення. Але нуль живлення в них повинний бути з'єднаний.

А ось один зі способів підключення елементів схеми на макетній платі:


Код програми

Цей скетч нічим не відрізняється від попереднього. Програма також запускає двигун на секунду, потім зупиняє його на секунду і так далі:

// Декларуємо номер дискретного керуючого виходу
int motorPin = 2;
void setup() {
// Призначаємо другий дискретний канал як вихід
pinMode(motorPin, OUTPUT);
}
void loop(){
// Вмикаємо мотор
digitalWrite(motorPin, HIGH);
// Чекаємо 1000 мс
delay(1000);
// Вимикаємо мотор
digitalWrite(motorPin, LOW);
// Чекаємо 1000 мс
delay(1000);
}

Як це працює

Транзистори це дуже корисні компоненти, котрі, на жаль, важко повністю зрозуміти. Ми можемо уявити транзистор як електричний клапан: чим більший струм підвести на клапан, тим більше води через нього потече. Те ж саме відбувається з транзистором, тільки замість води тече струм. Якщо ми подамо струм на базу транзистора, пропорційний струм потече від колектора до емітера, у випадку транзистора типу npn. Чим більший струм подати на базу, тим більша сила струму буде через два інших виводи.


Коли ми подаємо логічну одиницю на вихід Arduino, струм проходить від вивода через базу транзистора NPN, що змушує струм проходити і через інші дві ноги транзистора. Коли ми виставляємо нуль на виході, струм не іде через базу та не буде проходити через інші дві ноги.
Транзистори цікаві тим, що з дуже малим струмом бази, ми можемо контролювати дуже великий струм через колектор до емітера. Звичайний коефіцієнт підсилення позначається hб і для транзистора складає наприклад 200. Це значить, що для струму бази 1 мА, транзистор через колектор до емітера пропустить 200 мА. Важливим компонентом проекту є діод, про котрий не варто забувати. Як вже було сказано, двигун має індуктивну складову, яка може генерувати великі сплески напруги, небезпечні для транзистора. Діод гарантує, що всі паразитні збурення від двигуна згаснуть на ньому, а не на транзисторі.

3. Використання підтягуючого резистора

База транзистора дуже чутлива. Навіть торкання її пальцем може провернути двигун. Для уникнення небажаних шумів та непередбачуваних запусків двигуна, використовують підтягуючий резистор на базі, як показано на малюнку. Значення його опору біля 10K. Він буде захищати транзистор від випадкового запуску.

4. Застосування pnp-транзистора

pnp транзистор зрозуміти ще важче. Він використовує той же принцип, але в протилежному напрямку. Струм тече від бази до цифрового виводу Arduino; якщо допустити, що протікання струму бази змушує струм проходити від емітера до колектора (протилежно напрямку струму в транзисторі npn). Інша важлива відмінність в тому, що pnp-транзистор встановлено між плюсом джерела живлення та підконтрольним нам навантаженням. Навантаження, в цьому випадку - це двигун, буде підключено між колектором pnp-транзистора та землею.

Ключовий момент на замітку розробникам ще і в тому, що при використанні транзисторів pnp з Arduino максимальна напруга на емітері 5 В, та при цьому ми на двигун не зможемо подати більше, ніж 5 В. Якщо використовувати зовнішнє джерело живлення для живлення двигуна з більшою напругою ніж 5В, на базі з'явиться потенціал вище п'яти вольт та Arduino підгорить. Одне з можливих вирішень, яке ускладнить схему на 3 елементи, показано на наступній схемі.


5. Застосування силового транзистора MOSFET

Давайте подивимось правді у вічі: застосування звичайних біполярних транзисторів для управління моторчиками вже давно не в моді. Існують більш прості та зручні у використанні речі в наші дні, котрі можуть забезпечити набагато більшу потужність керування. Їх називають MOSFET транзистори. Люди просто називають їх мосфетами. База, колектор та емітер у MOSFETа називаються наступним чином: затвор, стік та витік. Функціонально їх використовують точно так, як і звичайні транзистори. Після подачі напруги на затвор, струм буде проходити з витока на стік у випадку N-канального МОП-транзистора. P-канал є еквівалентом транзистора pnp. 
Тим не менш, існують деякі важливі відмінності в роботі MOSFET в порівнянні зі звичайним транзистором. Не всі MOSFET-транзистори можуть належним чином працювати з Arduino. Зазвичай дискретні транзистори працюють нормально. Деякі з відомих N-канальних MOSFET мають маркування: FQP30N06, IRF510 та IRF520. Перший може витримувати до 30 А та 60 В. В той час як наступні два можуть віддавати 5,6 А та 10 А, відповідно, при 100 В.
Ось приклад схеми управління мотором за допомогою N-канального MOSFET:

Ми також можемо використати наступний варіант монтажу проекта на макетній платі:

Двигун - це ще не все, чим ми можемо керувати через транзистор. Любий вид навантаження постійного струму може управлятись таким чином. Світлодіоди, лампочки або інші споживачі, навіть інший Arduino може бути підживлений подібним чином.

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

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Стабілізатор напруги 5В 2А мікросхема L78S05CV

Стабілізатор напруги 5В 2А мікросхема L78S05CV

Мікросхема стабілізатор напруги L78S05CVЗастосовується для стабілізації пульсуючої напруги в блоках ..

18.81грн.

Корпус під міні-комп'ютер Orange PI PC

Корпус під міні-комп'ютер Orange PI PC

Корпус прозорийМатеріал - акрил..

143.02грн.

Спортивне табло таймер своїми руками

Спортивне табло таймер своїми руками

Постановка задачі Задачею проекту є виготовлення спортивного таймеру для міні-футбольного турні..

Регулятор обертів двигуна 20А 10-60В

Регулятор обертів двигуна 20А 10-60В

Регулятор швидкості обертання двигуна постійного струму. Швидкість задається змінним резистором.Прин..

168.71грн.

Трансформатор струму 0-100А

Трансформатор струму 0-100А

Аналоговий датчик змінного струму силою до 100А. Це роз'ємний трансформатор струму з діаметром отвор..

178.64грн.