Код для поиска

ESP32 Урок 15/55 - Управление скоростью двигателя постоянного тока с помощью ESP32 L293D | Обучающий набор ESP32 IoT от SunFounder

ESP32 Урок 15/55 - Управление скоростью двигателя постоянного тока с помощью ESP32 L293D | Обучающий набор ESP32 IoT от SunFounder

Учебник по ESP32 15/55 — Управление скоростью двигателя постоянного тока с помощью ESP32 и L293D | Обучающий набор SunFounder ESP32 для Интернета вещей

Управление двигателем постоянного тока с помощью ESP32 может показаться сложным, но с правильными компонентами и пониманием это вполне выполнимо. В этом уроке мы создадим проект, который позволит нам управлять скоростью и направлением двигателя постоянного тока с помощью драйвера двигателя L293D. В итоге у вас будет рабочая схема, которая сможет вращать двигатель вперед и назад, регулируя его скорость. Для наглядности обязательно посмотрите видео (на видео в 00:00).

Схема ESP32-15_L293D_motor

Объяснение аппаратного обеспечения

Основными компонентами этого проекта являются микроконтроллер ESP32 и драйвер двигателя L293D. ESP32 — это мощный микроконтроллер со встроенными возможностями Wi-Fi и Bluetooth, что делает его подходящим для приложений Интернета вещей. Он может управлять различными аппаратными компонентами, включая двигатели, через свои контакты GPIO. L293D — это двойной H-мостовой драйвер двигателя, который позволяет управлять направлением и скоростью двух двигателей постоянного тока. Каждый H-мост может приводить двигатель в движение в любом направлении, изменяя полярность напряжения, подаваемого на выводы двигателя. Кроме того, L293D может выдерживать ток до 600 мА на канал, что делает его подходящим для двигателей малого и среднего размера.

Микросхема драйвера двигателя L293D

Данные из технического описания

Производитель Texas Instruments
Номер детали L293D
Напряжение логики/ввода-вывода 2,5–7 В
Напряжение питания 4,5–36 В
Выходной ток (на канал) 600 мА (ном.)
Пиковый ток (на канал) 1,2 А (макс.)
Рекомендации по частоте ШИМ 20 кГц (ном.)
Пороговые значения входной логики 0,8 В (высокий), 2,0 В (низкий)
Падение напряжения / RDS(on) / насыщение 1,5 В (макс.)
Тепловые пределы 150 °C (макс.)
Корпус 16-DIP
Примечания / варианты Счетверенный половинный H-драйвер

 

  • Обеспечьте надлежащий отвод тепла для приложений с высоким током.
  • Развяжите источник питания конденсаторами, чтобы предотвратить скачки напряжения.
  • Будьте осторожны с проводкой, чтобы предотвратить обратную полярность.
  • Используйте ШИМ для управления скоростью, чтобы избежать перегрева.
  • Проверьте номинальное напряжение двигателя, чтобы предотвратить повреждение.

Инструкции по подключению

ESP32-15_L293D_motor_wiring

Чтобы подключить ESP32 и драйвер двигателя L293D, начните с подключения питания. Подключите вывод 16 L293D к положительному выводу вашего источника питания, а вывод 4 — к земле. Затем подключите двигатель: один вывод к выводу 3, а другой к выводу 6 на L293D. Для управляющих сигналов подключите контакт GPIO 13 ESP32 к выводу 2 на L293D и контакт GPIO 14 к выводу 7. Наконец, убедитесь, что вы соединили землю ESP32 с землей L293D, чтобы обеспечить общую опорную точку. Если в видео упоминается альтернативное подключение (на видео в 05:00), обязательно следуйте конкретным показанным изменениям.

Примеры кода и пояснения

Код для управления двигателем состоит из определения выводов для двигателя и установки их режимов. Вот фрагмент из функции setup:

#define motor1A 13
#define motor2A 14

void setup() {
  pinMode(motor1A, OUTPUT);
  pinMode(motor2A, OUTPUT);  
}

В этом фрагменте мы определяем контакты управления двигателем как константы и устанавливаем их как выходы в функции setup. Это важно, так как подготавливает контакты для управления двигателем. Функция loop — это место, где управляется поведение двигателя. Вот ключевая часть цикла:

void loop() {
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(2000); 

  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, HIGH);    
  delay(2000); 

  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(3000);
}

Этот код вращает двигатель в одном направлении в течение 2 секунд, затем меняет направление на противоположное еще на 2 секунды и, наконец, останавливает двигатель на 3 секунды. Этот цикл будет повторяться бесконечно, обеспечивая непрерывное управление. Для более подробной информации и полного кода обратитесь к полной программе, которая загружается ниже статьи.

Демонстрация / Что ожидать

После успешного подключения и загрузки кода вы должны увидеть, как двигатель вращается в одном направлении в течение 2 секунд, меняет направление еще на 2 секунды, а затем останавливается на 3 секунды. Если двигатель не реагирует должным образом, проверьте распространенные ошибки, такие как обратная полярность или неправильные подключения контактов (на видео в 08:00). Эта схема обеспечивает простой способ управления скоростью и направлением двигателя постоянного тока с помощью ESP32 и L293D.

Временные метки видео

  • 00:00 Начало
  • 2:01 Введение в двигатель постоянного тока
  • 6:14 Драйвер двигателя L293D
  • 9:17 Документация проекта
  • 11:04 Объяснение подключения
  • 14:41 Управление двигателем Arduino с помощью ESP32
  • 17:10 Выбор портов Arduino для платы ESP32
  • 18:52 Демонстрация проекта
  • 22:08 Управление скоростью двигателя с помощью ESP32
  • 26:22 Демонстрация управления скоростью
  • 28:01 Код Arduino для управления скоростью и направлением
  • 29:05 Демонстрация скорости и направления

Изображения

L293D-Motor-Driver-IC
L293D-Motor-Driver-IC
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_wiring
ESP32-15_L293D_motor_wiring
814-ESP32 Tutorial 15/55- Arduino code for L293D motor control
Язык: C++
#define motor1A 13
#define motor2A 14

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin as an output.
  pinMode(motor1A, OUTPUT);
  pinMode(motor2A, OUTPUT);  
}

// the loop function runs over and over again forever
void loop() {
  
  // Rotate
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(2000); 

  // Rotate in the opposite direction
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, HIGH);    
  delay(2000); 

  // Stop
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(3000);
}

Вещи, которые могут вам понадобиться

Ресурсы и ссылки

Файлы📁

Технический паспорт (pdf)