본문 바로가기
아두이노

아두이노로 DC 모터 제어하기! L298N 모듈 완벽 가이드

by 꼬맹님 2025. 4. 18.

아두이노로 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)를 사용
    반대로, 12V 이하의 전원을 사용할 경우에는 5V 점퍼를 연결해도 괜찮습니다.
    이 경우 L298N이 내부적으로 5V를 만들어 사용하게 됩니다.
  • 5V 점퍼(내장 레귤레이터 점퍼)를 반드시 제거해야 합니다!
    왜냐하면, L298N의 내장 5V 레귤레이터는 12V 이상 입력 시 과열되거나 손상될 수 있기 때문입니다.