Search Code

ESP32 Упатство 15/55 - Контрола на брзина на DC мотор со ESP32 L293D | SunFounder's ESP32 IoT Learning комплет

ESP32 Упатство 15/55 - Контрола на брзина на DC мотор со ESP32 L293D | SunFounder's ESP32 IoT Learning комплет

ESP32 Упатство 15/55 - Контрола на брзината на DC мотор со ESP32 L293D | SunFounder's ESP32 IoT Learning kit

Контролирањето на DC мотор со ESP32 може да изгледа застрашувачки, но е сосема изводливо со вистинските компоненти и разбирање. Во ова упатство, ќе изградиме проект кој ни овозможува да ја контролираме брзината и насоката на DC мотор користејќи го L293D мотор драјверот. До крајот, ќе имате функционална поставка која може да го ротира моторот напред и назад додека ја прилагодува неговата брзина. За визуелна референца, проверете го видеото (во видеото на 00:00).

ESP32-15_L293D_motor_schematic

Објаснување на хардверот

Главните компоненти на овој проект вклучуваат ESP32 микроконтролер и L293D мотор драјвер. ESP32 е моќен микроконтролер со вградени Wi-Fi и Bluetooth можности, што го прави погоден за IoT апликации. Тој може да контролира различни хардверски компоненти, вклучувајќи мотори, преку своите GPIO пинови. L293D е двоен H-мост мотор драјвер кој ви овозможува да ја контролирате насоката и брзината на два DC мотори. Секој H-мост може да управува мотор во било која насока со менување на поларитетот на напонот применет на терминалите на моторот. Дополнително, L293D може да издржи струја до 600 mA по канал, што го прави погоден за мали до средни мотори.

L293D-Motor-Driver-IC

Детали од техничката документација

Производител Texas Instruments
Број на дел L293D
Логички/IO напон 2.5 – 7 V
Напон на напојување 4.5 – 36 V
Излезна струја (по канал) 600 mA (тип.)
Врвна струја (по канал) 1.2 A (макс.)
Насоки за PWM фреквенција 20 kHz (тип.)
Влезни логички прагови 0.8 V (висок), 2.0 V (низок)
Пад на напон / RDS(on) / заситување 1.5 V (макс.)
Термички граници 150 °C (макс.)
Пакет 16-DIP
Белешки / варијанти Четворен полу-H драјвер

 

  • Обезбедете соодветно ладење за апликации со висока струја.
  • Раздвојте го напојувањето со кондензатори за да спречите напонски шила.
  • Бидете внимателни со жиците за да спречите обратен поларитет.
  • Користете PWM за контрола на брзината за да избегнете прегревање.
  • Проверете го номиналниот напон на моторот за да спречите оштетување.

Инструкции за поврзување

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), следете ги специфичните промени прикажани.

Примери на код и објаснување

Кодот за контролирање на моторот се состои од дефинирање на пиновите за моторот и поставување на нивните режими. Еве извадок од функцијата за поставување:

#define motor1A 13
#define motor2A 14

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

Во овој фрагмент, ги дефинираме контролните пинови на моторот како константи и ги поставуваме како излези во функцијата за поставување. Ова е клучно бидејќи ги подготвува пиновите за контролирање на моторот. Функцијата loop е местото каде што се контролира однесувањето на моторот. Еве клучен дел од 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). Оваа поставка обезбедува едноставен начин за контрола на брзината и насоката на DC мотор користејќи ESP32 и L293D.

Временски ознаки на видеото

  • 00:00 Почеток
  • 2:01 Вовед во DC мотор
  • 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 Демонстрација на брзина и насока

Images

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
Language: 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);
}

Things you might need

Resources & references

Files📁

Datasheet (pdf)