아두이노로 DC 모터 제어하기! – L298N 모듈 완벽 가이드
DC 모터를 아두이노로 제어하고 싶은데, 전압이나 전류 때문에 고민되시나요?
그럴 땐 바로 L298N 모터 드라이버 모듈이 정답입니다!
이 글에서는 L298N 모듈이 무엇인지, 어떻게 사용하는지,
그리고 아두이노와 연결해서 DC 모터를 제어하는 방법까지 하나하나 알려드릴게요.
L298N 모듈이란?
L298N은 2개의 DC 모터 또는 1개의 스텝 모터를 제어할 수 있는
듀얼 H-브리지 모터 드라이버입니다.
아두이노 같은 마이크로컨트롤러가 모터를 직접 제어하기엔 전류가 부족한데,
이 모듈을 사용하면 외부 전원을 통해 안정적으로 모터를 구동할 수 있습니다.
주요 핀 설명
- IN1, IN2: 모터 A 방향 제어 입력
- IN3, IN4: 모터 B 방향 제어 입력
- ENA, ENB: PWM 입력 (속도 조절)
- OUT1, OUT2: 모터 A 출력
- OUT3, OUT4: 모터 B 출력
- +12V: 외부 전원 입력
- GND: 그라운드
- 5V: (점퍼 연결 시 내부 레귤레이터 사용 가능)
아두이노와 배선 연결
기본 연결 구성 (모터 1개 기준)
- L298N IN1 → 아두이노 9번
- L298N IN2 → 아두이노 8번
- L298N ENA → 아두이노 10번 (PWM 핀)
- L298N +12V → 외부 전원 (9~12V 배터리 등)
- L298N GND → 아두이노 GND, 외부 전원 GND 공통
- L298N OUT1, OUT2 → DC 모터 연결
- L298N 5V → 12V 이상의 전원 연결시 점퍼 제거 후 아두이노 5V 연결
12V 이하의 전원 연결시 점퍼 연결
아두이노 코드 예제
int ENA = 10;
int IN1 = 9;
int IN2 = 8;
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
}
void loop() {
// 정방향 회전
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, 200); // 속도 조절 (0~255)
delay(3000);
// 정지
analogWrite(ENA, 0);
delay(1000);
// 역방향 회전
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 200);
delay(3000);
// 정지
analogWrite(ENA, 0);
delay(1000);
}
주의사항
- DC 모터 전원은 반드시 아두이노 전원과 분리하여 사용하세요.
(공통 GND는 반드시 연결해야 합니다!) - EN 핀을 PWM 핀에 연결하면 속도 제어가 가능합니다.
- L298N 모듈은 발열이 발생하므로 장시간 사용 시 방열판 또는 팬이 필요할 수 있습니다.
- L298N 모듈은 보통 7V~12V 외부 전원을 사용하지만, 12V 이상을 사용할 경우 꼭 아래 사항을 지켜주세요. 점퍼를 제거한 경우에는 아두이노 등에서 5V를 따로 공급해줘야 합니다.
- 아두이노의 5V 핀을 L298N의 5V 입력 단자에 연결
- 또는 별도의 5V 레귤레이터(예: AMS1117, LM7805)를 사용
이 경우 L298N이 내부적으로 5V를 만들어 사용하게 됩니다. - 5V 점퍼(내장 레귤레이터 점퍼)를 반드시 제거해야 합니다!
왜냐하면, L298N의 내장 5V 레귤레이터는 12V 이상 입력 시 과열되거나 손상될 수 있기 때문입니다.
'아두이노' 카테고리의 다른 글
아두이노 서보모터 제어 - 라이브러리 없이 PWM 직접 만들기 (Tinkercad 한계 포함) (0) | 2025.04.22 |
---|---|
아두이노 버튼(Pull-down, Pull-up) & LED 제어 예제 (0) | 2025.04.22 |
아두이노 버튼 풀업(Pull-up), 풀다운(Pull-down) 회로 예제 (0) | 2025.04.21 |