- Модуляція ширини імпульсу:
- Необхідний матеріал
- Кругова діаграма
- Код та пояснення
- Регулювання швидкості двигуна постійного струму за допомогою Arduino
Двигун постійного струму є найбільш часто використовуваним двигуном у проектах робототехніки та електроніки. Для регулювання швидкості двигуна постійного струму ми маємо різні методи, наприклад, швидкість може автоматично регулюватися залежно від температури, але в цьому проекті буде використаний метод ШІМ для управління швидкістю двигуна постійного струму. У цьому проекті управління швидкістю обертання двигуна Arduino швидкістю можна керувати, обертаючи ручку потенціометра.
Модуляція ширини імпульсу:
Що таке ШІМ? ШІМ - це техніка, за допомогою якої ми можемо контролювати напругу або потужність. Щоб зрозуміти це простіше, якщо ви застосовуєте 5 вольт для керування двигуном, тоді двигун буде рухатися з деякою швидкістю, тепер, якщо ми зменшимо прикладену напругу на 2 засоби, ми прикладемо до вольта 3 вольта, тоді швидкість двигуна також зменшується. Ця концепція використовується в проекті для управління напругою за допомогою ШІМ. У цій статті ми детально пояснили ШІМ. Також перевірте цю схему, де ШІМ використовується для управління яскравістю світлодіода: 1 Вт світлодіодний диммер.
% Оборотний цикл = (TON / (TON + TOFF)) * 100 Де, T ON = ВИСОКИЙ час квадратної хвилі T OFF = НИЗКИЙ час квадратної хвилі
Тепер, якщо перемикач на малюнку протягом певного періоду постійно закривається, двигун протягом цього часу буде постійно увімкнено. Якщо перемикач закритий на 8 мс і відкритий на 2 мс протягом циклу 10 мс, тоді двигун буде ввімкнено лише через 8 мс. Тепер середній термінал протягом 10 мс = час увімкнення / (час увімкнення + час вимкнення), це називається робочим циклом і становить 80% (8 / (8 + 2)), тому середнє значення вихідна напруга складе 80% від напруги акумулятора. Тепер людське око не бачить, що двигун увімкнено на 8 мс, а вимкнено на 2 мс, тому буде виглядати, як двигун постійного струму обертається зі швидкістю 80%.
У другому випадку перемикач зачиняється на 5 мс і розмикається на 5 мс протягом 10 мс, тому середня напруга на клеммі на виході складе 50% від напруги акумулятора. Скажімо, якщо напруга акумулятора дорівнює 5 В, а робочий цикл - 50%, тож середня напруга на висновку буде 2,5 В.
У третьому випадку робочий цикл становить 20%, а середня напруга на клем - 20% напруги акумулятора.
Ми використовували ШІМ з Arduino у багатьох наших проектах:
- Світлодіодний диммер на основі Arduino з використанням ШІМ
- Вентилятор з контролем температури за допомогою Arduino
- Керування двигуном постійного струму за допомогою Arduino
- Контроль швидкості вентилятора змінного струму за допомогою Arduino та TRIAC
Ви можете дізнатись більше про ШІМ, переглядаючи різні проекти на основі ШІМ.
Необхідний матеріал
- Arduino UNO
- Двигун постійного струму
- Транзистор 2N2222
- Потенціометр 100 кОм
- Конденсатор 0,1 мкФ
- Макет
- Стрибаючі дроти
Кругова діаграма
Схема електричного керування частотою обертання двигуна постійного струму Arduino за допомогою ШІМ наведена нижче:
Код та пояснення
Повний код управління двигуном постійного струму Arduino за допомогою потенціометра наведено в кінці.
У наведеному нижче коді ми ініціалізували змінні c1 та c2 і призначили аналоговий контакт A0 для виходу потенціометра та 12- й контакт для "pwm".
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Тепер, у наведеному нижче коді, встановіть контакт A0 як вхідний сигнал і 12 (який є ШІМ-контактом) як вихідний.
void setup () { pinMode (pwmPin, OUTPUT); // оголошує pin 12 як вихідний pinMode (pot, INPUT); // оголошує штифт A0 як вхідний }
Тепер у циклі void () ми читаємо аналогове значення (з A0) за допомогою analogRead (pot) і зберігаємо його у змінній c2. Потім відніміть значення c2 з 1024 і збережіть результат у c1. Потім зробіть ШІМ-штифт 12- го Arduino ВИСОКИМ, а потім після затримки значення c1 зробіть цей штифт НИЗКИМ. Знову ж таки, після затримки значення c2 цикл продовжується.
Причиною віднімання аналогового значення з 1024 є те, що АЦП Arduino Uno має 10-бітну роздільну здатність (тому цілі значення від 0 - 2 ^ 10 = 1024 значення). Це означає, що він відобразить вхідні напруги від 0 до 5 вольт у цілі значення від 0 до 1024. Отже, якщо помножити вхідне значення anlogValue на (5/1024), то ми отримаємо цифрове значення вхідної напруги. Дізнайтеся тут, як використовувати вхід АЦП в Arduino.
void loop () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // встановлює штифт 12 HIGH delayMicroseconds (c1); // чекає c1 us (high time) digitalWrite (pwmPin, LOW); // встановлює штифт 12 LOW delayMicroseconds (c2); // чекає c2 us (низький час) }
Регулювання швидкості двигуна постійного струму за допомогою Arduino
У цій схемі для контролю швидкості двигуна постійного струму ми використовуємо потенціометр 100 КОм для зміни робочого циклу сигналу ШІМ. Потенціометр 100 КОм підключений до аналогового вхідного виводу A0 Arduino UNO, а двигун постійного струму - до 12- го висновку Arduino (який є ШІМ-виводом). Робота програми Arduino дуже проста, оскільки вона зчитує напругу з аналогового виводу A0. Напруга на аналоговому виводі змінюється за допомогою потенціометра. Після деяких необхідних розрахунків робочий цикл регулюється відповідно до нього.
Наприклад, якщо ми подаємо 256 значень на аналоговий вхід, тоді ВИСОКИЙ час становитиме 768 мс (1024-256), а НИЗЬКИЙ - 256 мс. Отже, це просто означає, що робочий цикл становить 75%. Наші очі не можуть бачити таких високочастотних коливань, і здається, що двигун постійно увімкнений із 75% швидкості. Отже, ось як ми можемо виконувати регулювання швидкості двигуна за допомогою Arduino.