본문 바로가기

Arduino/Arduino 기초과정

[아두이노 기초편 8] 서보모터제어

여러가지 세밀한 각도를 움직일 상황이나 다양한 회전 움직임을 만들때 사용하는 서보모터를 아두이노로 제어해보는 방법에 대해 알아보려한다.


일단 서보모터가 사용하는 방식은 PWM이라는 방식을 사용 한다.

PWM이란?  :Pulse Width Modulation 의 약자이며

PWM 제어라고 하면 펄스의 폭을 조정하여 부하에 전력의 크기를 조절하는 것이다.

내장된 타이머카운터를 이용하는 것이 보통이다.

 

PWM의 장점은 기존의 구조에서 많은 변화를 주지않고 프로그래밍만을 통하여 손쉽게 제어가 가능하다는 것과, 타이머카운터를 사용할 경우, 모터에 PWM신호를 주기위해 프로세서에서 분담되는 작업의 량이 대폭 줄일 수 있다는 것이다. 그리고 후자를 이해하기 위해서는 타이머/카운터의 기능과 사용법을 알고있어야한다. 또한 전압이나 전류를 분배 해주기 위한 저항회로를 따로 설치하지 않아도 되므로 좀 더 좋은 효율을 기대할 수 있다.


아두이노에서 이런 PWM방식을 제어하기 위해서 analogwrite() 함수를 사용하게 되는데 아두이노에서 제공하는 이 함수는 ()안에 0부터 255범위의 숫자중 하나의 값을 넣을 수 있게 만들어져있다.

왼쪽 그림과 같게 0을 넣을 경우에는 펄스의 %가 0%이고 255인경우에는 펄스의 %가 100%인 것으로 인식하게 된다. 

여기까지 대략 PWM방식에 대하여 알아보았고 이를 이용하는 서보모터를 알아보려한다.




이런 PWM방식을 사용하는 서보모터를 사용하였는데 우리가 사용한 서보모터는 표준RC서보모터로서 회전각은 180도 이고 핀은 3개로 구성되어있다. Vcc, GND 와 디지털 입력 핀으로 이루어져있다.이 모터의 장점은 DC모터와는 달리 세밀한 조절이가능한 모터이며 원하는 각도를 최대0.5도 정도 조절할 수 있다.



여기서 잠깐!) 서보모터는 기본적으로 PWM방식을 사용하여 원래의 경우에는 analogwrite()함수를 써야하지만 서보모터의 경우에는 보편적으로 많이 사용하는 하드웨어로서 이미 아두이노측에서 함수로 만들어 놓았기 때문에 myservo.write() 라는 함수를 사용하게 되면 내부적으로 analogwrite()로 변환되어 들어가게 되므로 작동시킬수 있다.


서보모터를 사용하는 기본적인 아두이노 예제

이렇게 서보모터를 제어하는 기본적인 내용은 마치기로 하고 추가적으로 processing 과 연동하여 마우스가 움직인 만큼 서보모터를 움직일수 있는 과정을 올릴예정이다