Sg90 서보 모터 무한회전 - sg90 seobo moteo muhanhoejeon

공지 목록

공지글

글 제목작성일

(8)

공지 아두이노를 하면서 실수하기 쉬운 6가지 알아보기 [아두이노 강좌]

2017. 4. 26.

(3)

공지 라즈베리파이를 이용한 스마트 미러 제작

2017. 5. 12.

무한회전(360°) 서보모터 사용하기! / 서보모터가 멈추질 않을 때!

Sg90 서보 모터 무한회전 - sg90 seobo moteo muhanhoejeon
오픈랩2020. 4. 8. 11:10

서보모터에는 각도 제한이 있는 서보모터무한회전이 가능한 서보모터 이렇게 두 가지 종류가 있습니다. 각도 제한이 있는 서보모터의 경우 쉽게 사용이 가능합니다만, 무한회전 서보모터는 회전하지 않을 때의 상태를 설정해야 합니다. 무한회전 서보모터는 90° 신호가 들어오면 멈추고 멀어지면 회전해야 합니다. 이 때문에 DC모터 드라이버 없이 한가닥의 선으로 정/역회전을 수행할 수 있습니다.

그러나, 만약 설정이 정확하게 되지 않는다면 아래와 같이 서보모터가 멈추지를 않게 됩니다 ㅜㅜ

Sg90 서보 모터 무한회전 - sg90 seobo moteo muhanhoejeon

Sg90 서보 모터 무한회전 - sg90 seobo moteo muhanhoejeon

Sg90 서보 모터 무한회전 - sg90 seobo moteo muhanhoejeon

위와 같이 서보모터가 계속 회전하는 걸 막기 위해 우선 초기 세팅이 필요합니다. 아두이노에 아래 코드를 업로드한 후 서보모터를 아두이노에 연결해 주세요. 모터가 돌기 시작하면 옆면에 있는 가변저항을 드라이버를 이용해 돌려 초기 세팅을 하면 됩니다.

#include <Servo.h> Servo myservo; void setup() { myservo.attach(9); myservo.write(90); // 정지 } void loop() { }

위의 영상과 같이 드라이버를 이용해 내부의 가변저항을 돌리다 보면 모터가 멈추게 됩니다. 이제 무한회전 서보모터의 설정이 완료되었습니다! 아래는 {정지 3초, 정회전 3초, 정지 3초, 역회전 3초}를 반복하는 예제입니다. 무한회전 서보모터를 이용하여 다양한 프로젝트를 진행해 보세요!

#include <Servo.h> Servo myservo; void setup() { myservo.attach(9); } void loop() { myservo.write(90); // 정지 delay(3000); // 3초간 지속 myservo.write(80); // 역회전 delay(3000); // 3초간 지속 myservo.write(90); // 정지 delay(3000); // 3초간 지속 myservo.write(100); // 정회전 delay(3000); // 3초간 지속 }

이번에 함께 다룰 아두이노 부품은 서보모터 SG90 입니다.

이 모터는 0도~180도 회전이 가능하고, 회전 위치를 제어할수 있어 회전각도나 회전속도를 제어 할수

있습니다.

SG90 모터를 제어하기 위해서는 PWM신호를 사용해야 합니다.

핀 맵은 SIG , Vcc , GND 입니다.

- 회로 연결도

GND - GND

Vcc - 5v

SIG - PIN 6번으로 연결했습니다

- 예제 소스 코드

#include <Servo.h> // Servo 라이브러리 헥사 선언

Servo myservo; // 서보모터 선언

int pos = 0; // 모터 위치를 확인하기 위해 변수를 선언

int servoPin = 6; // 모터 제어를 위해 6번핀(PWM) 으로 선언

void setup() {

pinMode (servoPin, OUTPUT); // 모터 제어핀을 출력으로 설정

myservo.attach(6); // 모터의 신호선을 6번핀에 연결

}

void loop() {

// 서보모터를 0도~180도까지 돌려보기 위해 for문을 사용합니다 (for문은 조건이 맞다면 무한반복이

가능합니다)

for (pos = 0; pos <= 180; pos += 1) // 위에 변수를 선언한 pos는 0, 180도보다 작다면 , 1도씩 더하고

{

myservo.write(pos); // 서보모터를 pos 각도로 움직여라

delay(100); // 0.1초의 딜레이 ( 1초 = 1000 )

}

for (pos = 180; pos >= 0; pos -= 1) // pos가 180이면, 0도보다 크다면 , 1도씩 빼라

{

myservo.write(pos); // 서보모터를 pos 각도로 움직여라

delay(100); // 0.1초의 딜레이 ( 1초 = 1000 )

}

}

※ SG90 서보모터를 동작하기 위해 라이브러리가 필요한데 아두이노 프로그램을 다운받으셨다면 기본적으로 라이브러리가 설치 되어 있습니다. 라이브러리를 불러오는 경로를 살펴보겠습니다.

소스코드가 완성되었다면 업로드 후 동작을 해보겠습니다.