> 업계 통찰 >BLDC
기술 지원

Raspberry Pi로 20개의 서보 제어하기: 완전한 단계별 가이드

게시됨 2026-04-08

이 가이드는 최대 20개까지 제어할 수 있는 실용적이고 현장 테스트된 솔루션을 제공합니다.서보 기구Raspberry Pi와 같은 단일 보드 컴퓨터를 동시에 사용합니다. 2개 이상 직접 연결서보 기구GPIO 핀에 연결하면 전압 강하, PWM 타이밍 충돌 및 보드 손상이 발생합니다. 안정적인 방법은 전용 PWM 드라이버 모듈(예: PCA9685)을 사용하는 것입니다. 아래에서는 일반적인 실제 로봇 공학 및 애니마트로닉스 프로젝트를 기반으로 하는 정확한 하드웨어 설정, 배선 다이어그램, 전력 계산, Python 코드 및 문제 해결 단계를 확인할 수 있습니다.

01연결할 수 없는 이유 20서보 기구s GPIO에 직접

현재 한도: 각 GPIO 핀은 최대 16mA를 공급하는 반면 표준 서보는 이동할 때 150~500mA를 소비합니다. 20개의 서보에는 보드의 3.3V/5V 레일 용량을 훨씬 초과하는 10A 이상이 필요합니다.

PWM 하드웨어 제한: Raspberry Pi에는 하드웨어 PWM 채널이 2개(GPIO 18 및 19)만 있습니다. 다른 핀의 소프트웨어 PWM은 20개의 서보에 지터와 CPU 과부하를 발생시킵니다.

전압붕괴: 보드의 5V 핀에서 20개의 서보를 작동하면 즉시 전압 강하가 발생하여 시스템이 재설정됩니다.

02핵심 솔루션 개요

사용I²C 기반 PWM 드라이버 모듈(16채널 PCA9685가 업계 표준입니다). 이러한 모듈 2개(각각 최대 16개의 서보를 처리)를 연결하거나 모듈 1개와 멀티플렉서를 연결합니다. 이 가이드에서는 두 개의 PCA9685 보드(총 32개 채널, 20개만 사용)를 사용합니다.

03필수 구성 요소(브랜드 이름 없음)

싱글 보드 컴퓨터 1대(Raspberry Pi 3B+ 이상)

PCA9685 16채널 12비트 PWM 드라이버 보드 2개

20개의 표준 5V 서보(예: SG90, MG90S 또는 MG996R – 필요한 토크에 따라 선택)

1개의 외부 5V DC 전원 공급 장치 – 전류 계산: 20 서보 × 0.5A = 최소 10A. 사용10A~15A 조정 5V 공급.

커패시터: 전력 평활화를 위한 2x 1000μF 전해(≥10V)

점퍼 와이어(I²C의 경우 암-암, 서보 연결의 경우 수-암)

배전용 브레드보드 또는 터미널 블록

04배선 다이어그램(단계별)

1단계 - Raspberry Pi와 첫 번째 PCA9685 간의 I²C 연결

Pi 3.3V → PCA9685의 VCC(참고: 일부 모듈은 5V 로직을 허용합니다. 모듈을 확인하십시오. 5V 로직 모듈의 경우 모듈이 3.3V를 허용하는 경우에만 Pi의 3.3V를 사용하십시오. 더 안전함: 모듈 데이터시트에서 5V 허용 오차를 확인한 경우에만 VCC를 Pi의 5V 핀에 연결하십시오. 대부분의 PCA9685 보드는 3.3V I²C 로직으로 작동하지만 서보 V+에는 5V가 필요합니다. 다음 단계를 참조하세요.)

올바른 표준 배선(PCA9685 보드의 99%):

Pi 5V(핀 2 또는 4) → PCA9685 VCC(칩 로직용 전원 - 예, 대부분은 5V 로직에서 실행됨)

파이 GND → PCA9685 GND

Pi SDA(GPIO 2) → PCA9685 SDA

Pi SCL(GPIO 3) → PCA9685 SCL

2단계 - 서보용 외부 전원

외부 5V 공급 장치(10A+) 양극(+) → PCA9685 V+ 단자(종종 "V+" 또는 "서보 전원"으로 표시됨)

외부 공급 GND → PCA9685 GND(Pi와 공통 접지를 공유해야 함 - 위에서 이미 수행한 대로 Pi GND를 PCA9685 GND에 연결)

역기전력 스파이크를 흡수하려면 PCA9685 근처의 V+ 및 GND에 1000μF 커패시터를 배치하십시오.

3단계 - 서보 연결

각 서보의 빨간색(전원) → PCA9685 V+ 레일(브레드보드 전원 레일 사용)

서보 브라운/블랙(GND) → PCA9685 GND 레일

서보 주황색/노란색(신호) → PCA9685 PWM 출력 핀(첫 번째 보드에서 0~15, 두 번째 보드에서 0~3)

4단계 – 두 번째 PCA9685

두 번째 보드의 I²C 주소 설정: 주소 점퍼를 납땜합니다. PCA9685의 기본 주소는 0x40입니다. 두 번째 보드의 경우: 납땜 A0 점퍼 → 주소가 0x41이 됩니다.

두 번째 보드의 SDA/SCL/GND/VCC를 첫 번째 보드(동일한 I²C 버스)와 병렬로 연결합니다.

V+를 동일한 외부 5V 전원에 연결합니다.

05소프트웨어 설정(Raspberry Pi OS, 터미널 명령)

Pi에서 I²C를 활성화합니다.

sudo raspi-config # 인터페이스 옵션 → I2C → 예 sudo 재부팅

필수 라이브러리를 설치합니다:

sudo apt 업데이트 sudo apt 설치 python3-pip python3-smbus i2c-tools sudo pip3 설치 adafruit-circuitpython-pca9685

I²C 장치 확인:

sudo i2cDetect -y 1

0x40 및 0x41이 표시되어야 합니다(두 번째 보드의 주소가 올바르게 지정된 경우).

0620개의 서보를 독립적으로 제어하는 ​​Python 코드

파일 만들기Servo_control.py:

import time import board import busio from adafruit_pca9685 import PCA9685 # I2C 버스 초기화 i2c =busio.I2C(board.SCL, Board.SDA) # 주소 0x40의 첫 번째 PCA9685 pca1 = PCA9685(i2c, 주소=0x40) pca1.주파수 = 50 # 표준 서보의 경우 50Hz # 두 번째 PCA9685 주소 0x41 pca2 = PCA9685(i2c, 주소=0x41) pca2.주파수 = 50 # 서보 펄스 폭 범위(일반적으로 500~2500마이크로초) # 듀티 사이클로 변환: 듀티 = pulse_us / 2000065535 def angle_to_duty(angle, min_us=500, max_us=2500): 펄스 = min_us + (각도 / 180.0)(max_us - min_us) return int((pulse / 20000.0) * 65535) # 보드 및 채널로 모든 서보 제어 def set_servo(board,channel, angle): if angle 180: angle = 180 board.channels[channel].duty_cycle = angle_to_duty(angle) # 예: 20개 서보 모두를 90°로 이동 Servos = [(pca1, i) for i in range(16)] + [(pca2, i) for i in range(4)] # 보드의 총 20개, ch in Servos: set_servo(board, ch, 90) time.sleep(0.01) # 전류 서지를 줄이기 위한 스태거 # 보드1 채널0의 스윕 서보를 0에서 180까지 print("Sweeping Servo on Board1 ch0") for angle in range(0, 181, 10): set_servo(pca1, 0, angle) time.sleep(0.05) # 모든 서보를 해제합니다(PWM 전송 중지) - 지터 방지에 중요 pca1.deinit() pca2.deinit()

07전원 관리 - 가장 중요한 부분

실제 사례: 한 애호가가 10개의 서보를 5V/3A 전원 공급 장치에 직접 연결한 적이 있습니다. 동시 이동 중에 전압이 3.8V로 떨어지고 서보가 정지되었으며 Raspberry Pi가 재부팅되었습니다. 해결책:5V/15A 조정 전원을 사용하세요.(예: LED 전원 공급 장치 또는 컴퓨터 ATX 전원 공급 장치의 5V 레일) 추가하다대형 커패시터(5-8개의 서보당 1000μF) 각 드라이버 보드 근처에 있습니다.

실행 가능한 규칙: 최대 동시 전류를 계산합니다. 20개의 서보가 모두 동시에 움직인다면 10A로 가정합니다. 안전을 위해 마진 30% 추가 →최소 13A. 전원 분배에는 14AWG 이상의 전선을 사용하십시오.

08서보 펄스 폭 교정

모든 서보가 동일한 최소/최대 펄스를 갖는 것은 아닙니다. 공통 값:

아날로그 서보의 경우 500 µs(0°) – 2500 µs(180°)

많은 디지털 서보의 경우 600 µs(0°) – 2400 µs(180°)

교정 방법: 300~2700μs 범위에서 스윕하는 테스트 스크립트를 작성하고 기계적 한계를 찾은 다음 업데이트합니다.마이너스그리고max_us위의 함수에서.

09일반적인 문제 및 해결 방법

문제 가장 가능성이 높은 원인 고치다
서보가 움찔하거나 움직이지 않습니다. 전원 공급 전류가 부족함 15A 공급 장치로 업그레이드, 더 짧고 두꺼운 전선 사용
서보가 시작되면 Raspberry Pi가 재부팅됩니다. 5V 라인의 전압 강하 서보에만 외부 공급 장치를 사용하고 Pi에 별도로 전원을 공급하십시오(USB-C를 통해).
20개가 아닌 16개의 서보만 작동합니다. 두 번째 보드가 감지되지 않음 I²C 주소를 확인하세요(사용i2c검출 -y 1), SDA/SCL 연결을 확인하세요.
서보는 움직이지만 지터 공통 기반이 누락됨 Pi GND를 PCA9685 GND와 외부 공급 GND에 함께 연결합니다.
하나의 서보가 응답하지 않습니다 잘못된 신호 와이어 또는 채널 격리하려면 동일한 채널에서 작동하는 것으로 알려진 서보로 교체하세요.

1020개 서보에 대한 성능 최적화

비틀거리는 움직임: 모든 서보에 정확히 동일한 마이크로초에 각도를 변경하도록 명령하지 마십시오. 추가하다시간.수면(0.005)각각 사이set_servo부르다. 이는 부하를 분산시켜 피크 전류를 줄입니다.

업데이트 속도: 50Hz(20ms 주기)가 표준입니다. 주파수를 100Hz 이상으로 높이지 마십시오. 대부분의 서보는 과열됩니다.

CPU 사용량: PCA9685 하드웨어는 독립적으로 PWM을 생성합니다. Python 스크립트는 각도를 변경할 때마다 I²C 명령만 보냅니다. 정적 위치의 경우 스크립트가 종료될 수 있습니다. 서보는 전원이 공급되는 동안 마지막 위치를 유지합니다.

11오늘 이를 구현하기 위한 실행 계획을 완료하세요.

1. 부품 주문– PCA9685 보드 2개, 서보 20개, 5V/15A 전원 공급 장치, 1000μF 커패시터.

2. 하나의 서보로 테스트– 단일 서보를 첫 번째 PCA9685에 연결하고 스윕 코드를 실행합니다.

3. 전원 공급 장치 추가– 외부 5V/15A를 V+ 레일에 연결하고 서보가 강하게 움직이는지 확인합니다.

4. 5개의 서보로 확장– 전원 공급선의 온도를 모니터링하면서 점차적으로 더 많은 서보를 추가합니다.

5. 두 번째 PCA9685 추가– 주소를 0x41로 설정하고 서보 4개를 연결한 후 테스트합니다.

6. 전체 20서보 테스트– 제공된 코드를 실행하여 모든 서보를 90°로 이동한 다음 모든 채널을 천천히 스윕합니다.

12핵심 내용

Raspberry Pi의 GPIO에서 직접 20개의 서보를 제어할 수 없습니다. 전용 고전류 5V 전원 공급 장치가 있는 PCA9685 PWM 드라이버 보드를 사용하세요.이 방법은 수천 개의 실제 애니마트로닉스, 헥사포드 로봇 및 자동화 프로젝트에 사용됩니다. 신뢰할 수 있고 확장 가능하며 잘 문서화되어 있습니다. 작은 테스트부터 시작하여 전력 안정성을 확인한 후 확장하세요. 귀하의 성공은 적절한 접지와 충분한 전류량에 달려 있으며 둘 다 협상할 수 없습니다.

이제 조치를 취하십시오. 하나의 PCA9685를 단일 서보 및 외부 5V 공급 장치와 연결하십시오. 작동되면 나머지를 추가하십시오. 조립 후 2시간 이내에 안정적인 20-서보 시스템을 갖게 됩니다.

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

미래에 힘을 실어주다

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

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