코드 검색

ESP32 튜토리얼 16/55 - ESP32와 L293D를 사용한 미니 워터 펌프 | SunFounder의 ESP32 IoT 학습 키트

ESP32 튜토리얼 16/55 - ESP32와 L293D를 사용한 미니 워터 펌프 | SunFounder의 ESP32 IoT 학습 키트

이 튜토리얼에서는 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)에 연결합니다. 올바른 작동을 위해 모든 접지 연결이 함께 연결되어 있는지 확인하세요. 이 지침을 따르면 배선이 간단하고 기능적으로 완성됩니다.

코드 예제 및 설명

코드에서 모터 제어를 위한 핀 연결을 정의합니다. 식별자 motor1Amotor2A는 각각 ESP32의 GPIO 핀 13과 14에 해당합니다. 이 핀들은 L293D 드라이버를 통해 워터 펌프를 제어합니다.

#define motor1A 13
#define motor2A 14

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

setup() 함수에서 모터 제어 핀을 출력으로 초기화합니다. 이를 통해 L293D 드라이버에 신호를 보내 펌프를 제어할 수 있습니다. 그런 다음 loop() 함수가 펌프 작동을 제어합니다.

void loop() {
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(5);
  
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(2000); // 1초 대기
}

loop() 함수에서 펌프를 시작하기 위해 motor1A를 HIGH로, motor2A를 LOW로 설정합니다. 짧은 지연 후 두 핀을 모두 LOW로 설정하여 펌프를 정지합니다. 이 주기는 무한히 반복되어 펌프가 짧은 시간 동안 작동한 후 정지하게 합니다.

시연 / 예상 결과

배선을 완료하고 코드를 업로드하면 워터 펌프가 주기적으로 활성화 및 비활성화되는 것을 볼 수 있습니다. 펌프는 짧은 시간 동안 작동한 후 정지하여 온-오프 패턴을 만듭니다. 문제를 방지하려면 전원 공급 장치가 펌프 요구 사항에 적합한지 확인하세요(비디오 09:30 참조).

비디오 타임스탬프

  • 00:00 시작
  • 1:50 프로젝트 소개
  • 3:17 Arduino와 함께 L293D가 필요한 이유는?
  • 5:47 워터 펌프 배선 설명
  • 10:01 Arduino 코드 설명
  • 12:21 Arduino IDE에서 ESP32용 COM 포트 선택
  • 14:03 펌프 작동 시연
  • 15:25 물을 사용한 시연

이미지

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
언어: 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
}

자원 및 참고자료

파일📁

데이터시트 (pdf)