Search Code

Tutorial ESP32 15/55 - Controlul vitezei motorului DC cu ESP32 L293D | Kitul de învățare IoT ESP32 de la SunFounder

Tutorial ESP32 15/55 - Controlul vitezei motorului DC cu ESP32 L293D | Kitul de învățare IoT ESP32 de la SunFounder

ESP32 Tutorial 15/55 - Controlul Vitezei Motorului DC cu ESP32 L293D | Kitul de Învățare IoT ESP32 de la SunFounder

Controlul unui motor DC cu un ESP32 poate părea descurajant, dar este destul de gestionabil cu componentele și înțelegerea potrivite. În acest tutorial, vom construi un proiect care ne permite să controlăm viteza și direcția unui motor DC folosind driverul de motor L293D. Până la final, vei avea o configurație funcțională care poate roti motorul înainte și înapoi, ajustându-i viteza. Pentru o referință vizuală, asigură-te că verifici videoclipul (în videoclip la 00:00).

ESP32-15_L293D_motor_schematic

Hardware Explicat

Componentele principale ale acestui proiect includ microcontrolerul ESP32 și driverul de motor L293D. ESP32 este un microcontroler puternic, cu capacități integrate Wi-Fi și Bluetooth, făcându-l potrivit pentru aplicații IoT. Poate controla diverse componente hardware, inclusiv motoare, prin pinii săi GPIO. L293D este un driver de motor dual H-bridge care îți permite să controlezi direcția și viteza a două motoare DC. Fiecare H-bridge poate acționa un motor în orice direcție prin inversarea polarității tensiunii aplicate la bornele motorului. În plus, L293D poate gestiona un curent de până la 600 mA pe canal, făcându-l potrivit pentru motoare mici și medii.

L293D-Motor-Driver-IC

Detalii din Fișa Tehnică

Producător Texas Instruments
Număr de piesă L293D
Tensiune Logică/IO 2,5 – 7 V
Tensiune de alimentare 4,5 – 36 V
Curent de ieșire (pe canal) 600 mA (tip.)
Curent de vârf (pe canal) 1,2 A (max)
Ghid de frecvență PWM 20 kHz (tip.)
Praguri logice de intrare 0,8 V (ridicat), 2,0 V (scăzut)
Cădere de tensiune / RDS(on) / saturație 1,5 V (max)
Limite termice 150 °C (max)
Pachet 16-DIP
Note / variante Driver cvadruplu jumătate-H

 

  • Asigură o disipare termică adecvată pentru aplicații cu curent ridicat.
  • Decuplează sursa de alimentare cu condensatoare pentru a preveni vârfurile de tensiune.
  • Fii atent la cablare pentru a preveni polaritatea inversată.
  • Folosește PWM pentru controlul vitezei pentru a evita supraîncălzirea.
  • Verifică tensiunea nominală a motorului pentru a preveni deteriorarea.

Instrucțiuni de Cablare

ESP32-15_L293D_motor_wiring

Pentru a cabla ESP32 și driverul de motor L293D, începe prin conectarea alimentării. Conectează pinul 16 al L293D la borna pozitivă a sursei tale de alimentare și pinul 4 la masă. Apoi, conectează motorul: o bornă la pinul 3 și cealaltă la pinul 6 pe L293D. Pentru semnalele de control, conectează pinul GPIO 13 al ESP32 la pinul 2 pe L293D și GPIO 14 la pinul 7. În final, asigură-te că conectezi masa ESP32 la masa L293D pentru a asigura o referință comună. Dacă videoclipul menționează o cablare alternativă (în videoclip la 05:00), asigură-te că urmezi modificările specifice arătate.

Exemple de Cod & Explicații

Codul pentru controlul motorului constă în definirea pinilor pentru motor și setarea modurilor lor. Iată un extras din funcția de configurare:

#define motor1A 13
#define motor2A 14

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

În acest fragment, definim pinii de control ai motorului ca constante și îi setăm ca ieșiri în funcția de configurare. Acest lucru este crucial, deoarece pregătește pinii pentru controlul motorului. Funcția loop este locul unde comportamentul motorului este controlat. Iată o parte cheie a buclei:

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

Acest cod rotește motorul într-o direcție timp de 2 secunde, apoi inversează direcția pentru alte 2 secunde și, în final, oprește motorul timp de 3 secunde. Această buclă se va repeta la nesfârșit, permițând control continuu. Pentru informații mai detaliate și codul complet, consultă programul complet care se încarcă mai jos în articol.

Demonstrație / Ce să Te Aștepți

După cablarea și încărcarea cu succes a codului, ar trebui să vezi motorul rotindu-se într-o direcție timp de 2 secunde, schimbând direcția pentru alte 2 secunde și apoi oprindu-se timp de 3 secunde. Dacă motorul nu răspunde cum era de așteptat, verifică capcanele comune, cum ar fi polaritatea inversată sau conexiunile incorecte ale pinilor (în videoclip la 08:00). Această configurare oferă o modalitate simplă de a controla viteza și direcția unui motor DC folosind ESP32 și L293D.

Marcaje Temporale din Videoclip

  • 00:00 Start
  • 2:01 Introducere în motorul DC
  • 6:14 Driver de motor L293D
  • 9:17 Documentația proiectului
  • 11:04 Explicarea cablajului
  • 14:41 Controlul motorului Arduino cu ESP32
  • 17:10 Selectarea porturilor Arduino pentru placa ESP32
  • 18:52 Demonstrația proiectului
  • 22:08 Controlul vitezei motorului folosind ESP32
  • 26:22 Demo de control al vitezei
  • 28:01 Cod Arduino pentru controlul vitezei și direcției
  • 29:05 Demonstrația vitezei și direcției

Imagini

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

Lucruri de care ai putea avea nevoie

Resurse și referințe

Fișiere📁

Fișă tehnică (pdf)