서보(Servo)라는 용어는 추종한다, 따른다라는 뜻을 가지고 있으며,
서보모터는 사용자가 원하는 속도, 각도로 동작하는 모터를 일컫습니다.
아두이노에서 주로 사용하는 서보모터는
위 사진과 같이 3pin으로 구성되어 있으며, 0~180도로 동작합니다.
이외에 0~360도를 동작하는 연속 회전 서보모터도 있습니다.
PWM 핀의 경우 주황, 노랑, 흰색등 제조사마다 조금씩 다릅니다.
GND핀도 갈색 혹은 검정색일 수 있습니다.
서보모터에 무게를 달아서 토크가 많이 필요하면
아두이노의 출력전압이 버티지 못합니다.
이러한 경우에는 서보모터 전원은 외부에서
파워서플라이, 배터리 등을 이용하여 전원을 주어야 합니다.
준비물: 아두이노 우노, 브레드보드, 가변저항 10kΩ 1개, 서보모터(SG-90)
/*
서보모터 테스트
http://www.devicemart.co.kr/
*/
#include <Servo.h> // 서보모터 라이브러리 사용
Servo myservo; // 서보모터 객체를 myservo로 생성
int potentiometer = A0; // 가변저항 A0에 연결
int val; // val 변수 선언
void setup()
{
myservo.attach(9); // 서보모터 9번핀에 연결
}
void loop()
{
val = analogRead(potentiometer); // 가변저항에서 읽은 아날로그 값을 변수 val에 저장
// map 함수를 이용해 아날로그값 0~1023을 0~180으로 조정한 후 val에 저장
val = map(val, 0, 1023, 0, 180);
myservo.write(val); // val 값에 따라 서보모터 이동
delay(15); // 서보모터가 움직일 시간 15ms 딜레이
}
|
소스 코드중에
-myservo.attach() 함수는 myservo객체에 서보 모터 핀을 연결 하는 함수 입니다.
문법은 servo.attach(pin number,min,max)로 사용되고 min과 max는 안 넣어도 됩니다.
min 과 max의 의미는 서보의 최대 각도에 해당하는 펄스폭으로 설정하지 않을경우
각각 기본으로 544,2400 마이크로 초로 설정됩니다.
-myservo.write() 함수는 myservo객체에 서보 모터의 각도값을 넣어주는 함수 입니다.
문법은 servo.write(angle)로 사용되고,
각도 값을 넣어주면 서보모터가 해당 값으로 움직입니다.
만약 360도 회전하는 연속 회전 서보모터일 경우 서보의 속도를 설정합니다.
0은 한방향 최고속도, 180은 반대방향 최고속도 90은 정지입니다.
-map()함수는 숫자를 한 범위에서 다른 범위로 변환하는 함수로,
문법은 map(value, fromLow, fromHigh, toLow, toHigh)입니다.
fromLow의 값은 toLow로 변환되고,
fromHigh의 값은 toHigh로 그 사이의 값들은 비례적으로 변환됩니다.
아래 링크는 서보모터 구매링크입니다.
http://www.devicemart.co.kr/goods/catalog?code=001500010005
감사합니다.
아래 링크는 서보모터 구매링크입니다.
http://www.devicemart.co.kr/goods/catalog?code=001500010005
감사합니다.
0 댓글