IT 기술 정보/아두이노 복사하고 따라하는 예제

L293D모터 드라이버를 사용한 아두이노 DC모터 속도, 각도제어 (feat. IC 사용법)

일상 박형 2021. 3. 28. 08:30

안녕하세요 공대 박형입니다.

 

오늘은 L293D모터 드라이버 IC를 사용하여 DC모터의 방향과 속도를 제어해보겠습니다.

 

코드부터 보시죠.

 

const int enable = 11;                 // 속도 조정핀

const int left = 6;                       // 방향 조절핀 1

const int right = 5;                     // 방향 조절핀 2

int speed = 0;                                      // 속도 조절 변수

int direction = 0;                       // 방향 조절 변수

 

void setup()

{

  Serial.begin(9600);

  pinMode(enable,OUTPUT);

  pinMode(left,OUTPUT);

  pinMode(right,OUTPUT);

  Serial.println("Program start\nRight direction\n");

}

 

void loop(){

 

  if ( direction == 0 ){     // 방향 변수가 0이면 오른쪽 회전

   

    analogWrite(enable,speed);    // enable핀(D11)에 아날로그 0~255값 출력

    digitalWrite(right,HIGH);        // D5핀을 HIGH D6핀을 LOW

          digitalWrite(left,LOW);

         

  }

  else if ( direction == 1 ) {          // 방향 변수가 1이면 왼쪽 회전

   

    analogWrite(enable,speed);

          digitalWrite(left,HIGH);

          digitalWrite(right,LOW);

   

  }

 

  speed++;                  // 스피드 변수를 1씩 증가시켜 모터 속도를 증가시킴

 

  if ( speed == 256 ){      // 스피드 변수가 256이되면 (PWM최대값 초과)

    speed = 0;              // 속도를 0으로 초기화

    direction = !direction;           // 방향 변수를 토글(0이면 1으로, 1이면 0으로)

    Serial.println("Change direction");

    if ( direction == 0 )   Serial.println("Direction = Right\n");

    else Serial.println("Direction = Left\n");

  }

 

  delay(20);

}

 

 

동작 영상입니다.

 

프로그램이 동작하면 모터가 오른쪽으로 회전하기 시작합니다. 시간이 지날수록 속도가 증가되고 최대속도가 되었을 때 속도를0으로 초기화하고 회전 방향을 바꾸는 동작을 반복하는 프로그램을 완성했습니다.

 

L293D모터 드라이버 IC를 사용하면 모터의 방향을 조절할 수 있고 속도까지 제어할 수 있습니다. 그리고 하나의 L293D로 2개의 모터까지 제어할 수 있습니다.

 

L293D의 핀맵입니다. 그림에서 볼 수 있듯 1~7번핀으로 하나의 모터를 제어하고 9~15번핀으로 모터를 제어할 수 있어 총 2개의 모터까지 제어할 수 있습니다.

 

ENABLE핀은 아두이노에서 PWM제어가 가능한 핀에 연결하여 아날로그 데이터를 입력합니다.

 

PWM제어가 가능한 아두이노 핀은 engineerparkbro.tistory.com/10?category=883476 에서 확인할 수 있습니다.

 

INPUT 1,2번 핀은 디지털 신호를 인가하여 회전 방향을 조절할 수 있습니다. INPUT 1에 HIGH, INPUT2에LOW를 인가하면 1번 방향으로 회전하고 INPUT 1에 LOW, INPUT2에HIGH를 인가하면 2번 방향으로 회전합니다.

 

OUTPUT 1,2번 핀은 모터의 +,-에 연결합니다. L293D의 OUTPUT핀을 모터의 어느 방향에 연결하느냐에따라 회전 방향이 달라질 수 있으니 주의해서 연결하시기 바랍니다.

 

 

IC칩과 연결할 떄는 IC칩의 핀에 정확히 연결해야합니다. 하지만 가끔 위아래 혹은 좌우가 헷갈려 반대로 연결하는 상황이 발생할 수 있습니다. 모든 IC칩은 이러한 문제를 방지하기위해 방향을 알 수 있는 표시를 하고 제작됩니다.

 

그림에서 동그라미 친 부분과 같이 한쪽 면에 움푹 파인 부분이 있습니다. 이 부분을 기준으로 위에서 바라본 모습을 상상한다면 핀맵을 쉽게 이해할 수 있습니다.

 

L293D에대한 자세한 내용은 engineerparkbro.tistory.com/24 에서 Datasheet를 통해 확인할 수 있습니다.

 

 

다음 시간에는 서보모터를 사용하는 방법에 대해 알아보겠습니다.

 

궁금한 부분은 문의주시면 답변드리겠습니다.

 

읽어주셔서 감사합니다.