This tutorial is part of: 서보 모터
서보 모터와 관련된 모든 동영상이 여기에 나열되어 있습니다. 다른 동영상 링크는 이 글 아래에 있습니다.
전위차계를 사용하여 Arduino로 서보 모터 제어하기
이 튜토리얼에서는 Arduino와 가변 저항(포텐셔미터)을 사용하여 서보 모터를 제어하는 방법을 배웁니다. 가변 저항을 사용하면 서보의 각도를 부드럽게 조절할 수 있어 위치를 실시간으로 제어할 수 있습니다. 이 프로젝트를 마치면 가변 저항 값과 해당 서보 각도를 표시하는 작동 가능한 설정을 갖추게 됩니다.

가변 저항을 돌리면 서보 모터의 각도가 0도에서 180도까지 변경됩니다. Arduino의 아날로그 입력을 사용하여 가변 저항 값을 읽은 다음 간단한 공식을 사용하여 이 값을 서보의 범위에 매핑합니다. 이 프로젝트는 아날로그 입력이 어떻게 작동하는지, 그리고 이를 사용하여 모터를 제어하는 방법을 이해하는 데 훌륭한 방법입니다(비디오 01:45 참조).
하드웨어 설명
이 프로젝트에는 Arduino 보드, 서보 모터, 가변 저항이 필요합니다. 가변 저항은 가변 저항기 역할을 하여 위치에 해당하는 전압 출력을 제공합니다. 이 출력은 Arduino의 아날로그 입력에서 읽혀 서보를 얼마나 회전시킬지 결정할 수 있게 합니다.
서보 모터는 특정 각도로 위치를 지정할 수 있는 모터 유형입니다. 원하는 위치를 알려주는 제어 신호를 수신합니다. 서보는 Arduino에서 받은 입력에 따라 해당 각도로 회전하므로 로봇 공학 및 원격 제어 장치와 같은 다양한 응용 분야에 유용합니다.
데이터시트 세부 정보
| 제조업체 | 다양함 |
|---|---|
| 부품 번호 | 표준 서보 |
| 로직/IO 전압 | 5V |
| 공급 전압 | 4.8 – 6V |
| 출력 전류(채널당) | 최대 1A |
| 피크 전류(채널당) | 최대 2A |
| PWM 주파수 안내 | 50Hz |
| 입력 로직 임계값 | 0.8V(낮음) / 2.0V(높음) |
| 전압 강하 / RDS(on) / 포화 | 0.5V |
| 열 제한 | 85°C |
| 패키지 | 표준 크기 |
| 참고 사항 / 변형 | 다양한 크기와 토크 정격으로 제공됨 |
- 전원 공급 장치가 한도(4.8 – 6V) 내에 있는지 확인하십시오.
- 가변 저항에 적합한 저항 값(10kΩ 권장)을 사용하십시오.
- 역방향 작동을 피하기 위해 연결 극성을 확인하십시오.
- 열에 주의하십시오. 서보에 과부하가 걸리지 않도록 하십시오.
- 간섭을 줄이기 위해 배선을 짧게 유지하십시오.
- 필요한 경우 전원 입력에 디커플링 커패시터를 사용하십시오.
- 가변 저항이 아날로그 핀 A0에 올바르게 연결되었는지 확인하십시오.
배선 지침

부품을 배선하려면 먼저 가변 저항을 연결하십시오. 가변 저항의 중간 핀은 Arduino의 아날로그 핀 A0에 연결해야 합니다. 왼쪽 핀은 Arduino의 5V 핀에 연결하고 오른쪽 핀은 접지(GND)에 연결해야 합니다.
다음으로 서보 모터를 연결하십시오. 서보의 접지선(일반적으로 검은색 또는 갈색)은 Arduino의 GND에 연결해야 합니다. 전원선(보통 빨간색)은 Arduino의 5V 핀에 연결해야 합니다. 마지막으로 제어선(종종 노란색 또는 흰색)은 Arduino의 디지털 핀 9에 연결해야 합니다. 이 설정을 통해 Arduino는 가변 저항의 위치에 따라 서보를 제어할 수 있습니다.

코드 예제 및 설명
코드의 주요 부분을 살펴보겠습니다. 먼저 Servo 라이브러리를 포함하고 서보 객체를 생성합니다:
#include
Servo myservo; // 서보를 제어하기 위한 서보 객체 생성
이 코드는 서보를 초기화하고 제어할 준비를 합니다. 다음 단계는 가변 저항 값을 읽는 것입니다:
int val = analogRead(potpin); // 가변 저항 값 읽기
여기서 가변 저항에서 읽은 값은 변수 val에 저장됩니다. 값은 가변 저항의 위치에 따라 0에서 1023 사이가 됩니다. 그런 다음 이 값을 서보의 범위에 매핑합니다:
val = map(val, 0, 1023, 0, 180); // 서보에 사용할 수 있도록 스케일 조정
이 줄은 가변 저항 값을 서보 모터에 적합한 범위로 변환합니다. 마지막으로 서보를 계산된 위치로 설정합니다:
myservo.write(val); // 스케일된 값에 따라 서보 위치 설정
이 명령은 가변 저항의 위치에 따라 서보가 지정된 각도로 이동하도록 지시합니다. 전체 코드는 기사 아래에서 확인할 수 있습니다.
시연 / 기대 효과
프로그램을 실행하면 가변 저항을 돌릴 때 서보 모터의 각도가 부드럽게 조정됩니다. 노브를 돌릴 때 직렬 모니터에 각도 값이 출력되는 것을 볼 수 있습니다. 서보가 예기치 않게 작동하면 배선, 특히 가변 저항과 서보의 연결을 확인하십시오(비디오 04:30 참조).
서보는 가변 저항 위치의 변화에 즉시 반응해야 합니다. 지연이나 끊김이 발견되면 코드의 지연 시간을 줄여 응답성을 개선하는 것을 고려하십시오.
This tutorial is part of: 서보 모터
- 푸시 버튼을 사용하여 Arduino로 서보 모터 제어하기
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- 포텐셔미터와 LCD1602를 사용하여 Arduino로 서보 모터 제어하기
- Controlling Servo Motors Using an Infrared Remote with Arduino
- 포텐셔미터를 이용한 아두이노 서보 모터 제어
- 아두이노를 위한 손 제스처로 서보 위치 제어하기
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- 연속 360° 서보를 Arduino와 함께 사용하는 방법
- 아두이노 코드 및 PCA9685 16채널 12비트 서보 컨트롤러 V1용 비디오
- 아두이노 푸시 버튼으로 서보 토글 스위치 만들기
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 November 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
Update by Ahmad Shamshiri for Robojax.com in Ajax, Ontario, Canada
Watch video for this code at https://youtu.be/X_drE5tLbz0
This code is taken from http://robojax.com/learn/arduino
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = A0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
// Servo knob demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
// Servo knob demo by Robojax.com
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
Serial.print(val);
Serial.print(" ");
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
// Servo knob demo by Robojax.com
Serial.print(val);
Serial.println();
delay(200); // waits for the servo to get there
}
필요할 수 있는 것들
-
아마존Servo motor on Amazonamzn.to
-
알리익스프레스Purchase SG90 Servo motor 180 or 360 from AliExpresss.click.aliexpress.com
자원 및 참고자료
-
외부SG90 servosamzn.to
파일📁
파일이 없습니다.