아두이노 - 서보 모터 | 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 제어 신호를 받습니다.
작동 원리
VCC 핀과 GND 핀을 각각 5V와 0V에 연결한 후, 신호 핀에 적절한 PWM 신호를 생성함으로써 서보 모터를 제어할 수 있습니다.
PWM 신호의 폭에 의해 각도가 결정됩니다.
서보 모터의 데이터시트는 다음과 같은 파라미터들을 제공합니다:
- PWM의 주기 (PERIOD)
- PWM의 최소 폭 (WIDTH_MAX)
- PWM의 최대 폭 (WIDTH_MIN)
이 매개변수들은 아두이노 서보 라이브러리에서 고정되어 있습니다. 우리는 매개변수의 값을 알 필요가 없습니다.
각도는 다음과 같이 결정됩니다:
- PWM의 폭이 WIDTH_MIN이면, 서보 모터는 0°로 회전합니다.
- PWM의 폭이 WIDTH_MAX이면, 서보 모터는 180°로 회전합니다.
- PWM의 폭이 WIDTH_MIN과 WIDTH_MAX 사이인 경우, 서보 모터는 0°에서 180° 사이의 비율에 따라 회전합니다.
아두이노 - 서보 모터
아두이노 핀 중 일부는 PWM 신호를 생성하도록 프로그래밍될 수 있습니다. 서보 모터의 신호 핀을 아두이노의 핀에 연결하고 아두이노 핀에서 PWM을 생성하도록 프로그래밍하여 서보 모터를 제어할 수 있습니다.
Arduino Servo 라이브러리 덕분에 서보 모터를 제어하는 것이 식은죽 먹기가 되었습니다. 우리는 서보 모터가 어떻게 작동하는지 알 필요도 없습니다. PWM 신호를 생성하는 방법을 알 필요도 없습니다. 우리가 해야 할 일은 단지 라이브러리 사용 방법을 배우는 것뿐입니다.
선연결
온라인에서 서보 모터의 VCC 핀이 아래와 같이 아두이노 보드의 5V 핀에 직접 연결되는 회로도를 접할 수 있습니다. 이 방법이 작동할 수도 있지만, 아두이노 보드를 손상시킬 수 있는 잠재적 위험 때문에 강력히 권장하지 않습니다.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
대신, 아두이노 보드를 보호하기 위해 서보 모터용으로 외부 전원 공급 장치를 사용하는 것을 강력히 권장합니다. 아래의 배선도는 서보 모터를 외부 전원원에 연결하는 방법을 설명합니다.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
외부 전원 공급 장치의 GND를 아두이노 보드의 GND에 연결하십시오. 제대로 작동하기 위해 이 중요한 단계를 간과하지 마십시오.
서보 모터 프로그래밍 방법
라이브러리를 포함하세요:
서보 객체 선언하기:
여러 서보 모터를 제어하는 경우, 더 많은 Servo 객체를 선언하기만 하면 됩니다:
서보 모터의 신호 핀에 연결되는 아두이노의 제어 핀을 설정하세요. 예를 들어, 핀 9:
- 마지막으로, 서보 모터의 각도를 원하는 각도로 회전시키세요. 예를 들어, 90°:
아두이노 코드
사용 방법
- 아두이노를 USB 케이블을 통해 PC에 연결합니다
- 아두이노 IDE를 열고, 올바른 보드와 포트를 선택합니다
- 위의 코드를 복사하고 아두이노 IDE로 엽니다
- 아두이노 IDE에서 Upload 버튼을 클릭해서 코드를 아두이노에 업로드합니다
결과를 확인하세요: 서보 모터가 0에서 180도까지 천천히 회전하고 다시 180도에서 0도로 천천히 회전합니다.
코드 설명
위의 아두이노 코드의 주석 라인에서 설명을 찾을 수 있습니다.
서보 모터 속도 제어 방법
map()과 millis() 함수를 사용함으로써 다른 코드의 실행을 막지 않고 서보 모터의 속도를 부드럽게 제어할 수 있습니다.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.
도전하세요
다음 프로젝트 중 하나를 수행하기 위해 서보 모터를 사용하세요:
- 포텐셔미터를 사용하여 서보 모터의 위치를 제어합니다. 힌트: Arduino - Potentiometer를 참조하세요.
- 쓰레기통을 자동으로 열고/닫습니다. 힌트: Arduino - Ultrasonic Sensor를 참조하세요.
추가 지식
서보 라이브러리는 아두이노 우노에서는 최대 12개의 모터를, 아두이노 메가에서는 48개의 모터를 지원합니다.
아두이노의 5V 핀에서 제공하는 전력은 다음 경우 중 하나에서 서보 모터에 충분하지 않을 수 있습니다:
- 높은 토크의 서보 모터를 사용하는 경우로, 무거운 물건을 들 수 있습니다.
- 많은 서보 모터를 사용하는 경우.
이러한 경우에는 서보 모터에 추가 전원 공급원을 제공해야 할 수도 있습니다.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
위 다이어그램에서 볼 수 있듯이, 서보 모터의 VCC 핀은 아두이노의 5V 핀에 연결되지 않습니다. 이것은 별도의 전원 소스의 양극 핀에 연결됩니다.
주의해 주시기 바랍니다:
- 추가 전원원의 양극 핀을 아두이노의 5V 핀에 연결하지 마십시오.
- 추가 전원원의 음극 핀을 아두이노의 GND 핀에 반드시 연결해야 합니다.