U ovom tutorijalu naučit ćemo kako upravljati 5V vodenom pumpom koristeći ESP32 mikrokontroler i L293D motor drajver. Ovaj projekat je odličan uvod u korištenje motornih drajvera s mikrokontrolerima, omogućavajući vam da upravljate uređajima koji zahtijevaju više struje nego što mikrokontroler može direktno pružiti. Do kraja ovog tutorijala, imat ćete funkcionalnu vodenu pumpu koja se može programski uključivati i isključivati.
ESP32 je moćan mikrokontroler koji dolazi s ugrađenim Wi-Fi i Bluetooth mogućnostima, što ga čini pogodnim za IoT aplikacije. L293D motor drajver koristi se za upravljanje vodenom pumpom tako što upravlja većom strujom potrebnom za rad motora. Ova postavka nam omogućava da pokrećemo i zaustavljamo pumpu dok osiguravamo da ESP32 ostane siguran od prekomjernog povlačenja struje.
Objašnjenje hardvera
U ovom projektu koristimo ESP32 mikrokontroler, koji je poznat po svojoj svestranosti i opcijama povezivanja. Može funkcionirati poput Arduina dok nudi dodatne funkcije kao što su Wi-Fi i Bluetooth. L293D motor drajver djeluje kao sučelje između ESP32 i vodene pumpe, omogućavajući kontrolu rada pumpe bez preopterećenja mikrokontrolera.
L293D ima dva H-mosta, što mu omogućava kontrolu smjera i brzine motora. Svaki H-most može pokretati motor u oba smjera, što ga čini pogodnim za aplikacije gdje je potrebna kontrola motora. U ovom slučaju, trebat ćemo samo omogućiti pumpi da radi u jednom smjeru.
Detalji iz tehničke dokumentacije
Proizvođač
Texas Instruments
Broj dijela
L293D
Logički/IO napon
4.5 - 36 V
Napon napajanja
4.5 - 36 V
Izlazna struja (po kanalu)
600 mA
Vršna struja (po kanalu)
1.2 A
PWM frekvencijske smjernice
1 kHz - 10 kHz
Ulazni logički pragovi
2 V (visok), 0.8 V (nizak)
Pad napona / RDS(on) / zasićenje
1.5 V (maks.)
Toplinska ograničenja
+150 °C (maks.)
Paket
DIP-16
Napomene / varijante
Uključuje ugrađene diode za zaštitu od induktivnog opterećenja
Osigurajte pravilno odvođenje topline za kontinuirani rad.
Koristite decoupling kondenzatore za stabilno napajanje.
Budite oprezni s ulaznim naponom kako biste spriječili oštećenja.
Implementirajte PWM za kontrolu brzine ako je potrebno.
Provjerite ožičenje kako biste izbjegli kratke spojeve, posebno s induktivnim opterećenjima.
Upute za ožičenje
ESP32-16-motor-pump_wiring
Da biste povezali ESP32 i L293D motor drajver s vodenom pumpom, pažljivo slijedite ove korake. Prvo, spojite napajanje na L293D. Spojite pin 1 (enable pin za motor A) i pin 8 (Vcc2) na pozitivni izvor napona (5V). Spojite pin 4 (uzemljenje) na uzemljenje vašeg kruga.
Zatim, povežite ESP32 s L293D. Spojite GPIO pin 13 s ESP32 na pin 2 (ulaz 1) na L293D, i GPIO pin 14 na pin 7 (ulaz 2). Na kraju, spojite vodenu pumpu na pin 3 (izlaz 1) i pin 6 (izlaz 2) L293D. Osigurajte da su sve veze uzemljenja povezane zajedno za pravilan rad. Ako slijedite ove upute, vaše ožičenje bi trebalo biti jednostavno i funkcionalno.
Primjeri koda i objašnjenje
U kodu definiramo pin veze za kontrolu motora. Identifikatori motor1A i motor2A odgovaraju GPIO pinovima 13 i 14 na ESP32. Ovi pinovi će kontrolirati vodenu pumpu putem L293D drajvera.
U setup() funkciji, inicijaliziramo pinove za kontrolu motora kao izlaze. Ovo osigurava da možemo slati signale L293D drajveru za kontrolu pumpe. loop() funkcija zatim kontrolira rad pumpe.
U loop() funkciji, postavljamo motor1A na HIGH i motor2A na LOW da pokrenemo pumpu. Nakon kratkog kašnjenja, zaustavljamo pumpu postavljanjem oba pina na LOW. Ovaj ciklus se ponavlja beskonačno, omogućavajući pumpi da radi kratko vrijeme, a zatim se zaustavi.
Demonstracija / Šta očekivati
Nakon što završite ožičenje i prenesete kod, trebali biste vidjeti kako se vodena pumpa aktivira i deaktivira u ciklusu. Pumpa će raditi kratko vrijeme, zatim se zaustaviti, stvarajući uzorak uključivanja i isključivanja. Osigurajte da je vaše napajanje adekvatno za zahtjeve pumpe kako biste izbjegli probleme (u videu na 09:30).
815-ESP32 Tutorial 16/55 - Arduino code to control DC water pump
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(5);
// Stop
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, LOW);
delay(2000); // wait for a second
}