Arduino로 서보 모터를 제어하는 ​​방법

Arduinolo Seobo Moteoleul Jeeohaneun Bangbeob



서보 모터 물체의 위치를 ​​매우 정밀하게 변경하거나 회전시킬 수 있는 전기 장치의 일종입니다. 처음에는 RC 비행기 날개를 제어하는 ​​데 사용되었으며 잠시 후 로봇 공학, 휴머노이드 로봇 및 많은 자동화 프로젝트에 진출했습니다. 스테퍼 모터와 달리 모션은 0o에서 180o 사이로 제한됩니다.

일반적으로 서보 모터에는 Arduino를 사용하여 제어할 수 있는 암이 있습니다. 서보 모터는 다음을 제공하는 제어 시스템으로 구성됩니다. 피드백 모터 샤프트의 현재 위치에 대해 이 피드백을 통해 매우 정밀하게 이동할 수 있습니다.

서보 모터 핀아웃

일반적으로 대부분의 서보 모터에는 세 개의 핀이 있습니다.







  • Vcc 핀(일반적으로 빨간색 5V)
  • GND 핀(일반적으로 검은색 0V)
  • 입력 신호 핀 (Arduino에서 PWM 신호 수신)



서보 모터의 작동

Vcc 핀을 5V에 연결하고 GND 핀을 0V에 연결하여 서보 모터를 제어할 수 있습니다. 노란색 터미널에서 우리는 PWM 서보 모터의 회전 각도를 제어하는 ​​신호. PWM 신호의 폭은 모터가 암을 회전시킬 각도를 알려줍니다.



서보 모터의 데이터 시트를 살펴보면 다음 매개변수를 얻습니다.





  • PWM 신호 시간
  • PWM의 최소 너비
  • PWM의 최대 너비

이러한 모든 매개변수는 Arduino Servo 라이브러리에 미리 정의되어 있습니다.

Arduino가 있는 서보 모터

서보 모터는 Arduino 덕분에 제어하기가 매우 쉽습니다. 서보 라이브러리 이는 필요에 따라 코드를 사용자 정의하는 데 도움이 되며 원하는 각도로 서보 암을 회전할 수 있습니다.



위에서 언급한 세 가지 매개변수는 모두 서보 라이브러리에 고정되어 있습니다. 이 매개변수를 사용하여 다음과 같은 방식으로 서보 모터의 각도를 제어할 수 있습니다.

  • PWM 신호 폭 = WIDTH_MAX인 경우 서보는 180o로 회전합니다.
  • PWM 신호 폭 = WIDTH_MIIN이면 서보가 0o로 회전합니다.
  • PWM 신호 폭이 그 사이에 있는 경우 WIDTH_MAX 및 WIDTH_MIN , 서보 모터는 0o와 180o 사이에서 회전합니다

일부 Arduino 핀에서 원하는 PWM 신호를 생성할 수 있습니다. PWM 신호는 서보 모터의 입력 신호 핀에 주어집니다. 서보의 나머지 두 핀을 Arduino의 5v와 GND에 연결합니다.

Arduino를 사용하여 서보 모터를 제어하는 ​​방법

여기에서는 Arduino를 사용하여 서보 모터를 연결하고 프로그래밍하는 방법을 설명합니다. 필요한 것은 다음과 같습니다.

  • 아두이노 우노
  • USB B 케이블
  • 서보 모터
  • 점퍼 와이어

Arduino로 서보를 프로그래밍하는 방법

다음은 몇 가지 간단한 단계입니다.

1 단계: 사전 정의된 서보 라이브러리 포함:

# 포함 < 서보.h >

2 단계: 서보 개체 만들기:

서보 마이서보;

팁: 둘 이상의 서보 모터를 제어하는 ​​경우 더 많은 서보 개체를 생성해야 합니다.

서보 마이서보1;
서보 마이서보2;

3단계: PWM 신호를 서보의 입력 신호 포트로 보내는 Arduino Uno의 제어 핀(9)을 설정합니다.

myservo.attach ( 9 ) ;

4단계: 서보 모터 각도를 원하는 값(예: 90o)으로 회전합니다.

myservo.write ( 포스 ) ;

아두이노 코드

에서 서보 모터 예제 프로그램 열기 파일>예제>서보>스윕 , 서보 스케치를 보여주는 새 창이 열립니다.

#include <서보.h>

서보 마이서보; // // 서보 객체가 생성됩니다. ~을 위한 서보 모터 제어
정수 = 0 ; // // 서보 위치를 저장하기 위해 새 변수가 생성됩니다.
무효 설정 ( ) {
myservo.attach ( 9 ) ; // // 이것은 의지 세트 아두이노 핀 9 ~을 위한 PWM 출력
}
무효 루프 ( ) {
~을 위한 ( 위치 = 0 ; 위치 = 0 ; 위치 -= 1 ) { // // 에서 간다 180 에게 0 학위
myservo.write ( 포스 ) ; // // 서보에게 'pos' 위치로 이동하도록 지시
지연 ( 5 ) ; // // 기다림 ~을 위한 5 서보가 위치에 도달할 수 있도록 ms
}
}

프로그램이 컴파일되고 업로드되면 서보 모터는 시작 위치 0도에서 180도까지 단계처럼 한 번에 한 도씩 천천히 회전하기 시작합니다. 모터가 180도 회전을 완료하면 시작점(0도)을 향해 반대 방향으로 회전을 시작합니다.

회로도

전위차계를 사용하여 서보 모터를 제어하는 ​​방법

우리는 또한 손으로 서보 모터 위치를 제어할 수 있습니다. 이를 위해 우리는 필요합니다 전위차계 . 전위차계에는 3개의 핀이 있습니다. 두 개의 외부 핀을 Arduino의 5V Vcc 및 GND에 연결하고 중간 하나를 Arduino 보드의 A0 핀에 연결합니다.

전위차계로 서보를 프로그래밍하는 방법

전위차계에 대한 대부분의 스케치는 이전 예제와 동일합니다. 유일한 차이점은 새로운 변수입니다. 그리고 서브핀 코드의 설정 및 루프 섹션 전에 정의됩니다.

int 팟핀 = A0;
정수 값;

루프 섹션에서 아날로그 핀 A0은 기능이 있는 전위차계의 값을 읽는 데 사용됩니다. 아날로그 읽기() . Arduino 보드에는 전위차계의 위치에 따라 0에서 1023 사이의 값을 제공하는 10비트 ADC(Analog to Digital Converter)가 포함되어 있습니다.

val = 아날로그 읽기 ( 서브핀 ) ;

마지막으로 우리가 사용한 지도() 서보 모터는 00에서 1800 사이만 회전할 수 있다는 것을 알고 있는 것처럼 서보의 각도에 따라 0에서 1023까지의 숫자를 다시 매핑하는 기능입니다.

발 = 지도 ( 발, 0 , 1023 , 0 , 180 ) ;

아두이노 코드

Arduino IDE에서 사용할 수 있는 열린 손잡이 스케치, 이동 파일>예제>서보>노브 . 서보에 대한 노브 스케치를 보여주는 새 창이 열립니다.

#include <서보.h>
서보 마이서보; // // 서보 개체 이름 myservo 만들기
int 팟핀 = A0; // // 아날로그 핀 정의 ~을 위한 전위차계
정수 값; // // 변하기 쉬운 어느 ~ 할 것이다 읽다 아날로그 핀 값 ~을 위한 전위차계

무효 설정 ( ) {
myservo.attach ( 9 ) ; // // 정의된 핀 9 ~을 위한 Arduino에서 서보의 PWM 입력 신호
}
무효 루프 ( ) {
val = 아날로그 읽기 ( 서브핀 ) ; // // 전위차계에서 값을 읽습니다. ( 값 사이 0 그리고 1023 )
발 = 지도 ( 발, 0 , 1023 , 0 , 180 ) ; // // 서보와 함께 사용할 값 크기 조정 ( 값 사이 0 그리고 180 )
myservo.write ( ) ; // // 스케일된 값으로 서보 위치 설정
지연 ( 열 다섯 ) ; // // 기다림 ~을 위한 위치에 도달하는 서보
}

위의 코드는 전위차계를 사용하여 서보 모터 샤프트를 제어하는 ​​데 도움이 됩니다. 샤프트는 0도에서 180도 사이에서 회전합니다. 우리는 또한 그것을 사용하는 서보의 방향과 함께 속도를 유지할 수 있습니다.

회로도

Arduino에 몇 개의 서보 모터를 연결할 수 있습니까?

Arduino UNO가 처리할 수 있는 최대 서보 모터 수는 서보용 Arduino 라이브러리에서 최대 12개이며 최대 48 서보 Mega와 같은 보드와 연결할 수 있습니다.

팁: Arduino 전류를 사용하여 서보를 직접 실행할 수 있지만 서보 모터가 500mA 그러면 Arduino 보드가 자동으로 재설정되고 전원이 꺼질 수 있습니다. 항상 서보 모터 전용 전원을 사용할 것을 권장합니다.

결론

이 튜토리얼에서는 Arduino를 사용하여 서보 모터의 제어 메커니즘을 다루었습니다. 전위차계를 사용하여 서보 위치와 속도를 제어하는 ​​기본 사항을 다루었습니다. 이제 로봇 공학, RC 프로젝트 및 서보를 사용한 자동화의 가능성과 서보에 대한 아이디어를 얻었습니다.