아두이노

모터 제어하기

Developer성현 2023. 5. 7. 21:05

L293D 모터 드라이버를 사용한 모터제어 실습

 

모터는 종류에 따라 공급해줘햐 하는 전압과 전류량이 다릅니다.

하지만 아두이노는 5V에 각 핀마다 최대 출력할 수 있는 전류가 약 20mA 정도로 낮습니다.

모터가 5V에 20mA 이하의 전류로 구동할 수 있다면 바로 연결해도 문제없지만 대부분의 모터는 많은 양의 전류가 필요하며 전압또한 5V 이상 공급을 해줘야 하는 모터들이 대부분입니다. 만약 이런 모터들을 핀에 바로 연결한다면 모터가 구동이 안될 뿐더러 모터는 자기가 필요한 량의 전류를 가져오려고 하기 때문에 아두이노한테 무리가 생기게 되서 MCU가 망가질 수 있습니다. 그래서 아두이노로 모터를 제어하기 위해서는 트렌지스터를 사용해서 외부에서 모터에 맞는 전압과 전류를 공급해주어야 합니다. 하지만 트렌지스터를 조합해서 모터를 양방향까지 더 쉽고 2개를 동시에 제어할 수 있도록 만들어진 L293D 모터 드라이버IC 가 있습니다. 저의는 이것을 사용해서 모터를 제어해보겠습니다.

 

 

회로도

 

7_1. 모터방향 제어하기

int M_L = 8, M_R = 9;

void setup() {
  pinMode(M_L, OUTPUT);
  pinMode(M_R, OUTPUT);
}

void loop() {
  digitalWrite(M_L, true);//5V 출력
  digitalWrite(M_R, false);//0V 출력
  
  delay(3000);
  
  digitalWrite(M_L, false);//0V 출력
  digitalWrite(M_R, true);//5V 출력
  
  delay(3000);
}

L293D 에 INPUT1, INPUT2 번 이 모터의 각 핀에 전류를 제어하는 핀 입니다. INPUT1에 1을 넣어주면 IC에 공급되는 전압이 OUTPUT1번 핀에 출력이 됩니다. INPUT2, OUTPUT2또한 동일하게 구동이 되며 두 핀중 한곳이 1을 출력하고 다른 한 핀이 0을 출력하면 전압차로 전류가 흐르게되 모터가 구동됩니다. 만약 두 핀 모두 1 또는 0을 넣게 된다면 전압차가 생기지 않아 전류가 흐리지 않게 되서 모터가 구동하지 않습니다.

 

위 코드에서는 8번 핀에 1을 출력하고 9번 핀에 0을 3초동안 출력시키고 그 뒤에 8번핀에 0을 출력하고 9번핀에 1을 출력시키면서 모터의 회번 방향을 바꾸는 코드 입니다.

 

 

아래 영상은 실제로 구동되는 영상 입니다.

현재 가지고 있는 모터가 예전에 라인트레이서를 만들면서 사용한 모터밖에 없네요ㅠㅠ

그래도 감속기어가 붙어 있어서 회전방향이 바뀌는게 잘 보이네요.

 

추가로 중요한것은 L293D 을 사용한다고 해도 모든 모터를 다 제어할 수 있는건 아닙니다. L293D 칩도 허용 전압과 전류가 있기 때문에 모터의 사양 특히 토크가 최대일 때 필요한 전류를 확인 해야 합니다.

모터는 아무것도 없이 혼자 돈다면 적은 전류만으로도 구동할 수 있지만 모터에 기어가 달려 있거나 바퀴를 달아 RC카를 만들경우 회전할때 반발력이 생기기 때문에 그만큼 더 많은 전류를 공급해줘야 합니다.

L293D 칩은 최대 36V까지 제어할 수 있고 각 체널당 최대 출력전류가 600mA 라고 합니다. 하지만 연결할때는 적어도 35V 이하에 500mA 이하로 구동되는 모터만 연결하는것이 좋습니다. 모든 부품은 +- 오차가 있기 때문에 최악의 경우를 생각하고 회로를 설계해야 합니다.