【 아두이노 기초 】 #28 서보(Servo) 모터 제어 하기 1
이번 시간에는 서보 모터를 제어 해보도록 하자.
서보 모터는 RC카의 방향제어나 로봇의 관절제어 등 360도 회전보다는 반복 회전 이면서, DC 모터 보다는 정밀한 제어를 요하는 곳에 사용된다.
▶ SG90 및 각종 서보 모터
《 SG90 》
《 HS311FS5106R 》
《 FS5106R - 무한 회전 서보 모터 》
▶ 실습 목표 :
서보 모터를 0˚ 에서 180˚ 회전 시켜 보도록 하자. 서보 모터가 프로그래밍에 의해 끝에(180˚ ) 다다르면 자동으로 원위치 된다.
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
▶ 부대품 목록 : 아두이노 보드, 브레드 보드
▶ 부품 목록 : 서보모터(SG90), 전해 콘덴서 (10uf~100uf )-생략 가능
▶ 프로그램 (코드& 설명) :
#include <Servo.h> // 전용 서보 라이브러리 사용
#define servoPin 9 // 서보 모터핀을 지정
Servo servo; // 서보라이브러리 변수를 초기화한다
int pos=0; // 현재 각도를 저장할 변수를 지정한다
void setup() {
servo.attach(servoPin); // 서보모터 핀을 설정한다 (현재 9번 핀)
}
void loop() {
for(pos=0; pos < 180; pos +=1) {
servo.write(pos); // 서보모터의 각도를 1씩 증가
delay(50); } // 서보 모터의 각도가 변하는 것을 기다린다
}
※ 서보 모터는 입력 되는 신호의 펄스 폭에 따라 회전의 각도가 정해지는 방식의 모터이다. 위 그림 처럼 1.0ms에 가까울 수록 좌측 끝의 각도로 움직이고, 2.0ms에 가까울 수록 우측 끝으로 회전하게 된다. 1.5ms 이면 가운데 위치하고, 그 사이 사이 펄스 값에 따라 해당 위치로 회전을 하게 된다.
위 사진을 보면 하나의 신호 다음 이어지는 신호의 주기는 일정하지만, HIGH의 신호는 1ms~2ms 사이로 조절이 되어 HIGH 신호의 주기가 조절이 되는 되는 것으로 이 차이를 이용해 서보모터의 각도가 정해지는 것이다.
PWM 파형의 폭이 1ms~2ms 사이일 때 서보모터가 0도~180도 사이로 움직이게 된다.
▶ 실행 영상 :
▶ 아두이노 소스 코드 다운로드 :
'아두이노 > 1. 아두이노기초' 카테고리의 다른 글
【 아두이노 기초 】 #30 서보(Servo) 모터 제어 하기 응용 (0) | 2018.11.12 |
---|---|
【 아두이노 기초 】 #29 서보(Servo) 모터 제어 하기 2 (0) | 2018.11.07 |
【 아두이노 기초 】 #27 DC 모터 제어 하기 7 (RC카 모터구동) (0) | 2018.10.17 |
【 아두이노 기초 】 #26 DC 모터 제어 하기 6 (2개의 DC모터) (0) | 2018.10.15 |
【 아두이노 기초 】 #25 DC 모터 제어 하기 5 (0) | 2018.10.10 |