게시됨 2026-04-05
이 가이드는 표준을 제어하는 단계별 방법을 제공합니다.서보 기구Python을 사용하여 ESP32 보드가 있는 모터. 로봇 팔, 팬틸트 카메라 마운트 또는 간단한 이동 소품을 제작하는 경우 정확한 배선, Python 코드 및 교정 단계를 배우게 됩니다.서보 기구정확하게 움직여라. 모든 예제는 일반적인 실제 상황을 기반으로 하므로 자신의 프로젝트에 즉시 적용할 수 있습니다.
ESP32 개발 보드 1개(모든 일반적인 변형)
1개의 표준 5V서보 기구모터(예: SG90 또는 MG995 유형)
외부 5V 전원 공급 장치(고토크 서보를 사용하는 경우)
점퍼 와이어(암-암)
ESP32에 MicroPython 펌웨어가 설치된 컴퓨터
> 중요한: ESP32의 3.3V 핀에서 직접 서보에 전원을 공급하지 마십시오. 대부분의 서보에는 5V가 필요하며 보드가 안전하게 제공할 수 있는 것보다 더 많은 전류를 끌어올 수 있습니다. 서보에는 별도의 5V 전원을 사용하고, ESP32에는 신호선만 연결하세요.
열고 닫히는 간단한 로봇 발톱을 만든다고 상상해 보세요. 일반적인 MG995 서보가 있습니다. 다음과 같이 연결하십시오.
임계점: 외부 전원 공급 장치의 접지~ 해야 하다ESP32 GND에 연결하세요. 이러한 공통 접지가 없으면 신호가 불안정해지고 서보가 흔들리거나 움직이지 않게 됩니다.
ESP32는 50Hz PWM 신호(주기 = 20ms)를 생성하여 서보를 제어합니다. 서보의 위치는 펄스 폭(0°의 경우 0.5ms, 90°의 경우 1.5ms, 180°의 경우 2.5ms)에 따라 결정됩니다.
다음은 테스트를 거친 완전한 MicroPython 스크립트입니다. 다른 이름으로 저장main.pyESP32에서.
기계 가져오기 핀에서 PWM 가져오기 시간 # GPIO15 사용 – PWM을 지원하는 모든 핀으로 변경할 수 있습니다. SERVO_PIN = 15 # 표준 서보 주파수: 50Hz PWM_FREQ = 50 # 0°, 90°, 180°에 대한 듀티 사이클 값(50Hz로 계산됨) # 16비트 PWM 분해능(0–65535)의 경우: # 듀티 = (pulse_width_ms / 20ms)65535 # 0.5 ms -> 1638 (0°) # 1.5 ms -> 4915 (90°) # 2.5 ms -> 8192 (180°) DUTY_0 = 1638 DUTY_90 = 4915 DUTY_180 = 8192 # 서보 핀 서보에서 PWM 초기화 = PWM(Pin(SERVO_PIN), freq=PWM_FREQ, Duty_u16=DUTY_90) # 90°에서 시작 def set_angle(angle): """ 서보 각도를 설정합니다(0° ~ 180°). 각도를 듀티 사이클에 선형적으로 매핑합니다. """ # 유효한 범위에 대한 클램프 각도 angle = max(0, min(180, angle)) # 선형 매핑: Duty = DUTY_0 + (angle/180)(DUTY_180 - DUTY_0) Duty = int(DUTY_0 + (angle / 180) * (DUTY_180 - DUTY_0)) Servo.duty_u16(duty) # 예: 앞뒤로 스윕 while True: for angle in range(0, 181, 10): set_angle(angle) time.sleep_ms(50) for angle in range(180, -1, -10): set_angle(각도) time.sleep_ms(50)
1. ESP32에 MicroPython 펌웨어를 플래시합니다(아직 수행하지 않은 경우).
2. 설명대로 서보를 연결합니다.
3. 다음과 같은 도구를 사용하여 스크립트를 보드에 복사합니다.mpremote아니면 토니.
4. 스크립트를 실행합니다. 서보는 0°에서 180°까지 반복적으로 스위프하고 뒤로 돌아갑니다.
서보 모델마다 펄스 폭 범위가 약간 다릅니다. 예를 들어, 저렴한 SG90은 0.5ms~2.4ms로 작동하는 반면, 토크가 높은 MG996R은 0.6ms~2.4ms를 사용할 수 있습니다. 일반적인 0.5~2.5ms 범위는 대부분의 경우 작동하지만 항상 보정해야 합니다.
교정 방법(로봇 팔 프로젝트의 실제 사례):
듀티 사이클을 1638로 설정하고 실제 각도를 기록해 둡니다.
서보가 0°에 도달하지 않으면 움직임이 멈출 때까지 듀티를 약간(예: 1700) 늘립니다.
8192에서 감소시켜 180°에 대해서도 동일하게 수행합니다.
측정된 DUTY_MIN 및 DUTY_MAX를 사용하십시오.set_angle()기능.
서보는 듀티 사이클 비율이 아닌 펄스 폭으로 제어됩니다.주파수는 정확히 50Hz(주기 20ms)여야 합니다. 펄스 폭을 0.5ms에서 2.5ms 사이로 변경하면 서보가 0°에서 180°로 회전합니다. 마이크로파이썬에서는의무_u16()방법에서 펄스 폭에서 듀티 값으로의 매핑은 PWM 해상도(ESP32에서는 항상 16비트)에 따라 달라집니다. 제공된 공식이나 선형 매핑 함수를 사용하세요.
1. 항상 간단한 스윕 테스트로 시작하세요.– 결선 및 기본 PWM 동작을 확인합니다.
2. 로직 분석기 또는 오실로스코프 사용서보가 이상하게 동작하는 경우 펄스 폭을 확인합니다.
3. 배터리 구동 프로젝트용, 서보 전원 단자 전체에 대형 커패시터(470μF 이상)를 추가하여 전압 강하를 흡수합니다.
4. 프로젝트에 여러 개의 서보가 필요한 경우, 별도의 GPIO 핀에서 각각을 제어하되 총 전류가 전원 공급 장치의 정격을 초과하지 않는지 확인하십시오.
ESP32 및 Python을 사용하여 서보를 제어하는 것은 간단합니다. 신호선을 PWM 지원 GPIO에 연결하고, 공통 접지로 별도의 5V 전원을 제공하고, 50Hz PWM 신호를 생성하고, 듀티 사이클을 조정하여 펄스 폭을 0.5ms에서 2.5ms 사이로 설정합니다. 제공된 코드는 대부분의 표준 서보에서 기본적으로 작동합니다. 이동 범위가 올바르지 않은 경우 특정 서보의 최소 및 최대 듀티 값을 보정하십시오. 이제 ESP32 기반 프로젝트에 정확한 모션을 통합할 준비가 되었습니다.
업데이트 시간:2026-04-05