반응형

【 아두이노 기초 】 #24 DC 모터 제어 하기 4

 이번 시간 부터는 DC모터를 RC카 등에 응용 할 수 있도록 본격적으로 제어해보는 실습을 가져보자. 


※ 일반적으로 소형 DC 모터라도 기어박스가 달린 모터를 제어할 때는 소모전류를 체크 해야 한다. 아두이노 포트의 출력은 40mA로 매우 제한 적이기 때문에 포트에서 직접 모터로 출력을 연결 할 경우 아두이노 포트나 주변회로가 손상 될 수 있으며 모터 또한 미약한 전류로는 돌릴 수 없게 된다. 


 이를 보완 하기 위해 모터에 충분한 전류를 공급해 줄 수 있는 IC가 개발되어 있다.  이런 모터 드라이버용 IC (본 실험에서는 L293D) 를 이용해서 모터를 구동해 보고자 한다. 


 모터제어의 핵심은 정회전으로 돌릴 것인가? 역회전으로 돌릴 것인가? 같은 "방향제어"와 "속도 제어" 인데,  H 브릿지라고 불리는 아래 그림과 같은 간단한 회로를 통해 방향제어가 가능하며, 이런 H 브릿지 회로가 두 개(2채널) 들어가 있는 IC가 바로 L293D IC이며, PWM 신호입력을 통해 속도 제어 까지 가능하다. 


※ H - 브릿지 회로 (모터 구동 회로)



위 그림에서 스위치 1번과 4번을 닫을 때(2,3번은 오픈) 전류의 흐름으로 인해 한 방향으로 회전 하기 시작하며 , 방향을 반대 방향으로 전환 하려고 할 때는 2번과 3번 스위치를 닫으면(1, 4번은 오픈) 방향전환이 이루어진다. 

 만약 그 이외의 경우는(1,2번 닫고 3,4 오픈 /  1,2번 오픈 3,4 닫기 / 모두 오픈) 모터가 회전 하지 않는다(정지)




회로 연결도가 알파벳 H를 닮았다 하여 'H-bridge' 라고 하며, 아래 그림의 TR 처럼 베이스 단자를 통해 스위치의 ON/OFF를 전자적으로 제어 할 수 있다.


이러한 H브릿지 기능을 포함 하고 속도 제어 까지 가능 하도록 만들어진 IC가 바로 L293D (시리즈) IC이며,  이를 활용하여 DC 모터를 제어해 보도록 하자.




▶ L293D 모터 제어 드라이버 IC :



H 브릿지 회로가  2개(2채널) 들어가 있으며, IC 이미지에서 처럼 좌우측 으로 구분 되어 있다.  


정방향 회전 (정, 역방향은 연결에 따라 기준이 달라짐)

 위 그림을 통해 왼쪽의 1번 채널을 살펴 보자.  Input 1으로(2번 핀,1A)  High 신호가 입력이 되면 VCC2(8번핀) 으로 연결된 별도 공급의 모터 전원이 3번핀(1Y)에서 나와서 DC motor를 거치고 6번핀(2Y) 으로 빠져 나가면서 모터를 (예를 들어)정방향으로 회전 시킨다.  이때 Input 2 (7번핀, 2A)는 Low 신호 여야 한다. 


 방향 회전 

 Input 1으로(2번 핀,1A)은 Low 신호 , Input 2 (7번핀, 2A)는 High 신호 입력이 되면 VCC2(8번핀) 으로 연결된 별도 공급의 모터 전원이 6번핀(2Y)에서 나와서 아까와는 반대 방향으로 DC motor를 거치고 3번핀(1Y)으로 빠져 나가면서 모터를 역방향 회전 시킨다.  


L293D IC는 이렇게 제어 가능한 H-브릿지 채널이 구조상 좌측에 한 개 , 우측에 한 개,  총 두 개로 구성되어진 IC이다.  

상세한 스팩과 설명을 아래에 이미지로 다시 정리하였다. 





▶ 실습 목표 :  

  모터를 한 쪽 방향으로 회전을 시키고, 가변저항 조절을 통해 회전하는 속도를 제어 하라 (정지~기기 최대 속도) 



실습 회로도면 :

  (이미지 클릭하면 확대 가능)






▶ 부대품 목록 : 아두이노 보드, 브레드 보드


▶ 부품 목록    : L293D IC, DC 모터, 10KΩ~500KΩ 사이 아무거나


▶ 실습 절차  : 

 1. 회로도를 참고하여 모터 와 부품들을 연결한다.
 
 2. 회로 연결에서 VCC1(IC의 16번 핀)에 아두이노의 +5V 단자를 연결하고, 모터 구동을 위한 VCC2(IC의 8번 핀)에는 모터 구동하기에 무리가 없는 4.5V~36V 사이의 별도 전원을 공급한다. 

 3. 회로의 모든 GND(그라운드, - 단자)는 하나로 연결 한다. 

 4. 속도 제어를 위해서는 PWM신호 출력이 가능한 아두이노 포트를 사용해야 한다. (디지털 포트중 '~'물결 무늬가 표시된 포트가 PWM 출력이 가능한 포트 이다)  따라서 IC의 1번핀(Enable 단자)에는 반드시 아두이노의 PWM 포트를 연결하도록 한다. (~3,~5,~6,~9,~10,~11 포트 중 아무거나 사용해도 무방) 

 5. 모터 연결선 +,- 두 가닥은 PWM 기능과는 무관 함으로 디지털 포트 중, 아무 포트에 연결 하도록 한다. 


▶ 프로그램 (코드& 설명) : 


int in1=7;  

int in2=8;

int MotorA=6;          // 모터 연결 핀을 정의한다.

int pwmA;


void setup() {

  pinMode(in1, OUTPUT);  // L293D의 1번 채널의 입력 1

  pinMode(in2, OUTPUT);  // L293D의 1번 채널의 입력 2

  pinMode(MotorA, OUTPUT);


}

void loop() {

  digitalWrite(in1, HIGH); 

  digitalWrite(in2, LOW);  

  // 정방향(in1=HIGH ,in2= LOW)

  // 역방향(in1=LOW ,in2= HIGH)

  // 모터선 연결에 따라 반대 방향이 될 수 있다.  

  

  pwmA = analogRead(A0)/4; // 속도 제어, 0~256 값을 넣기위해 '/4'함

  analogWrite(MotorA,pwmA); // 모터를 회전시킴 & 속도를 결정   

  delay(20);                         //출력값이 적용 될 수 있는 시간을 준다 

}


▶ 실행 영상 : 






▶ 아두이노 코드 다운로드 : 


DCmortorA.ino



반응형