본문으로 바로가기

  아두이노(Arduino) 중급 모터 1편 - 서보모터  


애드라이프의 아두이노 모든 포스팅 리스트를 보고 싶으신 분은 공지 읽어주세요.


참고로 중급편 부터는 응용편이 없습니다. 

왜냐하면 고급편에서 중급에 사용했던 부품의 응용편을 다룰 예정이기 때문이죠!!



안녕하세요. 애드라이프 입니다. 

아두이노 초급 포스팅을 마무리 하고 이제 중급 첫 포스팅을 서보모터로 시작합니다.

모터는 우리주변에 정말 많이 쓰이고 있는 부품중 하나인데요.

그럼 서보(Servo)모터는 무엇일까요?


가동범위가 제안되어있고 펄스 편조 신호에 따라 회전 각도를 정하는 모터입니다.

DC모터나 스탭핑모터와 달리 서보모터는 대부분 회전각도 범위가 제안되어있습니다.

이번에 제가 사용하는 서보 모터는 0~180도까지 움직이는 서보 모터를 사용합니다.


서보모터(Servo)

서보모터(Servo)

제가 사용할 서보 모터입니다.▲


회전 각도를 설정하는 원리는 간단히 설명하면 

펄스폭이 0.7ms인 신호를 보내면 0도

펄스폭이 1.5ms인 신호를 보내면 90도

펄스폭이 2.3ms인 신호를 보내면 180도

서보모터 펄스 간격별 각도


하지만 이번에도 라이브러리를 이용해서 손쉽게 서보모터의 각도를 조절 할 수있다.

회로도 또한 DC모터와 스텝핑 모터와는 다르게 모터드라이버가 필요없는 구성이라서 간단하다. ▼

아두이노와 서보모터 회로


지금 필자가 사용하는 서보모터는 상관없는 이야기 일지몰라도 기본적으로 모터들은 전류는 많이 잡아 먹기 때문에

USB포트만으로 공급되는 전류는 부족할 수 있습니다. 외부전원을 따로 연결해서 사용하는 것을 권장합니다.




바로 프로그램을 살펴보도록 하죠!

그 전에 서보모터 라이브러리를 추가해야겠죠? 라이브러리 추가법은 다음 포스팅을 참고해주세요.

[아두이노/개발환경 구축] - 아두이노IDE 개발환경 구축 5편 라이브러리 추가법(feat 헤더파일)


Servo.zip


라이브러리 만들어 주신분들 만세!!! 정말정말 간편하게 쓸 수 있도록 되어습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<Servo.h>                    //라이브러리 추가
int ServoMotorPin = 2;                //서보모터 Pulse핀을 아두이노 디지털핀 2번에 연결
Servo servo;
 
void setup() {
  servo.attach(ServoMotorPin);        //라이브러리에서 사용할 서보모터 pulse핀    
}
 
void loop() {
  int i;
  servo.write(0);                    //서보모터의 원하는 각도를 괄호 안에 쓰면됨
  delay(1000);                        //움직이는 시간을 고려해서 딜레이 선정
  for(i=0; i<180; i+=10)            //0도 부터 180도까지 10도씩 
  {
    servo.write(i);
    delay(10); 
  }
  delay(1000);
}
cs

프로그램의 전체적인 해석은 주석을 참고 부탁드립니다.


프로그램을 업로드하면 어떤 동작을 하는지 확인하고 이번 포스팅을 끝내겠습니다.


지금까지 아두이노(Arduino) 중급 모터 1편 - 서보(Servo모터) 포스팅이였습니다.

계속해서 도움되는 포스팅으로 찾아 뵙겠습니다.

by 애드라이프