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