L298N 드라이버 모듈은 2개의 DC모터 또는 1개의 스테핑모터를 제어하기 위한 모터드라이버 이다. 두개의 DC모터를 각각 속도와 방향 제어할 수 있으므로 전동 모형자동차 제작시 전진/후진 및 가속/감속과 좌회전/우회전 등 모든 동작을 이 드라이버모듈 하나로 구현할 수 있게 된다.  

 

 

L298N의 사양

 

- Work Mode: H bridge drive (dual-channel)
- Main Control Chip: L298N
- Logic Voltage: 5V
- Drive Voltage: 5V-35V
- Logic Current: 0mA-36mA
- Drive Current: 2A(MAX single-bridge)
- Storage Temperature: -20° to +135°
- Max. Power: 25W
- Size: 4.5*4.5*2.8cm
- Weight: 27g(approx.)

 

 

사용방법

 

 

- Output A와 Output B에 각각 DC모터를 연결한다.

 

- +12V Power 단자 : 모터 작동용 메인 전원을 연결하는 곳이다. 35V까지 가능하다고 되어 있으나 12V이내로 사용하는 것이 일반적이다. 

 

Power GND : 공통 접지단자로서 아두이노 GND단자와 +12V전원의 마이너스 접지를 함께 연결한다.

 

- 5V Enable 점퍼스위치 :  내장되어 있는 5V 정전압 Regulator를 가동시킬지 여부를 선택하는 점퍼이다. 연결되어 있으면 Regulator가 가동되어 내부 제어용으로 사용되며 동시에 +5V Power단자로 5V가 출력되기 때문에 이 5V를 아두이노 등 MCU의 전원으로 활용할 수 잇다.  만약 고전압용 DC모터 사용을 위해 12V이상의 전압을 +12V단자에 가해 줄 필요가 있을 경우에는 이 점퍼핀을 빼놓아 Regulator가동을 중지시키고 별도의 5V전압을 +5V Power단자에 가해 주어야 한다.    

 

- +5V단자 : 5V 점퍼스위치가 연결되어 있을 때 (12V이내의 전압을 +12V Power단자에 연결했을 때)에는 별도의 전원을 공급해 줄 필요없고 오히려 이 단자에서 출력되는 전력을 아두이노의 VIN 작동 전원으로 사용할 수 있다. 5V 점퍼스위치가 연결되어 있지 않을 때에는 이 단자에 5V전압을 가해 주어야 한다.     

 

-A Enable과 B Enable단자 : 각각 모터 A와 B의 출력을 제어하는 신호선이고 PWM제어가 가능하다. 점퍼스위치가 연결되어 있는 상태는 5V HIGH가 되어 최대출력으로 연결하라는 의미이고 속도제어가 필요할 경우 아두이노 PWM핀에 연결하여 적절한 PWM값을 출력하면 된다.

 

-Input단자 : 방향을 제어하기 위한 신호선으로서 IN1과 IN2는 모터 A의 방향, IN3와 IN4는 모터B의 방향을 제어하기 위한 것이다.  즉 IN1과 IN2를 각각 HIGH,LOW 로 주었을 때와 LOW,HIGH로 주었을 때는 모터의 진행방향이 반대로 되게 된다.   

 

 

 

아두이노와의 연결

 

 

 

- 위와 같이 전원을 연결하고 Enable A와 Enable B 는 아두이노의 PWM용 핀에 연결한다. (여기에서는 10번과 5번 ) 

- Input 단자들은 아두이노 디지털 출력핀에 연결한다. (여기에서는 IN1~IN4를 각각 9,8,7,6번 핀에 연결)  

- 5V Enale 점퍼선을 연결하고 내부 레귤레이터 가동시킴. ( +5V단자는 연결하지 않아도 되고 필요시 이 +5V단자를 아두이노 보드의 VIN단자에 연결하여 전원공급용으로 사용해도 된다.)  

 

 

샘플프로그램

 

#define ENABLE_A  10  
#define IN1_A  9   
#define IN2_A  8   
#define ENABLE_B  5  
#define IN3_B  7   
#define IN4_B  6   
  
byte speedDC = 255;  
  
void setup()  
{  
  pinMode(ENABLE_A,OUTPUT);  
  pinMode(IN1_A,OUTPUT);  
  pinMode(IN2_A,OUTPUT);  
   pinMode(ENABLE_B,OUTPUT);  
  pinMode(IN3_B,OUTPUT);  
  pinMode(IN4_B,OUTPUT);  
}  
  
void motor_speed(int spd)  
{  
  analogWrite(ENABLE_A,spd);  
  analogWrite(ENABLE_B,spd);  
}  
  
void motor_dir(int dir)  
{  
  if ( dir == 0 ) {  // forward   
     digitalWrite(IN1_A,HIGH);  
     digitalWrite(IN2_A,LOW);  
     digitalWrite(IN3_B,HIGH);  
     digitalWrite(IN4_B,LOW);  
  }  
  else if ( dir == 1 ) { // turn right  
     digitalWrite(IN1_A,HIGH);  
     digitalWrite(IN2_A,LOW);  
     digitalWrite(IN3_B,LOW);  
     digitalWrite(IN4_B,HIGH);  
  }  
  else if ( dir == 2 ) { // turn left  
     digitalWrite(IN1_A,LOW);  
     digitalWrite(IN2_A,HIGH);  
     digitalWrite(IN3_B,HIGH);  
     digitalWrite(IN4_B,LOW);  
  }    
  else if ( dir == 4 ) { // backward  
     digitalWrite(IN1_A,LOW);  
     digitalWrite(IN2_A,HIGH);  
     digitalWrite(IN3_B,LOW);  
     digitalWrite(IN4_B,HIGH);  
  }     
}  
  
void loop()  
{  
  motor_dir(0);  
  for ( int i = 0; i < 100; i++ ) {  
      motor_speed(i);  
      delay(100);  
  }  
  motor_speed(30);  
  motor_dir(1);  
  delay(500);  
  motor_dir(0);  
  delay(3000);   
}  

 

20 ~24 line : Enable 단자에 지정하는 PWM값을 출력하여 속도를 지정한다.

26 ~52 line : INPUT단자의 값들을 변경시켜 진행방향을 제어한다.

  -28~33 : A,B 모터 둘 다 순방향으로 지정하여 전진하는 동작

  -34~39 : A 모터는 순방향 ,B 모터는 역방향으로 돌려 방향 전환한다. 

  -40~45 : A 모터는 역방향 ,B 모터는 순방향으로 돌려 반대 방향으로 전환한다. 

  -56~51 : A,B 모터 둘 다 역방향으로 지정하여 후진하는 동작

56 ~ 60 line : 전진 방향으로 속도를 가속한다.

 

구매좌표 : s.click.aliexpress.com/e/_9yxIz5

 

1.94US $ |1pcs New Dual H Bridge DC Stepper Motor Drive Controller Board Module L298N MOTOR DRIVER new hjxrhgal|Integrated Circu

Smarter Shopping, Better Living! Aliexpress.com

www.aliexpress.com

 

아두이노로 DC모터를 제어하는 방법은 제어하고자 하는 기능범위와 제어하고자 하는 모터의 용량에 따라 조금씩 달라지게 된다.

 

단순 ON/OFF 제어하기

 

단순히 모터를 ON시키거나 OFF시키는 동작만을 원한다면 모터에 연결되는 전원을 ON/OFF시키기만 하면 되므로 릴레이장치를 이용하여 전원공급을 제어하면 된다.

 

 

 

방향만 전환하기 

 

모터의 속도는 그대로 두고 작동 방향만 반대로 바꾸는 제어만을 원한다면 다음과 같이 릴레이 두개로 모터에 공급되는 전원의 +/-극성을 바꿔주는 방법이 있다.

 

위와 같이 릴레이 두개를 병렬로 연결하고 아두이노에서 둘 다 NC로 SET하면 모터에 전류는 흐르지 않는다.

마찬가지로 둘 다 NO일 경우에도 모터에는 전류가 흐르지 않아 모터는 정지 상태이다.   

 

 

 

위와 같이 릴레이 상태를 둘 중 하나만 NO으로 하게 되면 모터에 전류가 흐르게 되는데,

극성 방향은 각각 반대가 되어 모터의 작동방향이 반대가 되게 된다.   

 

 

단방향 속도만 제어하기

 

모터의 작동 방향은 그대로 두고 속도만을 제어하기 원한다면 모터에 연결되는 전류의 세기만 조절하면 되기 때문에 PWM방식으로 전류의 양을 조절하면 된다. 즉, MOSFET를 이용하여 모터에 공급되는 전력의 양을 조정하면 된다.

 

 

 

 

 

 

방향과 속도를 동시제어하기  

 

DC모터의 방향과 속도를 동시에 제어하기 위해서는 전류의 극성과 세기를 함께 조절해야 하기 때문에 모터 드라이버를 사용해야 한다.  아두이노 환경에서 흔하게 사용하는 DC모터 드라이버는 L298N(소형모터용)과 BTS7960(대형모터용) 있는데,  각각의 상세 사용방법은 별도로 정리할 예정이다. 

 

 

L298N 드라이버 모듈은 2개의 DC모터 또는 하나의 스테핑 모터를 제어하기 위한 것인데, 12V,허용전류는2A까지이다.

 

 

 

 

BTS7960 드라이버 모듈은 하나의 DC모터를 제어하기 위한 것으로 7~24V, 허용전류가 43A인 대용량 드라이버이다.

 

전동모터의 종류는 수없이 많겠지만 아두이노를 활용한 메이킹활동에 주로 사용되는 전동모터에는 몇가지 유형이 있고 유형별로 구조 및 사동방법이 조금씩 다르다. 아두이노 환경에서 많이 사용하는 DC전동모터들의 몇가지 종류를 알아 본다.

 

DC모터

 

 

가장 기본적인 DC모터의 원형으로서 일반적으로 가장 많이 사용하는 모터이다. 적당한 전력만 공급해 주면 회전은 하므로 팬 또는 RC자동차 구동 등 여러 용도로 많이 사용된다. 단지 한방향 일정 속도로 회전만을 원한다면 전원공급만 해주면 되지만 회전방향을 바꾼다든지 회전속도를 제어하고 싶다면 DC모터 드라이버회로를 사용해서 +/- 공급 방향과 공급전압을 조절해 주어야 한다. DC모터 드라이버는 사용 전압과 전류에 따라 소용량과 대용량이 있으므로 사용하고자하는 모터의 크기에 따라 적당한 드라이버를 장착해야 한다.       

 

 

기어드모터

 

 

 

일반적으로 DC모터는 속도는 빠르지만 토크(회전력)은 약하다. 따라서 회전속도는 빠르지 않아도 큰 회전력이 필요할 경우에는 모터축에 감속기어를 연결하여 고속 저토크를 저속 고토크로 바꿔주게 되는데 이런 기어들이 모터에 장착되어 있는 모터들을 기어드모터라 한다. 동일한 DC모터를 사용한다 해도 감속비율에 따라 속도와 회전력은 차이가 나므로 구매시에는 감속비율에 따른 속도아 회전력 사양에 주의해야 한다. 감속기어가 붙어 있을 뿐 일반 DC모터와 동일하므로 사용방법은 DC모터와 동일하다.

 

 

 

브러시리스(Blushless)모터

 

 

일명 BLDC라고도 부른는데 DC모터에서 브러시와 정류자를 빼고 전자적인 정류기구를 설치한 모터이다. 브러시에 의한 기계적인 마찰이나 마모가 없기 때문에 기계적인 잡음이 없고 초고속 회전이 가능해 지지만 구동회로가 복잡해 진다.

드론이나 CD플레이어 등 같이 가볍고 초고속 회전이 필요한 경우에 많이 사용된다.  

 

 

 

브러시리스모터는 구동방식이 복잡하기 때문에 위와 같은 ESC(Electronic Speed Controls: 전자속도제어기)라는 브러시리스모터 전용 드라이버를 사용해야 한다.      

 

 

서보모터

 

 

 

모형자동차 핸들 또는 CCTV카메라의 각도 조절 등과 같이 제한된 범위내에서 축을 일정한 각도로 회전시켜 유지시켜야 할 때 사용하는 모터이다. 모터 내부적으로 감속기어 등이 장착되어 있어 모터 크기에 비해 회전력은 매우 센 편이나 회전할 수 있는 각도는 통상 180도 정도 즉 반바뀌 정도이다. ( 내부회로를 개조해서 180도 만 회전하는 것이 아니고 계속해서 무한회전하는 서보모터도 있다. )  PWM방식으로 제어되는 서보모터들은 특별한 경우를 제외하고는 별도의 드라이버장치 없이 아두이노에서 직접 PWM신호로 각도를 지정하는 방식으로 사용할 수 있다. 이때 아두이노 보드의 출력선은 허용전류가 부족하므로 서보모터의 공급하는 전력은 별도의 전원으로 해야 한다.  

 

 

 

스테핑모터

 

 

3D프린터처럼 정확한 거리나 회전각도 이동이 필요할 경우에 스테핑모터를 사용한다. 보통 스테핑모터는 한 스텝당 1.8도 정도 움직이므로 한바뀌 회전 360도를 200분의 1로 나누어 스텝단위로 모터를 정밀하게 제어할 수 있다. 스테핑모터는 정밀하기는 하지만 회전력이 약하기 때문에 어느 정도 회전력을 키우려면 모터의 크기가 커지는 경향이 있다. 스테핑모터를 제어하기 위해서는 별도의 스테핑모터 드라이버 장치가 필요하며 제어선도 4선 또는 6개의 전선이 필요하다.     

 

+ Recent posts