아두이노 - 서보 모터 | Arduino - Servo Motor

이 튜토리얼에서는 서보 모터를 Arduino와 함께 사용하는 방법을 배우게 됩니다. 구체적으로, 우리는 다음을 배우게 됩니다:

준비물

1×Arduino Uno Amazon
1×USB 2.0 cable type A/B 쿠팡 | Amazon
1×Servo Motor 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Optional) 9V Power Adapter for Arduino Amazon
1×(Recommended) Screw Terminal Block Shield for Arduino Uno 쿠팡 | Amazon
1×(Recommended) Breadboard Shield For Arduino Uno 쿠팡 | Amazon
1×(Recommended) Enclosure For Arduino Uno Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

서보 모터에 관하여

서보 모터는 손잡이(보통 0°에서 180° 사이)를 회전할 수 있는 부품입니다. 이것은 물체의 각 위치를 제어하는 데 사용됩니다.

핀아웃

이 예제에서 사용된 서보 모터에는 세 개의 핀이 포함되어 있습니다:

  • VCC 핀: (보통 빨간색) VCC(5V)에 연결되어야 합니다.
  • GND 핀: (보통 검정색 또는 갈색) GND(0V)에 연결되어야 합니다.
  • 신호 핀: (보통 노란색 또는 오렌지색) 아두이노 핀에서 PWM 제어 신호를 받습니다.
Servo Motor Pinout

작동 원리

이 섹션에는 압도될 수 있는 고급 정보가 포함되어 있습니다. 내용에 대해 확신이 없다면 건너뛰어 다음 섹션으로 이동하십시오.

VCC 핀과 GND 핀을 각각 5V와 0V에 연결한 후, 신호 핀에 적절한 PWM 신호를 생성함으로써 서보 모터를 제어할 수 있습니다.

PWM 신호의 폭에 의해 각도가 결정됩니다.

서보 모터의 데이터시트는 다음과 같은 파라미터들을 제공합니다:

  • PWM의 주기 (PERIOD)
  • PWM의 최소 폭 (WIDTH_MAX)
  • PWM의 최대 폭 (WIDTH_MIN)

이 매개변수들은 아두이노 서보 라이브러리에서 고정되어 있습니다. 우리는 매개변수의 값을 알 필요가 없습니다.

각도는 다음과 같이 결정됩니다:

  • PWM의 폭이 WIDTH_MIN이면, 서보 모터는 0°로 회전합니다.
  • PWM의 폭이 WIDTH_MAX이면, 서보 모터는 180°로 회전합니다.
  • PWM의 폭이 WIDTH_MINWIDTH_MAX 사이인 경우, 서보 모터는 0°에서 180° 사이의 비율에 따라 회전합니다.
How Servo Motor Works

아두이노 - 서보 모터

아두이노 핀 중 일부는 PWM 신호를 생성하도록 프로그래밍될 수 있습니다. 서보 모터의 신호 핀을 아두이노의 핀에 연결하고 아두이노 핀에서 PWM을 생성하도록 프로그래밍하여 서보 모터를 제어할 수 있습니다.

Arduino Servo 라이브러리 덕분에 서보 모터를 제어하는 것이 식은죽 먹기가 되었습니다. 우리는 서보 모터가 어떻게 작동하는지 알 필요도 없습니다. PWM 신호를 생성하는 방법을 알 필요도 없습니다. 우리가 해야 할 일은 단지 라이브러리 사용 방법을 배우는 것뿐입니다.

선연결

온라인에서 서보 모터의 VCC 핀이 아래와 같이 아두이노 보드의 5V 핀에 직접 연결되는 회로도를 접할 수 있습니다. 이 방법이 작동할 수도 있지만, 아두이노 보드를 손상시킬 수 있는 잠재적 위험 때문에 강력히 권장하지 않습니다.

Arduino Servo Motor Wiring Diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

대신, 아두이노 보드를 보호하기 위해 서보 모터용으로 외부 전원 공급 장치를 사용하는 것을 강력히 권장합니다. 아래의 배선도는 서보 모터를 외부 전원원에 연결하는 방법을 설명합니다.

Arduino servo motor external power supply wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

외부 전원 공급 장치의 GND를 아두이노 보드의 GND에 연결하십시오. 제대로 작동하기 위해 이 중요한 단계를 간과하지 마십시오.

서보 모터 프로그래밍 방법

라이브러리를 포함하세요:

#include <Servo.h>

서보 객체 선언하기:

Servo myServo;

여러 서보 모터를 제어하는 경우, 더 많은 Servo 객체를 선언하기만 하면 됩니다:

cpp Servo myServo1; Servo myServo2;

서보 모터의 신호 핀에 연결되는 아두이노의 제어 핀을 설정하세요. 예를 들어, 핀 9:

myServo.attach(9);
  • 마지막으로, 서보 모터의 각도를 원하는 각도로 회전시키세요. 예를 들어, 90°:
myServo.write(90);

아두이노 코드

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-servo-motor */ #include <Servo.h> Servo servo; // 서보 오브젝트를 생성해 서보를 제어합니다. void setup() { servo.attach(9); // 서보 객체에 9번 핀의 서보를 부착합니다. servo.write(0); // 서보를 즉시 0도로 천천히 회전시킵니다. } void loop() { for (int pos = 0; pos <= 180; pos += 1) { // 0도에서 180도까지 1도씩 천천히 회전합니다. // 1도 단위로 servo.write(pos); // 변수 'pos'의 위치로 서보를 제어합니다. delay(10); // 서보가 위치에 도달하도록 10ms 기다립니다. } for (int pos = 180; pos >= 0; pos -= 1) { // 180도에서 0도로 1도씩 회전합니다. servo.write(pos); // 변수 'pos'의 위치로 서보를 제어합니다. delay(10); // 서보가 위치에 도달하도록 10ms 기다립니다. } }

사용 방법

  • 아두이노를 USB 케이블을 통해 PC에 연결합니다
  • 아두이노 IDE를 열고, 올바른 보드와 포트를 선택합니다
  • 위의 코드를 복사하고 아두이노 IDE로 엽니다
  • 아두이노 IDE에서 Upload 버튼을 클릭해서 코드를 아두이노에 업로드합니다
Arduino IDE - How to Upload Code

결과를 확인하세요: 서보 모터가 0에서 180도까지 천천히 회전하고 다시 180도에서 0도로 천천히 회전합니다.

코드 설명

위의 아두이노 코드의 주석 라인에서 설명을 찾을 수 있습니다.

서보 모터 속도 제어 방법

map()millis() 함수를 사용함으로써 다른 코드의 실행을 막지 않고 서보 모터의 속도를 부드럽게 제어할 수 있습니다.

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-servo-motor */ #include <Servo.h> Servo myServo; unsigned long MOVING_TIME = 3000; // 이동 시간은 3초입니다 unsigned long moveStartTime; int startAngle = 30; // 30° int stopAngle = 90; // 90° void setup() { myServo.attach(9); moveStartTime = millis(); // 이동 시작 // TODO: 다른 코드 } void loop() { unsigned long progress = millis() - moveStartTime; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, startAngle, stopAngle); myServo.write(angle); } // TODO: 다른 코드 }

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

도전하세요

다음 프로젝트 중 하나를 수행하기 위해 서보 모터를 사용하세요:

추가 지식

서보 라이브러리는 아두이노 우노에서는 최대 12개의 모터를, 아두이노 메가에서는 48개의 모터를 지원합니다.

아두이노의 5V 핀에서 제공하는 전력은 다음 경우 중 하나에서 서보 모터에 충분하지 않을 수 있습니다:

  • 높은 토크의 서보 모터를 사용하는 경우로, 무거운 물건을 들 수 있습니다.
  • 많은 서보 모터를 사용하는 경우.

이러한 경우에는 서보 모터에 추가 전원 공급원을 제공해야 할 수도 있습니다.

Arduino Servo Motor Extra Power

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

위 다이어그램에서 볼 수 있듯이, 서보 모터의 VCC 핀은 아두이노의 5V 핀에 연결되지 않습니다. 이것은 별도의 전원 소스의 양극 핀에 연결됩니다.

주의해 주시기 바랍니다:

  • 추가 전원원의 양극 핀을 아두이노의 5V 핀에 연결하지 마십시오.
  • 추가 전원원의 음극 핀을 아두이노의 GND 핀에 반드시 연결해야 합니다.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!