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
'Hardware > ESP32' 카테고리의 다른 글
| ESP32 - I2C 기반 기능 및 디바이스 분석 (0) | 2026.02.06 |
|---|---|
| ESP32 지원 센서 종류 (0) | 2026.02.04 |
| ESP8266 + SH1106 조합형 한글 출력 #4(WebSerial) (0) | 2026.02.04 |
| ESP8266 + SH1106 조합형 한글 출력 #3 (0) | 2026.02.04 |
| ESP8266 + SH1106 조합형 한글 출력 #2(예제) (0) | 2026.02.04 |
