【 아두이노 기초 】 #29 서보(Servo) 모터 제어 하기 2
지난 시간(http://rasino.tistory.com/146)에는 서보 모터를 한 방향으로만 180도를 움직여 보았다. 명령에 의해 180도가 움직인 후에는 반복 루프문에 의해 자동으로 0도 위치로 되돌아 온 후, 다시 180도로 제어되는 모습을 보았다.
이번 시간에는 서보모터의 자동 감김이 아니라 반대방향으로도 제어를 해볼 것이다. 즉 처음 시계방향으로 180도 회전 후, 다시 반시계방향으로 180도 회전하도록 프로그래밍을 해보자.
▶ SG90 및 각종 서보 모터
《 SG90 》
《 HS311FS5106R 》
《 FS5106R - 무한 회전 서보 모터 》
▶ 실습 목표 :
서보 모터를 0˚ 에서 180˚ 회전 시킨 후 다시 반대방향으로 180˚ 회전 하도록 프로그래밍 해보자.
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
▶ 부대품 목록 : 아두이노 보드, 브레드 보드
▶ 부품 목록 : 서보모터(SG90), 전해 콘덴서 (10uf~100uf )-생략 가능
▶ 프로그램 (코드& 설명) :
#include <Servo.h> // 전용 서보 라이브러리 사용
#define servoPin 9 // 서보 모터핀을 지정
Servo servo; // 서보라이브러리 변수를 초기화한다
int angle=0; // 서보모터 각도 변수 설정과 위치를 0˚ 초기화
void setup() {
servo.attach(servoPin); // 서보모터 핀을 설정한다 (현재 9번 핀)
}
void loop() {
for ( angle=0; angle < 180; angle++) { // 0도~180도 까지 1도씩 증가
servo.write(angle);
delay(30); // 서보 모터의 각도가 변하는 것을 기다려준다
}
for ( angle=180; angle > 0; angle--) { // 180도~0도 까지 1도씩 감소
servo.write(angle); // 서보모터의 각도 증가
delay(30); // 서보 모터의 각도가 변하는 것을 기다려준다
}
}
※ 서보 모터는 입력 되는 신호의 펄스 폭에 따라 회전의 각도가 정해지는 방식의 모터이다. 위 그림 처럼 1.0ms에 가까울 수록 좌측 끝의 각도로 움직이고, 2.0ms에 가까울 수록 우측 끝으로 회전하게 된다. 1.5ms 이면 가운데 위치하고, 그 사이 사이 펄스 값에 따라 해당 위치로 회전을 하게 되는데, 1.0ms~2.0ms 타이밍이 정확히 일치 하는 것은 아니니 회로를 구성해놓고 실험을 통해서 확인 하면 되겠다.
▶ 실행 영상 :
▶ 아두이노 소스 코드 다운로드 :
'아두이노 > 1. 아두이노기초' 카테고리의 다른 글
【 아두이노 기초 】 #31 스텝(Step Motor)모터의 이해 (9) | 2018.11.14 |
---|---|
【 아두이노 기초 】 #30 서보(Servo) 모터 제어 하기 응용 (0) | 2018.11.12 |
【 아두이노 기초 】 #28 서보(Servo) 모터 제어 하기 1 (0) | 2018.10.30 |
【 아두이노 기초 】 #27 DC 모터 제어 하기 7 (RC카 모터구동) (0) | 2018.10.17 |
【 아두이노 기초 】 #26 DC 모터 제어 하기 6 (2개의 DC모터) (0) | 2018.10.15 |