Pi byDreamy postedJul 11, 2017

아두이노 (Arduino)로 서보모터 (SG90) 제어

?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

+ - Up Down Comment Print

출처 : http://blog.naver.com/makist2015/220404917459




 

Micro Servo Motor SG90

 

%BC%AD%BA%B8%B8%F0%C5%CDSG90.jpg?type=w2

Micro Servo SG90

 

서보모터는 로봇의 방향제어, 관절제어 등에 많이 사용 됩니다.

방향 제어가 가능한 자동차를 만들거나, 로봇팔 등을 만든다면 꼭 사용해야하는 부품이라고 생각할 수 있습니다.

 

서보모터는 '연속회전 서보모터'와 '표준 서보모터'가 있습니다.

표준서보모터는 회전범위가 0~180도로 제한 되어 있고, 연속회전 서보모터는 360도 무한회전이 가능한 모터 입니다.

실습에 사용된 서보모터는 표준서보모터로 회전각이 0~180도로 제한되어 있습니다.(SG90은 5도 ~ 175도 이내 사용을 권장합니다.)

 

SG90을 분해 하면, 모터의 힘을 높여주기 위한 감속기어와, 모터의 회전각도를 판단하기위한 가변저항이 들어 있습니다.

즉, 저항값으로 모터의 기준점이 현재 어느 각도에 위치해 있는지를 알 수 있습니다.

 

서보모터(SG90)은 세개의 선이 나와 있는데,

- 노란색 = 제어신호

- 빨간색 = Vcc

- 갈색(또는 검정색) = GND

를 연결됩니다. 

 

마이크로 서보모터 SG90은 3.5V ~ 7.2V의 전압을 사용합니다.

회전(동작) 속도는 4.8V의 전압에서 무부하시 0.12초에 60도를 회전합니다.

토크는 18kg/cm 입니다. (가격대비 높은 성능을 자랑하는 제품으로 많이 사용되는 제품 입니다.)

※마이크로 서보모터: 서보모터 중 크기가 작은 소형 모터를 마이크로 서보모터라고 부릅니다.

 

SG90에 대한 조금더 자세한 내용은 데이터시트를 찾아보기실 권장 합니다.

 

서보모터 SG90에 대해서는 어느정도 알아보았구요~

서보모터 제어를 위한 Servo 라이브러리에 대해서 알아보겠습니다.

 

 

 

Servo 라이브러리

 

아두이노 IDE에는 서보모터 제어를 위한 Servo 라이브러리가 기본으로 들어 있습니다.

아두이노 우노에서 Sevo 라이브러리는 최대 12개까지의 서보모터를 제어 할 수 있습니다.

아두이노 메가는 최대 48개의 서보모터를 사용할 수 있습니다.

 

주의 할 점은

아두이노 우노에서 Servo 라이브러리를 사용하면 디지털 9번, 10번 핀에 PWM 출력"analogWrite()"을 사용 할 수 없습니다.

아두이노 메가에서는 서보모터 12개까지는 PWM을 사용 할 수 있으나, 그 이상의 모터 사용시에는 11번, 12번 핀의 PWM출력을 사용 할 수 없습니다.

만약 해당 핀의 PWM을 사용하기 위해서는 detach() 함수를 사용해서 서보모터 연결을 해제해야 합니다.

(가능하면 다른 핀 사용을 권장 합니다~^^)

 

Servo 라이브러리에서 제공하는 함수는 다음과 같습니다.

 

- attach(pin, min, max) : 서보모터 초기화(서보모터를 연결 할 때 사용합니다.)

- pin : 데이타가 입력되는 핀번호

- min : 0도를 가르키는 펄스 폭(default = 544마이크로초)

- max : 180도를 가르키는 펄스 폭(default = 2400마이크로초)

 

- write(value) : 서보모터의 각도를 제어(연속서보모터의 경우는 속도 0=정방향 최고속, 180=역방향 최고속, 90=정지)

- read() : 서보모터의 현재각도를 읽어들입니다.(0~180)

- attached() : 서보모터가 연결 되어 있는지를 판단할 때 사용(연결=true, 연결이 안되어 있으면 false)

- detach() : 서보모터의 연결을 해제합니다. (해제하면 9번,10번핀에 analogWrite 함수를 사용 할 수 있습니다.)

 

 

 

Servo 라이브러리도 대충~ 읽어봤다면, 아두이노에 서보모터 SG90을 연결 해 봅니다.

 

아두이노 연결 회로

 

%BE%C6%B5%CE%C0%CC%B3%EB_%C8%B8%B7%CE%B1%B8%BC%BA.PNG?type=w2

SG90 아두이노 연결

 

 

SG90의 선을 아두이노와 연결합니다.

- 노란색 = digital 5pin

- 빨간색 = 5V

- 갈색(또는 검정색) = GND

 

 

PC와 USB로 아두이노를 연결하고 스케치를 아래와 같이 작성 합니다.

 

 

아두이노 스케치

%BE%C6%B5%CE%C0%CC%B3%EB_%BD%BA%C4%C9%C4%A1_SG90.PNG?type=w2

 

 

위에서 설명한 Servo 라이브러리는 스케치 가장 윗 부분(1번줄)에서와 같이 

#include <Servo.h> 명령을 이용해서 호출 할 수 있습니다.

 

2번줄 Servo servo; 는 서보모터를 컨트롤 하기위한 명령어를 지정해 주는 것이라고 생각하면 쉽습니다.

그냥 Servo로 사용해서 제어 시 오류가 납니다.

 

작성을 완료 했으면 디버깅(확인) 후 업로드 합니다.

 

 

 

제어하기

 

업로드가 완료되면 시리얼 모니터를 엽니다.

 

스케치가 업로드 되면 가장먼저 서보모터가 setup() 함수에 'servo.write(90)'에 의해서 중심을 찾습니다.

중심을 찾으면, SG90구입 시 동봉된 십자모형의 연결부품을 아래 사진처럼 서보모터에 연결 합니다.

20150629_150914.jpg?type=w2

 

(입력된 각도에 따라서 얼만큼 움직이는지 확인하기가 좋습니다.^^)

 

그리고,

시리얼모니터 입력폼에 0도를 입력 후 엔터를 쳐 보세요.

서보모터가 0도로 회전합니다.

시리얼모니터 입력폼에 180도를 입력 후 엔터를 쳐 보세요.

서보모터가 180도로 회전합니다.

 

 

벨런싱하기

 

만약 서보모터가 0도에서 드드득하면서 진동을 한다면, 'int min_value = 544' 값을 조금씩 높여줍니다.

만약 서보모터가 180도에서 드드득하면서 진동을 한다면, 'int max_value = 2400' 값을 조금씩 낮춰줍니다.

 






나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5