오늘은 MCU가 디지털이 아닌 아날로그 신호를 어떻게 읽는지에 대한 핵심인 ADC (Analog to Digital Converter) 를 알아본다.
1. 아날로그 vs 디지털
1.1 디지털 신호
- 0 또는 1로 구성됨 (HIGH or LOW)
- 버튼 입력, LED 출력 등
1.2 아날로그 신호
- 전압이 연속적인 값 (예: 0.0V ~ 3.3V)
- 온도, 조도, 습도, 거리 등 센서 값은 대부분 아날로그
2. ADC란?
2.1 정의
Analog to Digital Converter (ADC)
→ 전압 신호를 MCU가 처리할 수 있도록 디지털 값으로 변환하는 기능.
2.2 기본 개념
입력 전압 | ADC 해상도 | 디지털 출력 |
0.00V | 10-bit | 0 |
3.30V | 10-bit | 1023 |
1.65V | 10-bit | 512 (중간값) |
MCU는 전압을 직접 “읽는” 게 아니라, 이를 정해진 비트 수로 분할해 숫자값으로 샘플링한다.
3. 실전 예시 (Arduino 기준)
아두이노의 기본 ADC 해상도는 10비트(0~1023)이고,
기준 전압은 보통 5V 또는 3.3V이다.
3.1 센서 회로 구성
- 온도센서 (예: LM35)를 A0 핀에 연결
- GND, VCC(5V)도 함께 연결
3.2 코드 예시
void setup() {
Serial.begin(9600); // 시리얼 출력 시작
}
void loop() {
int analogValue = analogRead(A0); // 0~1023의 값
float voltage = analogValue * (5.0 / 1023.0); // 전압으로 환산
float tempC = voltage * 100.0; // LM35는 10mV = 1°C
Serial.print("Raw: "); Serial.print(analogValue);
Serial.print(" | Voltage: "); Serial.print(voltage);
Serial.print(" V | Temp: "); Serial.print(tempC); Serial.println(" °C");
delay(1000);
}
4. 주의할 점
- 노이즈 제거를 위해 샘플링 평균을 적용하면 정확도 향상
- 기준 전압(Aref) 설정이 중요
- 일부 MCU는 12-bit, 16-bit ADC도 지원함 (더 높은 정밀도)
5. 참고자료
Analog to Digital Conversion - SparkFun Learn
SparkFun Electronics ® / 6333 Dry Creek Parkway, Niwot, CO 80503
learn.sparkfun.com
'TIL > Embedded' 카테고리의 다른 글
[임베디드] I2C, SPI 개념 정리 (0) | 2025.06.15 |
---|---|
[임베디드] 디지털 입출력 예시 (0) | 2025.06.10 |
[임베디드] Mosquitto란? (0) | 2025.06.07 |
[임베디드] MQTT란 무엇인가? (0) | 2025.06.07 |
[임베디드] UART 실전 시리얼 패킷 분석 (0) | 2025.05.25 |