Arduino-서보 모터

서보 모터는 출력축이있는 작은 장치입니다. 이 샤프트는 서보에 코딩 된 신호를 전송하여 특정 각도 위치에 배치 할 수 있습니다. 코딩 된 신호가 입력 라인에 존재하는 한 서보는 샤프트의 각도 위치를 유지합니다. 코드화 된 신호가 변경되면 샤프트의 각도 위치가 변경됩니다. 실제로 서보는 무선 조종 비행기에서 엘리베이터 및 방향타와 같은 제어 표면을 배치하는 데 사용됩니다. 그들은 또한 무선 조종 자동차, 인형, 그리고 물론 로봇에도 사용됩니다.

서보는 로봇 공학에서 매우 유용합니다. 모터는 작고 제어 회로가 내장되어 있으며 크기에 비해 매우 강력합니다. Futaba S-148과 같은 표준 서보는 42oz / 인치의 토크를 가지며, 이는 크기에 비해 강합니다. 또한 기계적 부하에 비례하여 전력을 끌어옵니다. 따라서 부하가 적은 서보는 많은 에너지를 소비하지 않습니다.

서보 모터의 내장은 다음 그림과 같습니다. 제어 회로, 모터, 기어 세트 및 케이스를 볼 수 있습니다. 외부 세계와 연결되는 3 개의 전선도 볼 수 있습니다. 하나는 전원 (+5 볼트), 접지 용이고 흰색 와이어는 제어 와이어입니다.

서보 모터의 작동

서보 모터에는 출력 샤프트에 연결된 일부 제어 회로와 전위차계 (가변 저항, 일명 포트)가 있습니다. 위의 그림에서 냄비는 회로 기판의 오른쪽에서 볼 수 있습니다. 이 포트를 통해 제어 회로가 서보 모터의 현재 각도를 모니터링 할 수 있습니다.

샤프트가 올바른 각도에 있으면 모터가 차단됩니다. 회로가 각도가 정확하지 않다는 것을 발견하면 모터가 원하는 각도가 될 때까지 회전합니다. 서보의 출력축은 약 180도를 이동할 수 있습니다. 일반적으로 210도 범위에 있지만 제조업체에 따라 다릅니다. 일반 서보는 0 ~ 180 도의 각도 운동을 제어하는 ​​데 사용됩니다. 메인 출력 기어에 내장 된 기계적 정지로 인해 기계적으로 더 이상 회전 할 수 없습니다.

모터에 적용되는 전력은 이동해야하는 거리에 비례합니다. 따라서 샤프트가 먼 거리를 회전해야하는 경우 모터가 최대 속도로 작동합니다. 조금만 돌리면 모터가 더 느린 속도로 작동합니다. 이것은 ... 불리운다proportional control.

서보가 회전해야하는 각도를 어떻게 전달합니까?

제어 와이어는 각도를 전달하는 데 사용됩니다. 각도는 제어 와이어에 적용되는 펄스의 지속 시간에 의해 결정됩니다. 이것은 ... 불리운다Pulse Coded Modulation. 서보는 20 밀리 초 (.02 초)마다 펄스를 볼 것으로 예상합니다. 펄스의 길이는 모터가 회전하는 거리를 결정합니다. 예를 들어 1.5 밀리 초 펄스는 모터를 90도 위치 (종종 중립 위치라고 함)로 회전시킵니다. 펄스가 1.5 밀리 초보다 짧으면 모터가 샤프트를 0도에 가깝게 돌립니다. 펄스가 1.5 밀리 초보다 길면 샤프트가 180도에 가까워집니다.

필요한 구성 요소

다음 구성 요소가 필요합니다-

  • 1 × Arduino UNO 보드
  • 1 × 서보 모터
  • 1 × ULN2003 구동 IC
  • 1 × 10 KΩ 저항기

순서

회로도에 따라 아래 그림과 같이 연결하십시오.

스케치

컴퓨터에서 Arduino IDE 소프트웨어를 엽니 다. Arduino 언어로 코딩하면 회로가 제어됩니다. 새로 만들기를 클릭하여 새 스케치 파일을 엽니 다.

Arduino 코드

/* Controlling a servo position using a potentiometer (variable resistor) */

#include <Servo.h>
   Servo myservo; // create servo object to control a servo
   int potpin = 0; // analog pin used to connect the potentiometer
   int val; // variable to read the value from the analog pin

void setup() {
   myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop() {
   val = analogRead(potpin);
   // reads the value of the potentiometer (value between 0 and 1023)
   val = map(val, 0, 1023, 0, 180);
   // scale it to use it with the servo (value between 0 and 180)
   myservo.write(val); // sets the servo position according to the scaled value
   delay(15);
}

참고할 코드

서보 모터에는 전원, 접지 및 신호의 세 가지 단자가 있습니다. 전원 선은 일반적으로 빨간색이며 Arduino의 5V 핀에 연결해야합니다. 접지선은 일반적으로 검정색 또는 갈색이며 ULN2003 IC (10-16)의 한 단자에 연결해야합니다. Arduino 보드를 손상으로부터 보호하려면이를 위해 드라이버 IC가 필요합니다. 여기서는 ULN2003 IC를 사용하여 서보 모터를 구동했습니다. 신호 핀은 일반적으로 노란색 또는 주황색이며 Arduino 핀 번호 9에 연결해야합니다.

전위차계 연결

전압 분배기 / 전위 분배기는 적용된 입력 전압의 특정 비율로 출력 전압을 조정하는 직렬 회로의 저항입니다. 다음은 회로도입니다-

$$ V_ {out} = (V_ {in} \ times R_ {2}) / (R_ {1} + R_ {2}) $$

V out 은 직렬로 적용된 입력 전압 (V in )과 저항기 (R 1 및 R 2 )에 따라 달라지는 출력 전위 입니다. 이는 R 1 을 통해 흐르는 전류 가 분할되지 않고 R 2 를 통해 흐를 것임을 의미합니다 . 위의 방정식에서 R 2 값이 변경되면 V out 은 입력 전압 V in 에 따라 그에 따라 확장 됩니다 .

일반적으로 전위차계는 노브를 사용하여 조정되는 가변 저항기의 값을 기반으로 회로의 출력 전압을 조정할 수있는 전위 분배기입니다. 아래 다이어그램과 같이 GND, Signal 및 + 5V의 세 개의 핀이 있습니다.

결과

냄비의 NOP 위치를 변경하면 서보 모터가 각도를 변경합니다.