목차
l298n 드라이버 핵심 정리
l298n 드라이버는 두 개의 DC모터를 독립적으로 제어할 수 있는 모터 드라이버 모듈입니다. 아두이노 같은 마이크로컨트롤러의 작은 전류로는 모터를 직접 돌리기 어렵기 때문에, 이 드라이버가 별도 전원을 받아 모터를 구동해 줍니다. 방향은 입력 핀 조합으로 바꾸고, 속도는 PWM 신호로 조절합니다. 아래 표에 핵심 정보를 정리했으니 처음 시작하시는 분도 빠르게 감을 잡을 수 있습니다.
| 항목 | 내용 |
|---|---|
| 제어 가능 모터 | DC모터 2개 또는 스테핑 모터 1개 |
| 전원 입력 | 5V 또는 12V |
| 속도 조절 | ENA, ENB 핀의 PWM 신호 |
| 방향 조절 | IN1, IN2, IN3, IN4 핀의 HIGH LOW 조합 |

l298n 드라이버 동작 원리
l298n 드라이버를 처음 보면 핀이 많아서 조금 부담될 수 있습니다. 하지만 원리를 알면 아주 단순합니다. DC모터는 전류가 흐르는 방향에 따라 회전 방향이 바뀝니다. 드라이버 내부의 H브리지 회로가 이 전류 방향을 바꿔 주고, PWM 신호로 평균 전압을 조절해 속도를 바꿔 줍니다. 두 가지 개념만 이해하면 웬만한 모터 제어는 문제없이 할 수 있습니다.
회전 방향을 바꾸는 방법
IN1과 IN2 핀에 HIGH와 LOW를 어떻게 넣느냐에 따라 모터 A의 방향이 정해집니다. IN1에 HIGH, IN2에 LOW를 주면 정방향으로 회전하고, 반대로 주면 역방향으로 회전합니다. 둘 다 LOW로 두면 모터가 멈춥니다. 모터 B도 IN3와 IN4 핀으로 같은 방식으로 동작합니다. 아래 표를 참고하면 헷갈리지 않습니다.
| IN1 | IN2 | 모터 동작 |
|---|---|---|
| HIGH | LOW | 정방향 회전 |
| LOW | HIGH | 역방향 회전 |
| LOW | LOW | 정지 |
속도를 조절하는 방법
속도는 ENA와 ENB 핀으로 조절합니다. 여기에 analogWrite 함수로 0부터 255 사이 값을 넣으면 모터 속도가 0에서 100퍼센트까지 변합니다. 그런데 중요한 점이 하나 있습니다. 보드에 점퍼핀이 꽂혀 있으면 최대 속도로만 동작하므로, PWM으로 속도를 조절하려면 반드시 점퍼핀을 빼야 합니다. 이 부분을 모르고 한참을 헤맨 기억이 있습니다.
l298n 드라이버 연결 방법
연결은 크게 어렵지 않지만 전원 연결을 잘못하면 드라이버나 모터가 손상될 수 있어 주의해야 합니다. 모터 전원은 VSS 단자에 배터리나 아답터를 연결하고, 로직 전원은 Vcc에 아두이노의 5V를 연결합니다. GND는 아두이노와 드라이버를 반드시 함께 묶어 주어야 신호가 동작합니다.
준비물
- 아두이노 보드 1개
- l298n 드라이버 모듈 1개
- DC모터 2개
- 점퍼 케이블 여러 개
- 배터리 또는 12V 아답터
아두이노와 l298n 드라이버 배선표
| 아두이노 핀 | l298n 드라이버 핀 | 역할 |
|---|---|---|
| D3 | ENA | 모터 A 속도 제어 |
| D4 | IN1 | 모터 A 방향 제어 |
| D5 | IN2 | 모터 A 방향 제어 |
| D6 | ENB | 모터 B 속도 제어 |
| D7 | IN3 | 모터 B 방향 제어 |
| D8 | IN4 | 모터 B 방향 제어 |
| 5V | Vcc | 로직 전원 |
| GND | GND | 공통 접지 |
배선을 마치고 나면 모터 전원 단자 VSS에 12V 아답터를 연결합니다. 이때 아두이노에 USB가 연결된 상태라면 전원이 이중으로 들어가 보드에 무리가 갈 수 있습니다. 저도 예전에 USB와 외부 전원을 동시에 연결했다가 보드가 고장난 줄 알고 당황한 적이 있습니다. 다행히 보드는 멀쩡했지만, 전원 연결은 항상 하나씩 확인하는 습관이 중요합니다.
l298n 드라이버 예제 코드로 동작 확인하기
이제 간단한 코드로 두 모터를 정회전, 정지, 역회전 순서로 돌려보겠습니다. 아래 코드를 아두이노 IDE에 붙여 넣고 보드 설정 후 업로드하면 됩니다. 코드는 짧지만 방향 제어와 속도 제어의 기본이 모두 들어 있습니다.
// 모터 A 핀 설정
int enA = 3;
int in1 = 4;
int in2 = 5;
// 모터 B 핀 설정
int enB = 6;
int in3 = 7;
int in4 = 8;
void setup() {
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
// 정회전 속도 200
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 200);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 200);
delay(2000);
// 정지
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(1000);
// 역회전 속도 150
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 150);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB, 150);
delay(2000);
// 정지
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(1000);
}
위 코드를 업로드하면 두 모터가 2초간 정회전하고 1초 멈췄다가 2초간 역회전하는 것을 확인할 수 있습니다. 속도 값을 0에서 255 사이로 바꾸면 모터가 빨라지거나 느려지는 차이도 바로 느껴집니다. 만약 모터가 움직이지 않는다면 배선의 GND 연결과 전원 스위치부터 확인해 보시기 바랍니다.
아두이노와 l298n 드라이버를 처음 다루는 분께는 단계별 무료 강의가 큰 도움이 됩니다. 아래 링크에서 기초부터 차근차근 배워 보시길 추천합니다.
l298n 드라이버를 쓰며 겪은 어려움과 해결 방법
l298n 드라이버를 실제 프로젝트에 적용하면서 여러 번 시행착오를 겪었습니다. 가장 큰 어려움은 전원 문제였습니다. 모터가 갑자기 느려지거나 멈추는 증상이 반복되었는데, 원인은 배터리 전압이 부족했기 때문이었습니다. 모터는 생각보다 많은 전류를 소모하기 때문에 넉넉한 용량의 전원이 필요합니다.
또 하나는 PWM 점퍼핀이었습니다. 처음에는 점퍼핀을 그대로 둔 채 속도를 조절하려고 코드만 수정했는데, 모터 속도가 전혀 변하지 않았습니다. 데이터시트를 다시 읽어보니 점퍼핀을 제거해야 PWM 신호가 적용된다는 설명이 있었습니다. 작은 부품 하나가 큰 차이를 만든다는 것을 몸소 깨달았습니다.
그리고 여러 센서를 동시에 사용할 때 핀 충돌 문제도 있었습니다. 타이머를 사용하는 센서와 모터 드라이버가 같은 핀을 쓰면 동작이 꼬일 수 있습니다. 이 경험을 바탕으로 앞으로는 프로젝트를 시작하기 전에 사용할 핀을 미리 정리하고, 전원은 모터용과 로직용을 분리해서 설계할 계획입니다.
정리하며
지금까지 l298n 드라이버의 동작 원리, 연결 방법, 예제 코드, 그리고 실제 사용하며 겪은 어려움까지 살펴보았습니다. l298n 드라이버는 DC모터 2개를 독립적으로 제어할 수 있어서 RC카, 로봇 팔, 자동화 장치 등 다양한 만들기에 활용할 수 있습니다. 처음에는 핀 이름이 복잡해 보이지만, IN 핀으로 방향을 정하고 EN 핀으로 속도를 조절한다는 기본만 기억하면 어렵지 않습니다.
앞으로는 이 드라이버를 활용해 라인트레이서 로봇을 만들고, 블루투스로 스마트폰에서 조종하는 프로젝트까지 도전해 보려고 합니다. 여러분도 l298n 드라이버로 작은 바퀴 하나를 돌려 보는 것부터 시작해 보시길 바랍니다. 분명 재미있는 경험이 될 것입니다.
자주 묻는 질문
Q: l298n 드라이버로 스테핑 모터도 제어할 수 있나요?
A: 네, 가능합니다. l298n 드라이버 하나로 DC모터 2개 또는 스테핑 모터 1개를 제어할 수 있습니다. 다만 스테핑 모터는 4개 선을 연결해야 해서 DC모터보다 배선이 조금 더 복잡합니다.
Q: 모터 전원과 로직 전원을 따로 연결해야 하나요?
A: 네, 따로 연결하는 것이 안전합니다. 모터 전원은 VSS에 5V부터 12V까지 넣고, 로직 전원은 Vcc에 아두이노 5V를 연결합니다. GND는 공통으로 묶어 주어야 합니다.
Q: 모터 속도가 일정하지 않고 계속 떨리는데 왜 그런가요?
A: 가장 흔한 원인은 전원 공급이 부족한 것입니다. 배터리 전압이 낮아지면 모터가 정상적으로 동작하지 않습니다. 용량이 충분한 전원을 사용하거나 외부 전원을 추가해 보세요.





