Search Code

ESP32 Tutorial 16/55 - Mini-waterpomp met ESP32 en L293D | SunFounder's ESP32 IoT-leerkit

ESP32 Tutorial 16/55 - Mini-waterpomp met ESP32 en L293D | SunFounder's ESP32 IoT-leerkit

In deze tutorial leren we hoe we een 5V waterpomp kunnen aansturen met behulp van de ESP32-microcontroller en de L293D-motorstuurmodule. Dit project is een uitstekende kennismaking met het gebruik van motorstuurmodules met microcontrollers, waardoor je apparaten kunt aansturen die meer stroom nodig hebben dan een microcontroller direct kan leveren. Aan het einde van deze tutorial heb je een werkende waterpomp die programmatisch kan worden in- en uitgeschakeld.

De ESP32 is een krachtige microcontroller met ingebouwde Wi-Fi- en Bluetooth-mogelijkheden, waardoor deze geschikt is voor IoT-toepassingen. De L293D-motorstuurmodule wordt gebruikt om de waterpomp aan te sturen door de hogere stroom te beheren die nodig is om de motor te laten werken. Deze opstelling stelt ons in staat om de pomp te starten en te stoppen, terwijl de ESP32 beschermd blijft tegen overmatige stroomafname.

Hardware uitgelegd

In dit project gebruiken we de ESP32-microcontroller, die bekend staat om zijn veelzijdigheid en connectiviteitsopties. Hij kan functioneren als een Arduino, maar biedt extra functies zoals Wi-Fi en Bluetooth. De L293D-motorstuurmodule fungeert als interface tussen de ESP32 en de waterpomp, waardoor de werking van de pomp kan worden aangestuurd zonder de microcontroller te overbelasten.

De L293D beschikt over twee H-bruggen, waarmee de richting en snelheid van de motor kunnen worden aangestuurd. Elke H-brug kan een motor in beide richtingen aandrijven, waardoor deze geschikt is voor toepassingen waar motorsturing nodig is. In dit geval hoeven we de pomp slechts in één richting te laten draaien.

Datasheet-details

FabrikantTexas Instruments
OnderdeelnummerL293D
Logica/IO-spanning4,5 - 36 V
Voedingsspanning4,5 - 36 V
Uitgangsstroom (per kanaal)600 mA
Piekstroom (per kanaal)1,2 A
PWM-frequentierichtlijn1 kHz - 10 kHz
Ingangslogische drempels2 V (hoog), 0,8 V (laag)
Spanningsval / RDS(on) / verzadiging1,5 V (max)
Thermische limieten+150 °C (max)
BehuizingDIP-16
Opmerkingen / variantenBevat ingebouwde diodes voor bescherming tegen inductieve belasting

  • Zorg voor voldoende warmteafvoer bij continu gebruik.
  • Gebruik ontkoppelcondensatoren voor een stabiele voedingsspanning.
  • Wees voorzichtig met de ingangsspanning om schade te voorkomen.
  • Implementeer PWM voor snelheidsregeling indien nodig.
  • Controleer de bedrading om kortsluiting te voorkomen, vooral bij inductieve belastingen.

Bedradingsinstructies

ESP32-16-motor-pump_wiring

Om de ESP32 en L293D-motorstuurmodule met de waterpomp te bedraden, volg je deze stappen zorgvuldig. Verbind eerst de voeding met de L293D. Verbind pin 1 (enable-pin voor motor A) en pin 8 (Vcc2) met de positieve spanningsbron (5V). Verbind pin 4 (aarde) met de aarde van je circuit.

Verbind vervolgens de ESP32 met de L293D. Verbind GPIO-pin 13 van de ESP32 met pin 2 (ingang 1) op de L293D, en GPIO-pin 14 met pin 7 (ingang 2). Verbind ten slotte de waterpomp met pin 3 (uitgang 1) en pin 6 (uitgang 2) van de L293D. Zorg ervoor dat alle aardverbindingen met elkaar zijn verbonden voor een correcte werking. Als je deze instructies volgt, zou je bedrading eenvoudig en functioneel moeten zijn.

Codevoorbeelden en uitleg

In de code definiëren we de pinverbindingen voor de motorsturing. De identifiers motor1A en motor2A komen overeen met respectievelijk GPIO-pinnen 13 en 14 op de ESP32. Deze pinnen sturen de waterpomp aan via de L293D-stuurmodule.

#define motor1A 13
#define motor2A 14

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

In de setup()-functie initialiseren we de motorstuurpinnen als uitgangen. Dit zorgt ervoor dat we signalen naar de L293D-stuurmodule kunnen sturen om de pomp te bedienen. De loop()-functie regelt vervolgens de werking van de pomp.

void loop() {
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(5);
  
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(2000); // wacht een seconde
}

In de loop()-functie zetten we motor1A op HIGH en motor2A op LOW om de pomp te starten. Na een korte vertraging stoppen we de pomp door beide pinnen op LOW te zetten. Deze cyclus herhaalt zich oneindig, waardoor de pomp kort draait en vervolgens stopt.

Demonstratie / Wat te verwachten

Zodra je de bedrading hebt voltooid en de code hebt geüpload, zou je de waterpomp in een cyclus moeten zien aan- en uitschakelen. De pomp zal kort draaien en dan stoppen, waardoor een aan-uitpatroon ontstaat. Zorg ervoor dat je voeding voldoende is voor de vereisten van de pomp om problemen te voorkomen (in video op 09:30).

Videotijdstempels

  • 00:00 Start
  • 1:50 Projectintroductie
  • 3:17 Waarom hebben we L293D met Arduino nodig?
  • 5:47 Bedrading voor waterpomp uitgelegd
  • 10:01 Arduino-code uitgelegd
  • 12:21 COM-poort selecteren voor ESP32 in Arduino IDE
  • 14:03 Demonstratie van het draaien van de pomp
  • 15:25 Demonstratie met water

Afbeeldingen

ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_schematic
ESP32-16-motor-pump_wiring
ESP32-16-motor-pump_wiring
5V DC water pump
5V DC water pump
815-ESP32 Tutorial 16/55 - Arduino code to control DC water pump
Taal: 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
}

Hulpmiddelen en referenties

Bestanden📁

Datasheet (pdf)