L293D모터 드라이버를 사용한 아두이노 DC모터 속도, 각도제어 (feat. IC 사용법)
안녕하세요 공대 박형입니다.
오늘은 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를 통해 확인할 수 있습니다.
다음 시간에는 서보모터를 사용하는 방법에 대해 알아보겠습니다.
궁금한 부분은 문의주시면 답변드리겠습니다.
읽어주셔서 감사합니다.