초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

서보모터 각도 제어하기

2014-08-05 15:42:05

개요




아두이노는  다양한 응용 분야에 맞춰서 여러가지 모터를 사용할 수 있습니다.
모터의 종류에는 일반적으로 많이 쓰이는 DC 모터(직류 모터), 0-180도 혹은 360 까지 각도제어가 가능한 서보 모터,
일정한 각도와 힘으로 움직이는 스텝 모터 등이 있으며 이밖에도 토크와 구동전압, 작동 방식에 따른 다양한 모터가 있습니다.

그 중 서보모터는 각도를 정밀하게 제어할수 있는 장점을 이용하여
로보틱스 분야에서 물체의 관절부분에 많이 사용되고 있습니다.

 


 
먼저 서보 모터에 대해 알아보고자 아두이노와 서보모터를 이용한 프로젝트를 살펴보겠습니다.

 

 
출처 : 로봇 거미 - letsmakerobots -se.gu.a.ro

서보모터를 이용하여 거미의 움직임을 형상화한 거미 로봇을 만들수 도 있고,



 
출처 : 마이크로 컨트롤 RC 카 - cuyamaca.edu

움직이는 자동차의 앞바퀴 부분에 서보 모터를 적용하여 컨트롤러로 방향을 전환 할수 있습니다.
 

이 예제에서는 가변저항기가 돌아간 각도(저항값)에 따라 서보의 각도를 조절해 보겠습니다.

 

미리보기 동영상

 

 

 

 

부품목록

본 학습에는 총 5종류의 부품이 필요합니다.
NO 부품명 수량 상세설명
1 아두이노 우노 R3 1 아두이노
2 서보모터 1 서보모터
3 가변저항 1 저항
4 브레드보드 1 브레드보드
5 점퍼케이블 6 점퍼케이블

 

부품명 아두이노 우노 R3 서모 모터 기변 저항 브레드보드 점퍼케이블
파 트 x1 X1 X1 X1 X6

 

 

 

하드웨어 Making

회로도

 

 

브레드보드 레이아웃

 

 

 

소프트웨어 Coding

아래의 코드를 아두이노에 업로드 합니다.
 

/* 출처 : www.arduino.cc */
#include <Servo.h> //서보 라이브러리를 불러옵니다.

const int potentiometerPin = 0;//가변저항기에 연결한 아날로그 핀의 번호를 설정합니다.

Servo servo; 

void setup() {

servo.attach(9); // 서보를 사용하는 핀으로 디지털 핀9번을 설정합니다.

}

void loop(){

int value = analogRead(potentiometerPin); //가변저항의 값을 읽어들입니다.

int angle = map(value,0,1023,0,179);//읽어 들인 값을 0에서 179까지 변환 합니다.

servo.write(angle); //서보의 각도를 설정합니다.

delay(15); // 서보가 지정한 각도까지 움직이는 동안 대기

}

 

소프트웨어 설명
 

int angle = map(value,0,1023,0,179);//읽어 들인 값을 0에서 179까지 변환 합니다.


map함수는  map(value, 현재 최소값, 현재 최대값, 변경하고자 하는 최소 값, 변경하고자 하는 최대값)으로 구성되며,
아나로그 센서에서 읽어 온 값을 처리할때에 유용하게 사용됩니다.
이 예제 에서는 회전 각도가 Servo 라이브러리에서 지원하는 범위보다 작은 서보가 있을수 있는데,
사용 중인 서보가 맨 끝 값에 도달해서 떨림 현상을 보일 경우 그 현상이 사라질 때까지  map 함수의 출력 범위를 축소해 주시면 됩니다.
처음 시작점에서 떨림 현상을 보이는 경우에는 반대로 출력 범위 시작값을 높여줍니다.

 

 

 

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

서보모터, 가변저항, 아두이노