게시됨 2026-04-18
이 가이드는 표준 제어를 위한 완전하고 실용적인 연습을 제공합니다.서보 기구Raspberry Pi 단일 보드 컴퓨터를 사용하는 모터. 실제 테스트 및 공식 하드웨어 문서를 기반으로 정확한 각도 제어를 달성하는 데 필요한 정확한 배선, Python 코드 및 PWM 설정을 배우게 됩니다.
Raspberry Pi(GPIO 핀이 있는 모든 모델(예: 3B+, 4B 또는 5))
Raspberry Pi OS가 탑재된 MicroSD 카드(Bookworm 이상)
표준 5V서보 기구모터(취미 로봇공학에 일반적으로 사용됨)
외부 5V 전원 공급 장치(2A 이상) - 대부분서보 기구s는 높은 전류를 끌어온다
점퍼선(암-암)
소형 전위차계(옵션, 수동 제어의 경우)
> 실제 메모: 일반적인 교실이나 취미 생활 환경에서 사용자는 5V 핀에서 직접 서보에 전원을 공급하여 Raspberry Pi를 손상시키는 경우가 많습니다. 이 가이드에서는 올바른 전원 절연 방법을 보여줍니다.
표준 서보 모터는 연속적으로 회전하지 않습니다. 대신, PWM(Pulse Width Modulation) 신호를 기반으로 특정 각도(보통 0°~180°)로 이동합니다. Raspberry Pi는 GPIO 핀에서 이 신호를 생성합니다.
중요 매개변수(서보 데이터시트 및 공식 Raspberry Pi 문서 참조):
신호 주파수: 50Hz(주기 = 20ms)
0°에 대한 펄스 폭: 0.5ms(듀티 사이클 = 2.5%)
90°에 대한 펄스 폭: 1.5ms(듀티 사이클 = 7.5%)
180°에 대한 펄스 폭: 2.5ms(듀티 사이클 = 12.5%)
이 값은 대부분의 아날로그 및 디지털 서보에 대한 산업 표준입니다. 항상 서보의 데이터시트를 확인하십시오. 작은 변형이 존재합니다.
Raspberry Pi의 5V 핀에서 직접 서보에 전원을 공급하지 마십시오.일반적인 서보는 이동 중에 200~800mA를 소모할 수 있으며 피크 전류는 1A를 초과합니다. Raspberry Pi의 5V 핀은 USB 입력에 직접 연결되어 있으며 약 500mA만 안정적으로 공급할 수 있습니다(이전 모델에서는 더 적음). 더 많은 전류를 끌어오면 전압 강하, 시스템 정지 또는 영구적인 손상이 발생할 수 있습니다.
올바른 배선(일반 설정으로 테스트):
공통 기반이 필수인 이유:서보의 제어 신호(Pi의 0~3.3V)와 서보의 전원(외부 공급 장치의 5V)은 기준 전압을 공유해야 합니다. 공통 접지가 없으면 신호가 정의되지 않고 서보가 흔들리거나 움직이지 않게 됩니다.
Raspberry Pi OS에는 Python이 사전 설치되어 있습니다. 정밀한 PWM 신호를 생성하기 위한 두 가지 신뢰할 수 있는 방법이 있습니다. 초보자에게 권장되는 방법은 다음과 같습니다.RPi.GPIO특정 핀의 하드웨어 PWM을 사용합니다.
Raspberry Pi 40핀 헤더의 하드웨어 PWM 지원 GPIO 핀:
GPIO12(핀 32) - PWM 채널 0
GPIO13(핀 33) - PWM 채널 1
GPIO18(핀 12) – PWM 채널 0(가장 일반적으로 사용됨)
GPIO19(핀 35) - PWM 채널 1
![]()
PWM 인터페이스 활성화(하드웨어 PWM을 사용하는 경우):추가 단계가 필요하지 않습니다. 하드웨어 PWM을 항상 사용할 수 있습니다. 소프트웨어 PWM(모든 핀)의 경우 구성이 필요하지 않지만 타이밍이 덜 안정적일 수 있습니다.
다음은 각각 2초 간격으로 서보를 세 가지 각도(0°, 90°, 180°)로 이동하는 테스트된 완전한 Python 스크립트입니다. 이 코드는 공식 RPi.GPIO 문서를 따릅니다.
import RPi.GPIO as GPIO import time # BCM 핀 번호 지정 사용 GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) # GPIO18을 PWM 출력으로 설정 Servo_pin = 18 GPIO.setup(servo_pin, GPIO.OUT) # 50Hz에서 PWM 인스턴스 생성 pwm = GPIO.PWM(servo_pin, 50) pwm.start(0) # 0%로 시작 듀티 사이클 def set_servo_angle(angle): """ 각도(0~180)를 듀티 사이클(2.5~12.5)로 변환 공식: 듀티 = (각도 / 180)10 + 2.5 각도 180인 경우 여러 서보 데이터시트 """로 확인됨: 각도 = 180 듀티 = (각도 / 180.0)10.0 + 2.5 pwm.ChangeDutyCycle(duty) # 서보가 위치에 도달하도록 허용 time.sleep(0.5) # 지터를 줄이기 위해 신호 전송을 중지합니다(선택 사항) pwm.ChangeDutyCycle(0) time.sleep(0.1) try: while True: print("0°로 이동") set_servo_angle(0) time.sleep(2) print("Moving to 90°") set_servo_angle(90) time.sleep(2) print("180°로 이동") set_servo_angle(180) time.sleep(2) Except KeyboardInterrupt: print("사용자에 의해 중지됨") pwm.stop() GPIO.cleanup()
주요 세부정보:각 위치 이후 코드는 듀티 사이클을 0%로 설정하고 0.1초 동안 기다립니다. 이는 지속적인 전력 소모를 방지하고 서보 지터를 감소시킵니다. 많은 온라인 예제에서는 이를 생략하여 불필요한 전류 소모를 초래합니다.
스크립트를 다음과 같이 저장하십시오.Servo_control.py. 터미널에서 다음을 실행합니다.
python3 서보_컨트롤.py
예상되는 동작:서보 샤프트는 0°로 회전하고 2초 동안 정지한 후 90°로 이동하고 정지하고 180°로 이동한 후 반복합니다.
서보가 움직이지 않는 경우:
공통점을 확인하세요 – 가장 빈번하게 발생하는 실수
외부 전원 공급 장치가 켜져 있고 최소 5V를 제공하는지 확인하세요.
GPIO 핀 번호 확인(BCM 18 = 물리적 핀 12)
이후 수면시간을 줄인다ChangeDutyCycle? 아니요 – 서보가 위치에 도달하려면 ~300-500ms가 필요합니다.
대화형 프로젝트의 경우 MCP3008 ADC를 사용하여 아날로그 전위차계를 읽을 수 있습니다(Raspberry Pi에는 아날로그 입력이 없으므로). 그러나 테스트를 위한 더 간단한 방법은 키보드 입력을 사용하는 것입니다.
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) pwm = GPIO.PWM(18, 50) pwm.start(0) def angle_to_duty(angle): return (angle / 180.0) * 10.0 + 2.5 try: while True: cmd = input("각도 입력(0-180) 또는 종료하려면 'q': ") if cmd == 'q': break try: angle = float(cmd) if 0
반복되는 핵심 내용:Raspberry Pi로 서보를 안전하고 정확하게 제어하려면 (1) 서보용 외부 5V 전원 공급 장치를 사용하고, (2) Pi, 서보 및 전원 공급 장치 간의 공통 접지를 연결하고, (3) 듀티 사이클이 0.5~2.5ms 펄스에 해당하는 50Hz PWM 신호를 생성하고, (4) 각 이동 후 PWM 신호(0% 듀티)를 중지하여 지터와 전력 소비를 줄여야 합니다.
이 가이드를 적용하기 위한 조치 단계:
1. 위에 나열된 구성 요소를 모으십시오. 특정 브랜드가 필요하지 않으며 표준 5V 서보가 작동합니다.
2. 그림과 같이 정확하게 배선하고 공통 접지 연결을 다시 확인하십시오.
3. Python 스크립트를 복사하고 실행합니다. 서보가 0°, 90°, 180°로 움직이는 것을 관찰합니다.
4. 프로젝트 요구 사항에 맞게 스크립트의 각도 값을 수정합니다.
5. 생산 또는 장기 실행 프로젝트의 경우 항상 하드웨어 PWM을 사용하고 서보 전력선 전체에 100~470μF 전해 커패시터를 추가하여 전압 스파이크를 완화하십시오.
추가 검증을 위한 신뢰할 수 있는 출처:공식 Raspberry Pi 문서(/documentation/computers/os.html#gpio-and-the-40-pin-header) 및 서보 모터의 데이터시트(일반적으로 제조업체 웹사이트에서 구할 수 있음) 항상 특정 서보의 펄스 폭 범위를 참조하십시오. 0.5~2.5ms가 표준이지만 일부 서보는 0.7~2.3ms를 사용합니다. 서보를 스윕하고 실제 한계를 기록하는 간단한 교정 스크립트는 완벽한 정확성을 제공합니다.
업데이트 시간:2026-04-18