[아두이노] 모터 드라이버 (L298N) 활용하기

기본 설명

아두이노로부터 신호를 입력받아 모터의 방향, 속도 제어를 가능하게 합니다.

모터드라이버 모듈 설명
  • 7 ~ 12V의 외부전원 사용 시 레귤레이터를 통해 논리회로에 전력을 공급할 수 있습니다. 그 외 범위의 전원 사용 시 점퍼핀을 제거하고 5V를 논리회로 전원에 직접 공급해야 합니다. 높은 전압에서는 제거하지 않고 사용 시 회로에 고장이 생길 수 있으므로 반드시 제거하여 사용해야 합니다.
  • 논리회로에서 계산된 전력을 모터로 공급합니다. A에선 1, 2의 신호를 받아 출력하고, B에선 3, 4의 신호를 받아 출력합니다. 최대 2A까지 출력 가능합니다.
  • 핀 – 기본적으로 점퍼핀이 끼워져 있어 항시 ON 상태로 동작합니다. 제거 후 아두이노에 연결 시 HIGH, LOW 신호를 보내 모터의 전원 ON, OFF 제어가 가능합니다.
  • 핀 (1, 2, 3 ,4) – 아두이노에서 디지털 신호를 받습니다.

PWM 제어란?

속도의 제어는 디지털 핀을 통한 PWM 제어로 이루어집니다. 여기서 PWM 제어란 그림과 같이 HIGH, LOW의 신호 전송 주기를 조절하여 디지털 핀에서 아날로그와 유사한 출력을 가능케 하는 것입니다. 아두이노의 경우 PWM제어가 가능한 특정 핀이 정해져있으며 Uno 보드의 경우 3, 5, 6, 9, 10, 11 핀에서 가능합니다. 일반적으로 PWM 핀은 ~ 표시를 붙여 나타냅니다.

아두이노 배선

아두이노모터드라이버(L298N)외부 전원
12(+)+
GNDGND
D3IN2
D4IN1
OUT1 (모터로 연결)
OUT2 (모터로 연결)

높은 출력의 모터와 배터리를 사용하는 경우, 아두이노를 통한 전력 공급에 문제가 생깁니다. 아두이노의 최대 출력 전류는 200mA (USB 사용시)이므로 그 이상의 전력이 요구된다면 외부 전원을 이용하여 안정적인 공급을 해야 합니다. 여기선 9V 건전지를 사용했으므로 레귤레이터 점퍼핀을 꽂은 상태입니다. 아두이노에 연결할 때는 Vin핀 또는 DC소켓에 연결하게 되는데, 7~12V의 전압을 사용할 수 있습니다.

외부 전원 드라이버에 연결하는 배선도

아두이노 소스 코드

#define PWMpin 3 //PWM 제어를 위한 핀 3번으로 지정
#define DIRpin 4 //방향 제어를 위한 핀 4번으로 지정

void setup() {
pinMode(DIRpin, OUTPUT);
}

void loop() {
Motor(HIGH,100);//100의 출력으로 정방향 회전
delay(1500); //1500ms 즉 1.5초간 대기
Motor(HIGH,255);//255(최대)의 출력으로 정방향 회전
delay(1500);
Motor(HIGH,0);//정지
delay(1500);
Motor(LOW,100);//100의 출력으로 정방향 회전
delay(1500);
Motor(LOW,255);//255(최대)의 출력으로 정방향 회전
delay(1500);
Motor(LOW,0);//정지
delay(1500);
}

/*
모터를 제어를 위해 정의한 함수, Motor(HIGH 또는 LOW, 0~255의 출력)
*/
void Motor (boolean DIR, byte Motorspeed)
{
analogWrite(PWMpin, (DIR) ? (255 – Motorspeed) : Motorspeed);
digitalWrite(DIRpin, DIR);
}

동작 화면

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다