4주차_참고 : DAC(Digital‐to‐Analog Converter) - dhryu60/SmartDevice_2025-1 GitHub Wiki
ESP32 DAC 강의 자료
DAC(디지털-아날로그 변환기)는 디지털 데이터를 아날로그 신호(전압)로 변환하는 장치입니다. ESP32는 2개의 8비트 DAC 채널을 제공하며, 오디오 출력, 아날로그 신호 생성, 센서 캘리브레이션 등에 활용됩니다.
- 내장 DAC 채널: 2개 (DAC1, DAC2)
- DAC1: GPIO25, DAC2: GPIO26
- 분해능: 8비트 (0 ~ 255 값 출력, 0V ~ 3.3V 범위)
- 출력 전압 범위: 0V ~ 3.3V (VDD에 따라 달라짐)
- 단순한 아날로그 신호 생성 가능 (파형 생성, 전압 제어)
- PWM 방식과 비교하여 출력이 부드러움
항목 | DAC (Digital-to-Analog Converter) | PWM (Pulse Width Modulation) |
---|---|---|
출력 방식 | 순수 아날로그 전압 출력 | 고속 ON/OFF로 평균 전압 생성 |
해상도 | 8비트 (0~255 단계) | 최대 16비트 (0~65535 단계) |
주파수 제한 | 제한 없음 | 1Hz ~ 40MHz 가능 |
신호 품질 | 부드러운 아날로그 신호 | 고주파 성분 포함 (필터 필요) |
전압 범위 | 0V ~ 3.3V | 0V ~ VDD (평균 전압) |
사용 예 | 오디오 출력, 정밀 신호 생성 | 모터 속도 제어, LED 밝기 조절 |
필터 필요 여부 | 불필요 | 저역통과 필터 필요 |
🔹 사용 추천:
- DAC 사용 → 부드러운 아날로그 출력이 필요한 경우 (오디오, 정밀 전압 조절)
- PWM 사용 → 스위칭 방식이 효율적인 경우 (모터, LED 제어)
ESP32는 dacWrite()
함수를 통해 DAC 출력을 설정할 수 있습니다.
#define DAC_PIN 25 // DAC1 (GPIO25)
void setup() {
}
void loop() {
for (int val = 0; val <= 255; val++) {
dacWrite(DAC_PIN, val); // 0~255 값을 DAC로 출력
delay(10);
}
for (int val = 255; val >= 0; val--) {
dacWrite(DAC_PIN, val);
delay(10);
}
}
설명:
-
dacWrite(pin, value)
: 지정된 핀에서 0~255 범위의 아날로그 값을 출력합니다. - 0은 0V, 255는 3.3V를 의미합니다.
- 위 코드는 DAC를 이용해 전압을 점진적으로 변화시킵니다.
#include <math.h>
#define DAC_PIN 25
void setup() {
}
void loop() {
for (int i = 0; i < 360; i++) {
int value = (sin(i * DEG_TO_RAD) * 127) + 128; // 사인파 값 생성 (0~255 범위)
dacWrite(DAC_PIN, value);
delay(5);
}
}
설명:
- 사인파 형태의 신호를 생성하여 부드러운 변화를 만듭니다.
- 아날로그 신호를 출력하여 오디오 또는 센서 캘리브레이션 등에 활용할 수 있습니다.
- 오디오 신호 생성 (DAC + I2S 활용 가능)
- 정밀한 아날로그 전압 출력 (센서 캘리브레이션, 기준 전압)
- 파형 생성 (사인파, 삼각파, 정현파 등)
- 전압 기반 아날로그 신호 출력 (전기적 제어 시스템)
- ESP32의 DAC는 8비트 해상도로 제한됨 (고해상도 출력은 I2S-DAC 사용 고려)
- 출력 전압 범위는 0V ~ 3.3V로 고정됨 (조정 불가)
- PWM과 다르게 전력 효율이 낮을 수 있음 (대용량 전류 공급 어려움)
- 고주파 신호 생성에는 적합하지 않음 (I2S 사용 추천)
ESP32의 DAC는 간단한 아날로그 신호 출력에 유용하며, PWM보다 부드러운 신호를 생성할 수 있습니다. 단, 8비트 제한이 있어 고해상도 출력이 필요한 경우 I2S DAC 모듈을 사용하는 것이 더 적합할 수 있습니다. 반면 PWM은 모터 및 LED 제어 등 빠른 ON/OFF 전환이 필요한 경우 더 효율적입니다. 프로젝트 목적에 맞게 DAC과 PWM을 적절히 선택하여 활용하는 것이 중요합니다.