프로그래밍/아두이노

아두이노 쉽게 배우기 - 014. 부품설명-Micro Servo

panpro 2018. 5. 21. 09:00


아두이노가 없어도 

무료 아두이노 시뮬레이터 Tinkercad로 아두이노와 똑같이 실습해가며 아두이노를 배울 수 있습니다. 


오늘은 아두이노 14번째 시간으로 Micro Servo를 설명합니다. 


Micro Servo는 로봇 같은 걸 만들 때 사용하는데, 

각도를 조절할 수 있는 작은 모터에요.


micro servo에는 전원을 위한 2개의 핀과 시그널을 위한 핀, 총 3개의 핀이 있어요.


시그널을 주는 방법은 일종의 펄스 신호를 주는 거에요.


일정 기간 HIGH 신호를 주다가 

일정 기간 LOW 신호를 주는 방식으로 각도를 조절해요.


이런 거 아두이노에서는 무지 쉽게 할 수 있죠.



digialWrite(13, HIGH);

delay(1000);

digitalWrite(13, LOW);

delay(1000);



이렇게 1초동안 LED를 점등하다가 1초동안 끄는, 

그러니까 LED를 1초 간격을 꺼짐과 켜짐을 반복하는 그런 프로그램 만들 때 처럼


켜지고 꺼지는 간격만 조절하면 되요.


다만, 이게 굉장히 짧은 시간 동안 delay를 줘야 하기 때문에,

milisecond (1/1,000초)를 인수로 받는 delay 함수와 달리

더 짧은 microsecond(1/1,000,000초,   1/1,000 milisecond) 를 인수로 받는

delayMicrosceonds() 를 사용합니다. 



digialWrite(13, HIGH);

delayMicrosceonds(1500);

digitalWrite(13, LOW);

delayMicrosceonds(20000-1500);


이렇게 하면 1.5ms 동안 HIGH가 되다가 18.5ms 동안 LOW 가 나가게 됩니다. 


micro servo는 이런 식으로 각도를 조절할 수 있습니다. 



이런 식으로 각도를 조절할 수 있어요.


총 20ms (20/1000초) 를 주기로 하고,


처음에 1.5ms를 HIGH로 주고 나머지 18.5ms를 LOW로 주면 0도로 회전해요.


처음에 1.0ms를 HIGH로 주고 나머지 19.0ms를 LOW로 주면 왼쪽 90도로 회전해요.


처음에 2.0ms를 HIGH로 주고 나머지 19.0ms를 LOW로 주면 오른쪽 90도로 회전해요.


제일 가운데로 오게 되는 1.5ms 보다 작은 duty cycle을 주면 점점 왼쪽으로 가다가 1.0ms일 떄 완전히 왼쪽인 -90도로 회전하는 거죠. 반대쪽인 오른쪽도 마찬가지.



그런데 이런 식으로 각도를 대충 유추해서 쓰지는 않고,

Servo.h 파일을 사용해 훨씬 쉽게 정확한 각도로 이동시킬 수 있어요.


servo.write(45)


이렇게 하면 45도로 회전시킬 수 있어요. 간단하죠. ㅋ




시그널을 이용해 회전시키는 건 좀 복잡하지만

제공해주는 Servo 라이브러리를 이용하면 무지 쉽게 micro servo를 이용할 수 있습니다. 


아래 동영상 강의로 확인하세요.