[아두이노] L298N 모터 드라이버 모듈 사용하기


안녕하세요 디바이스마트 대짜이찐입니다.
이번엔 아두이노에서 DC 모터드라이버를 사용할 때, 
가장많이 사용되는 DC 모터드라이버인
 L298N 모터 드라이버 모듈에 대해서 포스팅해보겠습니다.


아두이노에서 모터를 제어하려고 할때,
작은 DC모터나 서보모터를 제외하고는 제대로 동작하지 않습니다.
이유는 아두이노 자체출력은 USB사용시 200mA밖에 되지 않기 때문에
모터를 돌리기에는 전류가 부족합니다.



때문에 건전지, SMPS, 파워서플라이등 외부 전원을 사용해서 
모터에 충분한 전류를 공급해주고,
제어하기 위해서는 모터드라이버를 사용해야합니다.

우선 제품 스펙입니다.

  • Driver : L298N Dual H Bridge DC Motor Driver IC 
  • Drive Terminal Power Supply : +5 V ~ +35 V
  •  (if others need to be powered by the board, power supply should be +7V~+35V) 
  • Drive Part of the Peak Current : 2A 
  • Logic Terminal Power Supply : +5 V ~ +7 V
  •  (Power supply within the board : +5 V) 
  • Logic Part of the Operating Current : 0 ~ 36mA 
  • Control Signal Input Voltage Range : Low:-0.3V ≤ Vin ≤ 1.5V; High: 2.3V ≤ Vin ≤ Vss 
  • Enable Signal Input Voltage Range : Low: -0.3 ≤ Vin ≤ 1.5V (control signal is inactive)
  • High: 2.3V ≤ Vin ≤ Vss (control signal active)
  • Maximum Power Consumption : 20W ( at 75 deg C) 
  • Storage Temperature : -25 ~ +130 deg C 
  • Other Extensions : Control indicators, logic unit power supply interface 
  • Size(L x W x H) : 48 x 43 x 33mm (includes the height of copper pillar and heat sink)

5VDC에서부터 35VDC까지 입력 전압을 넣을 수 있으며,
출력 전류는 2A까지 입니다.
드라이버 1개로 작은 자동차 로봇을 돌리기에는 모자람없는 스펙입니다.

+5V OUT 핀도 있기 때문에, 아두이노에 전원도 같이 넣을 수 있는 장점도 있습니다.


ENA A(B)
INPUT 1(3)
INPUT 2(4)
motor A(B)
High
High
Low
Forward
High
Low
High
Reverse
High
High
High
Fast Motor Stop
High
Low
Low
Fast Motor Stop
Low
X
X
Free Running Motor Stop

로직 I/O 핀에서 HIGH, LOW의 신호로 모터 A와 B에 대한 명령을 줄 수 있습니다.
INPUT 1~4 신호로 방향을 제어할 수 있고, ENA(B) 핀으로 PWM을 제어 할 수 있습니다.



위 그림 노란색 박스처럼 로직 I/O 핀중 
ENA(B)핀이 점퍼핀으로 +5VDC와 연결되어 있는
경우에는 최대 출력으로 동작하므로,

 PWM을 제어 하실 경우에는 점퍼선을 제거하고,
ENA(B)에 직접 PWM신호를 입력해야 합니다.


위 그림 노란색 박스처럼 L298N 모터 드라이버 모듈 중
점퍼핀 or 스위치로 전원단에 +5V IN/OUT을 결정 할 수 있습니다.

다만 +5V 출력으로 사용하기 위해서는 
모터 드라이버 전원을 12V이하로만 주었을 때만 가능합니다.
모터 드라이버 전원을 12V이상으로 주었을 때 +5V를 출력으로 설정하면,
5V 레귤레이터가 손상을 입을 수 있습니다.
때문에 이 경우에는 점퍼선을 빼거나, 스위치를 ON으로 바꿔야 합니다.


아래 예제는 아두이노로 L298N 모터 드라이버 모듈을 제어하는 예제입니다.


필요한 준비물은 아두이노 우노, 9V 배터리, DC모터 2EA, 
L298N 모터 드라이버 모듈, 점퍼선 입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
L298N 모터드라이버
http://www.devicemart.co.kr/
*/
// 아두이노 연결된 핀 설정
#define ENA 10
#define ENB 5
#define EN1 9
#define EN2 8
#define EN3 7
#define EN4 6
int Motor_speed=100; // 모터 속도 PWM 100으로 설정 0~255
void setup()
{
// PWM 제어핀 출력 설정
pinMode(ENA,OUTPUT);
pinMode(ENB,OUTPUT);
// 방향 제어핀 출력 설정
pinMode(EN1,OUTPUT);
pinMode(EN2,OUTPUT);
pinMode(EN3,OUTPUT);
pinMode(EN4,OUTPUT);
}
void loop()
{
// 모터 A,B 정방향
digitalWrite(EN1, HIGH);   // 모터A 설정 
digitalWrite(EN2, LOW);  
analogWrite(ENA, Motor_speed);  
digitalWrite(EN3, HIGH);  // 모터B설정
digitalWrite(EN4, LOW);   
analogWrite(ENB, Motor_speed);  
delay(3000);          // 3초동안 정방향 회전
// 모터A,B 역방향
digitalWrite(EN1, LOW);  // 모터A설정
digitalWrite(EN2, HIGH);  
analogWrite(ENA, Motor_speed);  
 digitalWrite(EN3, LOW); // 모터B설정
digitalWrite(EN4, HIGH);   
analogWrite(ENB, Motor_speed);  
delay(3000);       // 3초동안 역방향 회전
}


감사합니다.

댓글 쓰기

0 댓글