이 튜토리얼에서는 ESP32 마이크로컨트롤러와 L293D 모터 드라이버를 사용하여 5V 워터 펌프를 제어하는 방법을 배웁니다. 이 프로젝트는 마이크로컨트롤러와 모터 드라이버를 사용하는 방법에 대한 훌륭한 입문서로, 마이크로컨트롤러가 직접 제공할 수 있는 것보다 더 많은 전류가 필요한 장치를 제어할 수 있게 해줍니다. 이 튜토리얼이 끝나면 프로그래밍 방식으로 활성화 및 비활성화할 수 있는 작동하는 워터 펌프를 갖게 됩니다.
ESP32는 내장 Wi-Fi 및 Bluetooth 기능을 갖춘 강력한 마이크로컨트롤러로, IoT 애플리케이션에 적합합니다. L293D 모터 드라이버는 모터를 작동하는 데 필요한 더 높은 전류를 관리하여 워터 펌프를 제어하는 데 사용됩니다. 이 설정을 통해 ESP32가 과도한 전류 소모로부터 안전하게 보호되면서 펌프를 시작하고 정지할 수 있습니다.
하드웨어 설명
이 프로젝트에서는 다재다능함과 연결 옵션으로 잘 알려진 ESP32 마이크로컨트롤러를 활용합니다. Arduino처럼 작동하면서도 Wi-Fi 및 Bluetooth와 같은 추가 기능을 제공합니다. L293D 모터 드라이버는 ESP32와 워터 펌프 사이의 인터페이스 역할을 하여 마이크로컨트롤러에 과부하를 주지 않고 펌프 작동을 제어할 수 있게 합니다.
L293D는 두 개의 H-브리지를 갖추고 있어 모터의 방향과 속도를 제어할 수 있습니다. 각 H-브리지는 모터를 양방향으로 구동할 수 있어 모터 제어가 필요한 애플리케이션에 적합합니다. 이 경우에는 펌프를 한 방향으로만 작동시키면 됩니다.
데이터시트 세부 정보
제조업체
텍사스 인스트루먼트
부품 번호
L293D
로직/IO 전압
4.5 - 36 V
공급 전압
4.5 - 36 V
출력 전류 (채널당)
600 mA
피크 전류 (채널당)
1.2 A
PWM 주파수 가이드
1 kHz - 10 kHz
입력 로직 임계값
2 V (하이), 0.8 V (로우)
전압 강하 / RDS(on) / 포화
1.5 V (최대)
열 제한
+150 °C (최대)
패키지
DIP-16
참고 사항 / 변형
유도성 부하 보호를 위한 내장 다이오드 포함
연속 작동을 위해 적절한 방열을 보장하세요.
안정적인 전원 공급을 위해 디커플링 커패시터를 사용하세요.
손상을 방지하기 위해 입력 전압에 주의하세요.
필요한 경우 속도 제어를 위해 PWM을 구현하세요.
특히 유도성 부하에서 단락을 방지하기 위해 배선을 확인하세요.
배선 지침
ESP32-16-motor-pump_wiring
ESP32와 L293D 모터 드라이버를 워터 펌프에 배선하려면 다음 단계를 주의 깊게 따르세요. 먼저 전원 공급 장치를 L293D에 연결합니다. 핀 1(모터 A 활성화 핀)과 핀 8(Vcc2)을 양전압 소스(5V)에 연결합니다. 핀 4(접지)를 회로의 접지에 연결합니다.
다음으로 ESP32를 L293D에 배선합니다. ESP32의 GPIO 핀 13을 L293D의 핀 2(입력 1)에 연결하고, GPIO 핀 14를 핀 7(입력 2)에 연결합니다. 마지막으로 워터 펌프를 L293D의 핀 3(출력 1)과 핀 6(출력 2)에 연결합니다. 올바른 작동을 위해 모든 접지 연결이 함께 연결되어 있는지 확인하세요. 이 지침을 따르면 배선이 간단하고 기능적으로 완성됩니다.
코드 예제 및 설명
코드에서 모터 제어를 위한 핀 연결을 정의합니다. 식별자 motor1A 및 motor2A는 각각 ESP32의 GPIO 핀 13과 14에 해당합니다. 이 핀들은 L293D 드라이버를 통해 워터 펌프를 제어합니다.
loop() 함수에서 펌프를 시작하기 위해 motor1A를 HIGH로, motor2A를 LOW로 설정합니다. 짧은 지연 후 두 핀을 모두 LOW로 설정하여 펌프를 정지합니다. 이 주기는 무한히 반복되어 펌프가 짧은 시간 동안 작동한 후 정지하게 합니다.
시연 / 예상 결과
배선을 완료하고 코드를 업로드하면 워터 펌프가 주기적으로 활성화 및 비활성화되는 것을 볼 수 있습니다. 펌프는 짧은 시간 동안 작동한 후 정지하여 온-오프 패턴을 만듭니다. 문제를 방지하려면 전원 공급 장치가 펌프 요구 사항에 적합한지 확인하세요(비디오 09:30 참조).
815-ESP32 Tutorial 16/55 - Arduino code to control DC water pump
언어: 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
}