아두이노 DC 모터 1

 





아두이노 프로젝트에서 DC모터는 매우 유용하게 사용할 수 있는 액추에이터 중 하나 입니다.
RC CAR나 탱크, 선풍기, 드릴등 회전력이 필요한 다양한 콘텐츠를 만들 수 있습니다.



DC모터의 작동 원리

DC모터는 직류 (전기 에너지)를 기계적 에너지로 변환하는 장치로 코일에 전류가 흐르면 코일에 자기장이 만들어지고 그 자기장과 코일 양 쪽의 영구자석으로부터 힘을받아 F 방향으로 움직여서 회전을 하게 됩니다. +, - 연결을 반대로 하면 모터의 회전 방향도 반대가 됩니다.  아두이노 프로젝트에서 DC 모터를 사용하고자 할 때는 별도의 드라이버나 IC 칩을 사용해야 합니다. 그렇지 않을 경우 아두이노 보드에 손상을 줄 수 있습니다. 

아두이노 프로젝트에서 DC모터를 안정적으로 구동하기 위한 드라이버를 만들어 보도록 하겠습니다, 드라이버 제작에는 다이오드, 트랜지스터, 저항등의 부품이 필요합니다.

 

 

다이오드

 


 

 

[출처] DC모터(1)|작성자 무당벌레

 




다이오드는 한쪽 방향으로만 전류가 흐르도록 제어하는 반도체 소자를 말합니다. DC모터 드라이버회로에서는 역기전력에 의한 트랜지스터의 손상을 막기 위한 용도로 사용됩니다.

 

역기전력이란 트랜지스터에 전류가 흐르고있으면 모터가 회전하고 모터의 코일에 에너지가 쌓이게 되는데, 트랜지스터에 전류가 흐르지않으면 반대로 흐르는 전류가 발생하게 되는데 이때 발생하는 전류를 역기전력이라고 합니다. 이러한 역기전력에 의해 트랜지스터가 파괴되기도 합니다.

[출처] DC모터(1)|작성자 무당벌레

 



트랜지스터
트랜지스터는 증폭, 스위치 역할을 하는 반도체 소자입니다.

크게 PNP형과 NPN형으로 나눌 수 있습니다. 이 포스팅에서 사용한 KTC3198은 NPN형 트랜지스터입니다.

DC모터의 사용 전력은 아두이노의 핀에서 사용되는 전력보다 크기때문에 DC모터를 제어하려면 아두이노 핀에서 나오는 전력을 증폭시켜 사용해야 합니다.

[출처] DC모터(1)|작성자 무당벌레

 


트렌지스터의 증폭 원리



V1으로 명명한 배터리를 이용해 NPN트랜지스터의 Base부분에 +, Emitter부분에 - 를 걸어주면 Emitter에 있던 전자들이 Base쪽으로 움직입니다. 물론 트랜지스터에 따라 Emitter, Collector, Base의 위치가 다를 수 있으니 데이터시트를 반드시 확인한 후에 사용하시기를 바랍니다.

이 때 V2를 위와 같이 연결하면 Base의 간격이 좁기 때문에 Emitter에서 Base로 이동하던 전자들이 Collector로 튕겨져 이동하게 되고 V2에 Emitter에서 넘어온 전자와 Collector의 전자들이 V2로 흐르게 됩니다.


결과적으로 V1의 작은 전류로 V2에 흐르는 전선에 많은 전류를 흐르게 할 수 있습니다.

아래 영상을 보시면 이해하는데 도움이 될 것입니다.

 

 

 

[출처] DC모터(1)|작성자 무당벌레

회로구성



DC모터 구동을 위한 회로 구성은 위와 같습니다, 다시한번 정리하자면 트랜지스터의 Emitter, Collector, Base를 잘 확인하고 연결하셔야 하며, 회로에 트랜지스터를 사용한 이유는 트랜지스터의 증폭작용을 이용하여 아두이노에서 나오는 적은 전력으로 DC모터를 구동시키기 위함이고, 다이오드를 사용한 이유는 DC모터에서 방출되는 역기전력으로부터 트랜지스터를 보호하기 위함입니다.


 

 

int motorPin = 9;

 

void setup() {
   pinMode(motorPin, OUTPUT);
   Serial.begin(9600);
   while (! Serial);
   Serial.println("Speed 0 to 255");
}

 

void loop() {
   if (Serial.available()) {
      int speed = Serial.parseInt();
      if (speed >= 0 && speed <= 255) {
         analogWrite(motorPin, speed);
         Serial.println(speed);
      }
   } 

 

} 


아두이노 9번 핀에 연결 된 DC모터를 시리얼모니터를 이용해 모터속도를 제어해보는 코드입니다.

모터의 속도를 제어하려면 전류의 양을 조절해주면 됩니다. 아두이노로 전류의 양을 조절해야 하므로 PWM제어가 필요합니다.

위 코드에선 PWM제어를 위해 PWM핀인 9번핀을 사용하였습니다.

 

 

 

 

위의 드라이버회로를 이용하면 DC모터의 회전속도를 안정적으로 제어 할 수 있지만 DC모터의 회전 방향을 바꾸려면 DC모터 리드선에 +, - 극을 바꾸어주어야 한다는 불편한 점이 있습니다. 그러한 불편함을 해소하기 위해 H-bridge를 사용 할 것인데요.

H-bridge를 사용한 모터제어는 다음 포스팅에서 알아보겠습니다.

[출처] DC모터(1)|작성자 무당벌레

 

[출처] DC모터(1)|작성자 무당벌레

 


[출처] DC모터(1)|작성자 무당벌레

 



 

  •  7,895
  •  0
  •  0

댓글을 남겨 주세요.