ESP32에서 서보모터를 몇 개까지 제어할 수 있는지
GPIO 수가 아니라 하드웨어 PWM(LEDC) + 타이머 + 전원이 결정합니다.

 

1) ESP32 서보 제어 가능 개수 (핵심)

ESP32는 하드웨어 PWM(LEDC)을 지원합니다.

  • PWM 채널: 최대 16개
  • 타이머: 4개
  • GPIO: 거의 모든 핀 가능

👉 결론:

조건서보 개수

기본 (LEDC PWM) ✅ 16개
타이머 공유 ✅ 16개 이상 가능
안정적 운용 ⭐ 8~16개
PCA9685 사용 ✅ 16개 × N

✅ 현실적으로:
👉 ESP32 단독 = 8~16개 서보

2) 왜 ESP8266보다 많음?

항목ESP8266ESP32

PWM 방식 소프트웨어 하드웨어
PWM 채널 제한적 16개
WiFi 영향 거의 없음
서보 안정성 낮음 높음

👉 ESP32는 서보 제어에 훨씬 유리

3) 실제 제한 요소 (진짜 중요)

 (1) 전원 문제 ⚠️

서보 전류:

서보최대 전류

SG90 0.5A
MG90S 0.7A
MG996R 2A

예: MG90S 10개

0.7A × 10 = 7A

👉 ESP32가 아니라 “전원”이 먼저 한계

✅ 해결:

  • 외부 5~6V SMPS
  • DC-DC 컨버터
  • GND 공통

 (2) GPIO 선택 문제

ESP32에서 서보 추천 핀:

✅ 안정적 GPIO

  • 13, 14, 25, 26, 27, 32, 33

⚠️ 주의 핀

  • 0, 2, 4, 5, 12, 15 (부팅 영향)
  • 34~39 (입력 전용)

4) ESP32 서보 제어 코드 (LEDC 방식)

#define SERVO_PIN 26

const int pwmChannel = 0;
const int pwmFreq = 50;      // 50Hz (서보)
const int pwmResolution = 16; // 16bit

void setup() {
  ledcSetup(pwmChannel, pwmFreq, pwmResolution);
  ledcAttachPin(SERVO_PIN, pwmChannel);
}

void setServoAngle(int angle) {
  int duty = map(angle, 0, 180, 1638, 8192); // PWM 범위
  ledcWrite(pwmChannel, duty);
}

void loop() {
  setServoAngle(0);
  delay(1000);
  setServoAngle(90);
  delay(1000);
  setServoAngle(180);
  delay(1000);
}

 

5) 실무에서 쓰는 구조 (많이 쓰는 방식)

 방식 A: ESP32 단독

  • 서보 1~8개 → OK ⭐
  • 서보 8~16개 → 가능하지만 전원 중요

방식 B: ESP32 + PCA9685 (추천 ⭐⭐⭐)

칩: PCA9685

특징:

  • I2C 제어
  • 16채널 PWM
  • 정확한 타이밍

👉 사실상 표준 구조

가능 개수:

  • 16개 (칩 1개)
  • 32, 48, 64개 ... 확장 가능

6) 결론 (정확한 답)

💡 ESP32 서보 제어 가능 개수:

  • 이론적: 16개
  • 실용적: 8~16개 ⭐
  • 확장: 무제한 (PWM 드라이버)

👉 진짜 한계는 “전원과 발열”

 

728x90

+ Recent posts