> 업계 통찰 >커스텀 드라이브
기술 지원

Arduino를 사용하여 여러 서보를 동시에 제어하는 ​​방법: 완전한 단계별 가이드

게시됨 2026-04-16

이 기사는 여러 제어에 대한 실용적이고 현장 테스트를 거친 가이드를 제공합니다.서보 기구Arduino 보드가 있는 모터. 여러 장치를 이동하는 데 필요한 정확한 하드웨어 설정, 배선, 코딩 및 전원 관리 기술을 배우게 됩니다.서보 기구지터, 지연 또는 보드 재설정 없이 동시에 작동합니다. 모든 권장 사항은 다중 관절 로봇 팔, 헥사포드 보행기, 카메라 짐벌과 같은 실제 프로젝트를 기반으로 합니다.

01핵심 과제: 전원 및 핀

여러 대를 동시에 제어서보 기구s는~ 아니다더 추가하는 것에 대해쓰다()코드의 줄. 두 가지 물리적 제한 사항을 먼저 해결해야 합니다.

1. 전원공급장치– 각 표준 마이크로 서보는 이동 시 200~500mA를 소모하고 정지 시 최대 1A를 소모할 수 있습니다. 함께 움직이는 3개의 서보는 USB 포트(500mA) 또는 Arduino의 5V 핀(최대 800mA)이 전달할 수 있는 것보다 더 많은 전류를 요구할 수 있습니다. 그 결과 갑작스러운 보드 재설정, 불규칙한 움직임 또는 회전을 거부하는 서보가 발생합니다.

2. PWM 핀 및 타이머– 내장서보 기구라이브러리는 타이머 인터럽트를 사용합니다. 일반적인 Arduino Uno에서는 다음을 제어할 수 있습니다.최대 12개의 서보(핀 2-13) 라이브러리를 사용하지만 다른 타이머 종속 기능(예:음정()). 타이머 수가 더 적은 보드(예: Arduino Nano)에서는 실제 한계가 8~10개의 서보일 수 있습니다. 타이머 제한을 초과하면 예측할 수 없는 동작이 발생합니다.

> 실제 사례: 6-DOF 로봇 팔(6개의 서보)을 만드는 취미생활자는 모든 서보를 Arduino의 5V 핀에 연결했습니다. 팔이 떨리고 USB 포트가 반복적으로 종료되었습니다. 해결책은 외부 5V 5A 전원 공급 장치였습니다.

02방법 1: 표준 서보 라이브러리 사용(최대 10개의 서보)

프로젝트에 필요한 경우서보 12개 이하그리고 별도의 전원이 있고,서보 기구라이브러리는 안정적으로 작동합니다.

배선(올바른)

연결하다신호선각 서보의 (일반적으로 주황색, 노란색 또는 흰색)을 다른 Arduino PWM 지원 디지털 핀(Uno에서는 3,5,6,9,10,11, 핀 2~13도 작동하지만 일부는 소프트웨어 PWM을 사용함)에 연결합니다.

모두 연결접지선(갈색 또는 검정색)을 공통 접지 레일에 –이는 Arduino의 GND에도 연결되어야 합니다..

모두 연결전선(빨간색)에외부 5V 전원 공급 장치의 양극 단자(2개 이상의 소형 서보의 경우 Arduino의 5V 핀에 연결하지 마십시오). Arduino 자체에는 USB 또는 자체 전원 잭을 통해 별도로 전원이 공급됩니다.

샘플 코드(부드러운 동시 이동)

#포함하다서보 서보1; 서보 서보2; 서보 서보3; 무효 설정() { Servo1.attach(9); Servo2.attach(10); Servo3.attach(11); } void loop() { // 세 개의 서보를 동시에 0°에서 180°로 이동 for (int pos = 0; pos = 0; pos--) { Servo1.write(pos); Servo2.write(pos); Servo3.write(pos); 지연(10); } 지연(1000); }

메모:지연(10)필수적입니다. 그것 없이는~을 위한루프는 서보가 응답할 수 있는 것보다 더 빠르게 새로운 각도를 작성하여 갑작스러운 움직임을 유발합니다.

이 방법이 실패할 경우

12개 이상의 서보– 라이브러리가 컴파일되지 않거나 타이머 충돌이 발생합니다.

높은 토크 또는 연속 회전 서보– 외부 전원을 사용하더라도 Arduino의 내부 레귤레이터에 비해 전류 스파이크가 너무 큽니까? (아니요, 외부 전원으로 문제가 해결되지만 전선이 길면 신호 무결성이 저하될 수 있습니다.)

독립적인 속도 제어 또는 정밀한 동기화가 필요함서보 기구라이브러리는 대상 각도만 설정합니다. 각 서보의 속도를 개별적으로 제어할 수는 없습니다.

03방법 2: PWM 드라이버 모듈 사용(16~32개 이상의 서보용)

을 위한12개 이상의 서보또는 부드럽고 독립적인 모션이 필요한 프로젝트(예: 애니마트로닉스, 16-서보 휴머노이드 로봇)에는16채널 PWM 드라이버 모듈I²C를 통해 통신합니다. 이것이 전문적인 솔루션입니다.

작동하는 이유

드라이버는 Arduino 타이머를 사용하지 않고도 최대 16개의 개별 PWM 신호를 생성합니다.

16개의 서보를 모두 제어하려면 아날로그 핀 2개(SDA, SCL)만 필요합니다.

대부분의 드라이버에는 5~10A를 제공할 수 있는 외부 5~6V 전원 공급 장치용 터미널 블록이 내장되어 있습니다.

하드웨어 설정(일반적인 경우: 16개 서보)

1. 드라이버 연결VCCArduino 5V(로직 측에 전원을 공급하기 위해).

2. 드라이버 연결접지Arduino GND에.

3. 드라이버 연결SDAArduino A4(또는 전용 SDA 핀)에 연결합니다.

4. 드라이버 연결SCLArduino A5(또는 전용 SCL 핀)에 연결합니다.

5. 연결외부 5V 5A+ 전원 공급 장치운전자의 전원 단자에.

6. 최대 16개의 서보를 드라이버 보드(신호, 전원, 접지)에 연결합니다.

샘플 코드(PCA9685 호환 라이브러리 사용)

#포함하다#포함하다// 일반 드라이버 라이브러리 – 브랜드 보증 없음 // 주소 0x40은 대부분의 16채널 드라이버의 기본값입니다 Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40); // 서보 펄스 폭 제한(일반적으로 0°~180°의 경우 150~600) #define SERVOMIN 150 #define SERVOMAX 600 void setup() { pwm.begin(); pwm.setOscillatorFrequency(27000000); pwm.setPWMFreq(50); // 표준 아날로그 서보 주파수 } // 특정 서보(0~15)를 각도(0~180°)로 이동시키는 함수 void setServoAngle(uint8_t 채널, int angle) { int pulse = map(angle, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(채널, 0, 펄스); } void loop() { // 16개의 서보 모두를 0°에서 180°로 부드럽게 움직였다가 다시 뒤로 이동합니다. for (int angle = 0; angle = 0; angle--) { for (int ch = 0; ch

주요 이점: 아니요지연()서보별 루프 내부에 있습니까? 실제로 위의 코드는 모든 서보를 8ms마다 한 단계씩 이동하여 완벽하게 동기 동작을 생성합니다.

실제 사례

표준 라이브러리를 사용하는 12개 서보 헥사포드 로봇은 걸을 때 무작위 다리 경련을 경험했습니다. 16채널 PWM 드라이버로 전환하면 모든 타이밍 충돌이 제거되고 외부 전원 공급 장치가 안정적인 5V 8A를 제공했기 때문에 로봇이 1kg의 페이로드를 운반할 수 있었습니다.

04중요한 문제 해결(현장 경험을 통해)

징후 가장 가능성이 높은 원인 고치다
함께 움직일 때 서보 지터 전원 공급 전류가 부족함 추가 서보당 최소 2A + 0.5A 정격의 외부 5V 공급 장치를 사용하십시오.
Arduino는 서보가 시작되자마자 재설정됩니다. Arduino의 5V 핀에 연결된 서보 전원 전원선을 외부 공급 장치로 이동하고 신호와 접지만 유지합니다.
처음 몇 개의 서보만 응답합니다. 타이머 제한이 초과되었습니다. PWM 드라이버 모듈로 전환
서보는 동시에 움직이지 않고 차례로 움직입니다. 여러 개 사용지연()서보별 루프 내 호출 반복할 때마다 모든 서보 위치를 업데이트하는 단일 루프를 사용합니다(위 예 참조).
서보가 크게 윙윙거리지만 회전하지 않음 불충분한 펄스 폭 범위 스코프를 사용하여 서보의 최소/최대 펄스 폭을 측정하거나 150-600을 안전한 시작으로 사용하십시오.

05성공을 보장하기 위한 실행 가능한 권장 사항

1. 힘으로 시작하세요– 3개 이상의 표준 서보의 경우 항상 외부 5V 공급 장치를 사용하십시오(3개 서보의 경우 최소 2A, 8~10개 서보의 경우 5A). 공급 접지를 Arduino 접지에 연결하십시오.

2. 서보 수를 세어보세요– 10개 이하의 서보 → 표준서보 기구도서관은 괜찮아요. ≥12개 서보 또는 지터 → 16채널 PWM 드라이버 모듈 구입(비용은 서보 2개보다 저렴함)

3. Arduino의 5V 핀에서 서보에 전원을 공급하지 마십시오.– 해당 핀은 센서 및 저전류 장치에만 사용됩니다.

4. 공통 접지를 사용하세요– 모든 서보, Arduino 및 외부 전원 공급 장치는 접지 연결을 공유해야 합니다. 그것이 없으면 PWM 신호는 의미가 없습니다.

5. 비차단 코드 작성– Arduino가 센서를 읽거나 통신해야 하는 프로젝트의 경우지연()10~20ms마다 서보 위치를 업데이트하는 millis() 기반 타이머가 있습니다.

6. 점진적으로 테스트– 외부 공급 장치의 하나의 서보로 시작하십시오. 전압 강하를 모니터링하면서 서보를 하나씩 추가합니다(멀티미터 사용). 이동 중에 전압이 4.8V 아래로 떨어지면 공급 장치를 업그레이드하십시오.

06결론 및 최종 핵심 포인트

동시 다중 서보 제어는 80% 전력 관리 및 20% 코드입니다.표준을 사용할 수 있습니다.서보 기구최대 12개의 서보를 위한 라이브러리이지만 Arduino 보드에서 끌어오지 않는 전용 전원 공급 장치만 사용 가능합니다. 대규모 프로젝트 또는 결함 없는 성능을 위해서는 I²C를 통한 PWM 드라이버 모듈이 전문적이고 검증된 솔루션입니다. 항상 모든 것을 함께 접지하고, 항상 피크 실속 전류에 맞게 전원 공급 장치의 크기를 조정하고, 그룹 동작 전에 항상 각 서보를 개별적으로 테스트하십시오.

귀하의 즉각적인 조치: 프로젝트의 서보 수를 계산합니다. 10개 이상이면 지금 16채널 PWM 드라이버와 5V 5A 전원 공급 장치를 주문하세요. 그런 다음 위의 두 번째 코드 예제를 사용하세요. 첫 번째 업로드에서 작동합니다.

업데이트 시간:2026-04-16

미래에 힘을 실어주다

귀하의 제품에 적합한 모터 또는 기어박스를 추천하려면 Kpower 제품 전문가에게 문의하십시오.

케이파워에 메일보내기
문의 제출
+86 0769 8399 3238
 
kpower지도