ESP32 튜토리얼 15/55 - ESP32 L293D로 DC 모터 속도 제어 | SunFounder의 ESP32 IoT 학습 키트
ESP32 튜토리얼 15/55 - ESP32 L293D로 DC 모터 속도 제어 | SunFounder의 ESP32 IoT 학습 키트
ESP32로 DC 모터를 제어하는 것은 어렵게 보일 수 있지만, 올바른 부품과 이해가 있다면 꽤 관리하기 쉽습니다. 이 튜토리얼에서는 L293D 모터 드라이버를 사용하여 DC 모터의 속도와 방향을 제어할 수 있는 프로젝트를 구축할 것입니다. 마지막에는 모터를 앞뒤로 회전시키면서 속도를 조절할 수 있는 작동 설정을 갖추게 될 것입니다. 시각적 참고를 위해 (비디오 00:00)의 영상을 확인하세요.
하드웨어 설명
이 프로젝트의 주요 구성 요소는 ESP32 마이크로컨트롤러와 L293D 모터 드라이버입니다. ESP32는 내장 Wi-Fi 및 Bluetooth 기능을 갖춘 강력한 마이크로컨트롤러로, IoT 애플리케이션에 적합합니다. GPIO 핀을 통해 모터를 포함한 다양한 하드웨어 구성 요소를 제어할 수 있습니다. L293D는 듀얼 H-브리지 모터 드라이버로, 두 개의 DC 모터의 방향과 속도를 제어할 수 있습니다. 각 H-브리지는 모터 단자에 인가되는 전압의 극성을 반전시켜 모터를 어느 방향으로든 구동할 수 있습니다. 또한 L293D는 채널당 최대 600mA의 전류를 처리할 수 있어 소형 및 중형 모터에 적합합니다.
데이터시트 세부 정보
| 제조업체 | 텍사스 인스트루먼트 |
|---|---|
| 부품 번호 | L293D |
| 로직/IO 전압 | 2.5 – 7 V |
| 공급 전압 | 4.5 – 36 V |
| 출력 전류 (채널당) | 600 mA (일반) |
| 피크 전류 (채널당) | 1.2 A (최대) |
| PWM 주파수 가이드 | 20 kHz (일반) |
| 입력 로직 임계값 | 0.8 V (높음), 2.0 V (낮음) |
| 전압 강하 / RDS(on) / 포화 | 1.5 V (최대) |
| 열 제한 | 150 °C (최대) |
| 패키지 | 16-DIP |
| 참고 / 변형 | 쿼드러플 하프-H 드라이버 |
- 고전류 애플리케이션의 경우 적절한 방열판을 확보하세요.
- 전압 스파이크를 방지하기 위해 커패시터로 전원 공급 장치를 디커플링하세요.
- 극성 반전을 방지하기 위해 배선에 주의하세요.
- 과열을 방지하기 위해 속도 제어에 PWM을 사용하세요.
- 손상을 방지하기 위해 모터의 정격 전압을 확인하세요.
배선 지침

ESP32와 L293D 모터 드라이버를 배선하려면 전원 연결부터 시작하세요. L293D의 핀 16을 전원 공급 장치의 양극 단자에 연결하고, 핀 4를 접지에 연결하세요. 다음으로 모터를 연결합니다: 한 단자는 L293D의 핀 3에, 다른 단자는 핀 6에 연결하세요. 제어 신호의 경우 ESP32의 GPIO 핀 13을 L293D의 핀 2에, GPIO 핀 14를 핀 7에 연결하세요. 마지막으로 공통 기준을 보장하기 위해 ESP32의 접지를 L293D 접지에 연결해야 합니다. 비디오에서 대체 배선(비디오 05:00)을 언급하는 경우, 표시된 특정 변경 사항을 따르세요.
코드 예제 및 설명
모터 제어를 위한 코드는 모터 핀을 정의하고 해당 모드를 설정하는 것으로 구성됩니다. 다음은 setup 함수의 일부입니다:
#define motor1A 13
#define motor2A 14
void setup() {
pinMode(motor1A, OUTPUT);
pinMode(motor2A, OUTPUT);
}
이 스니펫에서 모터 제어 핀을 상수로 정의하고 setup 함수에서 출력으로 설정합니다. 이는 모터 제어를 위한 핀을 준비하는 데 중요합니다. loop 함수는 모터의 동작이 제어되는 곳입니다. 다음은 loop의 핵심 부분입니다:
void loop() {
digitalWrite(motor1A, HIGH);
digitalWrite(motor2A, LOW);
delay(2000);
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, HIGH);
delay(2000);
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, LOW);
delay(3000);
}
이 코드는 모터를 한 방향으로 2초 동안 회전시킨 다음, 방향을 반전시켜 2초 동안 회전시키고, 마지막으로 3초 동안 모터를 정지시킵니다. 이 루프는 무한히 반복되어 연속적인 제어를 가능하게 합니다. 더 자세한 통찰과 전체 코드는 기사 아래에 로드되는 전체 프로그램을 참조하세요.
데모 / 기대 효과
배선과 코드 업로드가 성공적으로 완료되면 모터가 한 방향으로 2초 동안 회전하고, 방향을 바꿔 2초 동안 회전한 다음, 3초 동안 정지하는 것을 볼 수 있습니다. 모터가 예상대로 반응하지 않으면 극성 반전이나 잘못된 핀 연결(비디오 08:00)과 같은 일반적인 문제를 확인하세요. 이 설정은 ESP32와 L293D를 사용하여 DC 모터의 속도와 방향을 제어하는 간단한 방법을 제공합니다.
비디오 타임스탬프
- 00:00 시작
- 2:01 DC 모터 소개
- 6:14 L293D 모터 드라이버
- 9:17 프로젝트 문서
- 11:04 배선 설명
- 14:41 ESP32를 이용한 Arduino 모터 제어
- 17:10 ESP32 보드용 Arduino 포트 선택
- 18:52 프로젝트 시연
- 22:08 ESP32를 이용한 모터 속도 제어
- 26:22 속도 제어 데모
- 28:01 속도 및 방향 제어 Arduino 코드
- 29:05 속도 및 방향 시연
#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(2000);
// Rotate in the opposite direction
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, HIGH);
delay(2000);
// Stop
digitalWrite(motor1A, LOW);
digitalWrite(motor2A, LOW);
delay(3000);
}
Common Course Links
Common Course Files
필요할 수 있는 것들
-
아마존Purchase L293D motor driver ICamzn.to
-
이베이
-
알리익스프레스Purchase L293D motor driver IC from AliExpresss.click.aliexpress.com
자원 및 참고자료
-
문서화ESP32 Tutorial 15/55 - SunFounder motor control documentationdocs.sunfounder.com
파일📁
데이터시트 (pdf)
-
L293D 쿼드러플 하프 브리지 데이터시트
l293d_Quadruple_half_bridge_datasheet.pdf0.34 MB