TIL 44 | [Arduino] 서보모터 (Servo Motor)

Yoonsik·2022년 9월 26일
0

Arduino

목록 보기
2/2

서보모터 관련 함수

  • Servo.h

    아두이노에서 서보모터를 사용하기 위해서는 Servo.h 라이브러리를 include 해서 사용해야 한다.
    #include <Servo.h>

  • attach()

    지정한(포트) 모터에 전원이 공급되어 사용할 수 있게 한다.

  • writeMicroseconds()

    서보모터 제어를 위해 사용하는 함수로, 1500 기준(정지) 1300 ~ 1700 사이값을 주어, 그 값을 이용해 모터의 정지, 회전방향, 회전속도를 제어할 수 있다.

    1500(정지)을 기준으로 모터의 회전방향이 정해진다.

    1500 : 정지상태
    1500 보다 작은 경우 : 시계반향
    모터 회전 속도 : 1500 과 가까울 수록 속도가 느려진다.
    Max = 1300, Min = 1499 < 1500

    1500 보다 큰 경우 : 반시계반향
    모터 회전 속도 : 1500 과 가까울 수록 속도가 느려진다.
    Max = 1700, Min = 1501 > 1500


⛓ 서보모터 제어 프로그램

🔗 서보모터 정지

#include <Servo.h>
Servo servoLeft;
Servo servoRight;
void setup() {
  // put your setup code here, to run once:
  servoLeft.attach(13);
  servoRight.attach(12);
  servoLeft.writeMicroseconds(1500); // 모터 정지상태
  servoRight.writeMicroseconds(1500); // 모터 정지상태
}

void loop() {
  // put your main code here, to run repeatedly:

}

🔗 서보모터 시계방향 회전

#include <Servo.h>
Servo servoRight;
Servo servoLeft;

void setup() {
   // put your setup code here, to run once:
  servoRight.attach(12);
  servoLeft.attach(13);
  servoRight.writeMicroseconds(1300);
  servoLeft.writeMicroseconds(1300);
}

void loop(){
  // put your main code here, to run repeatedly:
}

🔗서보모터 반시계방향 회전

#include <Servo.h>
Servo servoRight;
Servo servoLeft;

void setup() {
  // put your setup code here, to run once:
  servoRight.attach(12);
  servoLeft.attach(13);

  servoRight.writeMicroseconds(1700);
  servoLeft.writeMicroseconds(1700);
}

void loop() {
  // put your main code here, to run repeatedly:
}

다음 3개의 프로그램을 실행시켜보면

🔗 서보모터 정지 프로그램의 경우, 왼쪽 서보모터와 오른쪽 서보모터 둘다 writeMicroseconds() 함수의 값을 1500으로 지정하여 ABOT이 정지해있는 것을 알 수 있다.

🔗 서보모터 시계방향 회전 프로그램의 경우, 왼쪽 서보모터와 오른쪽 서보모터의 writeMicroseconds() 함수값을 1300으로 지정하여 두개의 바퀴 모두 시계방향으로 회전하게 하였다.

🔗서보모터 반시계방향 회전 프로그램은 왼쪽 서보모터와 오른쪽 서보모터의 writeMicroseconds() 함수값을 1700으로 지정하여 두개의 바퀴 모두 반시계방향으로 회전하게 하였다.


🏎 ABOT 주행

🔗 서보모터 시계방향 회전, 🔗서보모터 반시계방향 회전 프로그램을 실행하면 ABOT이 전진/후진 하는 것이 아니라

  • 🔗 서보모터 시계방향 회전 은 ABOT이 반시계방향으로 제자리에서 회전하고,

  • 🔗서보모터 반시계방향 회전 은 ABOT이 시계방향으로 제자리에서 회전하는 것을 확인할 수 있다.

이런식으로 ABOT이 제자리에서 회전하는 이유는 ABOT을 조립하면 2개의 모터들은 서로 등지게되기 때문이다.

따라서 ABOT을 직진시키기 위해선 다음과 같이
오른쪽 바퀴는 시계반향 1300 ~ 1499, 왼쪽 바퀴는 반시계반향 1700 ~ 1501 값을 지정해 주어야 한다.


profile
꾸준함의 힘

0개의 댓글