- Що таке двигун постійного струму?
- Потрібні компоненти
- Кругова діаграма
- Програмування Atmega16 для управління двигуном постійного струму
Двигуни постійного струму є найбільш широко використовуваними двигунами. Ці двигуни можна знайти майже скрізь, від невеликих проектів до вдосконаленої робототехніки. Раніше ми взаємодіяли двигун постійного струму з багатьма іншими мікроконтролерами, такими як Arduino, Raspberry pi, і використовували його у багатьох робототехнічних проектах. Сьогодні ми вчимося керувати двигуном постійного струму за допомогою мікроконтролера AVR Atmega16. Але перед тим, як продовжити, давайте дізнаємось більше про двигун постійного струму.
Що таке двигун постійного струму?
Двигун постійного струму - це пристрій, який перетворює електричну енергію в механічну. Зокрема, двигун постійного струму використовує струм постійного струму для перетворення електричної енергії в механічну. Основним принципом роботи двигуна є взаємодія між магнітним полем і струмом, що створює силу всередині двигуна, яка допомагає двигуну обертатися. Отже, коли електричний струм проходить через котушку в магнітному полі, створюється магнітна сила, яка створює крутний момент, що призводить до руху двигуна. Напрямок двигуна регулюється шляхом зміни струму назад. Крім того, його швидкість можна змінювати, змінюючи напругу, що подається. Оскільки мікроконтролери мають ШІМ-висновки, його можна використовувати для управління швидкістю двигуна.
У цьому посібнику робота двигуна постійного струму буде продемонстрована за допомогою Atmega16. Двигун двигуна L293D буде використовуватися для зворотного напрямку струму, таким чином, напрямку руху. Драйвер двигуна L293D використовує конфігурацію схеми H-Bridge, яка подає необхідний струм на двигун. Дві кнопки використовуються для вибору напрямку руху двигуна. Одна кнопка використовується для вибору повороту за годинниковою стрілкою, а інша - для вибору режиму роботи годинника постійного струму.
Потрібні компоненти
- Двигун постійного струму (5 В)
- L293D Драйвер двигуна
- Мікроконтролер мікросхеми Atmega16
- Кристалічний генератор 16 МГц
- Два конденсатори 100 нФ
- Два конденсатори 22pF
- Нажимна Кнопка
- Провід перемички
- Макет
- USBASP v2.0
- Led (будь-який колір)
Кругова діаграма
Програмування Atmega16 для управління двигуном постійного струму
Тут Atmega16 програмується за допомогою USBASP та Atmel Studio7.0. Якщо ви не знаєте, як програмувати Atmega16 за допомогою USBASP, перейдіть за посиланням. Повна програма подана в кінці проекту, просто завантажте програму в Atmega16 і використовуйте дві кнопки для обертання двигуна постійного струму за годинниковою стрілкою та проти годинникової стрілки.Двигун постійного струму взаємодіє за допомогою драйвера двигуна L293D. Двигун постійного струму буде обертатися у двох напрямках при натисканні відповідної кнопки. Одна кнопка буде використовуватися для обертання двигуна постійного струму в напрямку Мудрого годинника, а інша кнопка буде використовуватися для обертання двигуна постійного струму в напрямку зустрічного годинника. Спочатку визначте частоту процесора мікроконтролера та включіть усі необхідні бібліотеки.
#define F_CPU 16000000UL #include #include
Потім використовуйте одну змінну, щоб відстежувати стан натискання кнопки. Ця змінна буде використана для визначення напрямку двигуна.
int i;
Виберіть режим введення / виводу GPIO за допомогою реєстру напрямків даних. Спочатку зробіть висновок штифта двигуна настільки низьким, щоб уникнути пуску двигуна без натискання кнопки.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Перевірте, якщо 1 - й кнопка натиснута підключений до PORTA4 з Atmega16 і зберегти статус кнопки в змінної.
if (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
Точно так же перевірити, якщо 2 - й кнопка натиснута підключений до PORTA5 з Atmega16 і зберегти статус кнопки в змінної.
в іншому випадку if (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Якщо статус 1- ї кнопки відповідає дійсності, обертайте двигун постійного струму в годинниковому напрямку, а якщо статус другої кнопки відповідає дійсності, обертайте двигун постійного струму проти годинникового режиму.
якщо (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } інакше якщо (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Ви можете підключити шпильки двигуна до будь-якого штифта GPIO залежно від використовуваного GPIO. Також важливо використовувати IC Driver Driver для зменшення навантаження на мікроконтролер, оскільки мікроконтролери не здатні подавати необхідний струм для роботи двигунів постійного струму. Для отримання більш детальної інформації та інших проектів, заснованих на двигунах постійного струму, відвідайте вказане посилання
Повний код та демонстраційне відео наведено нижче.