W tym samouczku nauczymy się, jak sterować pompką wodną 5V za pomocą mikrokontrolera ESP32 oraz sterownika silników L293D. Ten projekt to świetne wprowadzenie do korzystania ze sterowników silników z mikrokontrolerami, umożliwiające sterowanie urządzeniami, które wymagają większego prądu, niż mikrokontroler może dostarczyć bezpośrednio. Po ukończeniu tego samouczka będziesz mieć działającą pompkę wodną, którą można włączać i wyłączać programowo.
ESP32 to wydajny mikrokontroler z wbudowaną obsługą Wi-Fi i Bluetooth, co czyni go odpowiednim do zastosowań IoT. Sterownik silników L293D służy do sterowania pompką wodną poprzez zarządzanie wyższym prądem wymaganym do pracy silnika. Taka konfiguracja pozwala nam uruchamiać i zatrzymywać pompkę, zapewniając jednocześnie bezpieczeństwo ESP32 przed nadmiernym poborem prądu.
Omówienie sprzętu
W tym projekcie wykorzystujemy mikrokontroler ESP32, znany ze swojej wszechstronności i opcji łączności. Może działać jak Arduino, oferując dodatkowe funkcje, takie jak Wi-Fi i Bluetooth. Sterownik silników L293D działa jako interfejs między ESP32 a pompką wodną, umożliwiając kontrolę pracy pompki bez przeciążania mikrokontrolera.
L293D posiada dwa mostki H, co umożliwia sterowanie kierunkiem i prędkością silnika. Każdy mostek H może napędzać silnik w dowolnym kierunku, co czyni go odpowiednim do zastosowań wymagających sterowania silnikiem. W tym przypadku będziemy potrzebować jedynie uruchamiania pompki w jednym kierunku.
Szczegóły z karty katalogowej
Producent
Texas Instruments
Numer części
L293D
Napięcie logiczne/IO
4,5 - 36 V
Napięcie zasilania
4,5 - 36 V
Prąd wyjściowy (na kanał)
600 mA
Prąd szczytowy (na kanał)
1,2 A
Zalecana częstotliwość PWM
1 kHz - 10 kHz
Progi logiczne wejściowe
2 V (stan wysoki), 0,8 V (stan niski)
Spadek napięcia / RDS(on) / nasycenie
1,5 V (maks.)
Limity termiczne
+150 °C (maks.)
Obudowa
DIP-16
Uwagi / warianty
Zawiera wbudowane diody chroniące przed obciążeniem indukcyjnym
Zapewnij odpowiednie odprowadzanie ciepła podczas ciągłej pracy.
Użyj kondensatorów odsprzęgających dla stabilnego zasilania.
Uważaj na napięcie wejściowe, aby uniknąć uszkodzeń.
W razie potrzeby zastosuj PWM do kontroli prędkości.
Sprawdź okablowanie, aby uniknąć zwarć, zwłaszcza przy obciążeniach indukcyjnych.
Instrukcje okablowania
ESP32-16-motor-pump_wiring
Aby podłączyć ESP32 i sterownik silników L293D do pompki wodnej, wykonaj dokładnie poniższe kroki. Najpierw podłącz zasilanie do L293D. Podłącz pin 1 (pin włączający dla silnika A) oraz pin 8 (Vcc2) do dodatniego źródła napięcia (5V). Podłącz pin 4 (masa) do masy układu.
Następnie podłącz ESP32 do L293D. Podłącz pin GPIO 13 z ESP32 do pinu 2 (wejście 1) na L293D oraz pin GPIO 14 do pinu 7 (wejście 2). Na koniec podłącz pompkę wodną do pinu 3 (wyjście 1) i pinu 6 (wyjście 2) układu L293D. Upewnij się, że wszystkie połączenia masy są ze sobą połączone dla prawidłowego działania. Jeśli postępujesz zgodnie z tymi instrukcjami, okablowanie powinno być proste i funkcjonalne.
Przykłady kodu i omówienie
W kodzie definiujemy połączenia pinów do sterowania silnikiem. Identyfikatory motor1A i motor2A odpowiadają odpowiednio pinom GPIO 13 i 14 na ESP32. Te piny będą sterować pompką wodną przez sterownik L293D.
W funkcji setup() inicjalizujemy piny sterowania silnikiem jako wyjścia. Zapewnia to możliwość wysyłania sygnałów do sterownika L293D w celu kontroli pompki. Funkcja loop() następnie steruje pracą pompki.
W funkcji loop() ustawiamy motor1A na HIGH i motor2A na LOW, aby uruchomić pompkę. Po krótkim opóźnieniu zatrzymujemy pompkę, ustawiając oba piny na LOW. Ten cykl powtarza się w nieskończoność, umożliwiając pompce pracę przez krótki okres, a następnie zatrzymanie.
Demonstracja / Czego się spodziewać
Po zakończeniu okablowania i wgraniu kodu powinieneś zobaczyć, jak pompka wodna włącza się i wyłącza w cyklu. Pompka będzie działać przez krótki czas, a następnie się zatrzyma, tworząc wzór włączania i wyłączania. Upewnij się, że zasilanie jest wystarczające dla wymagań pompki, aby uniknąć problemów (na wideo w 09:30).
815-ESP32 Tutorial 16/55 - Arduino code to control DC water pump
Język: 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
}