본문 바로가기
  • Masacorgi 's Dev Bloggg
TIL/Embedded

[임베디드] ADC란 무엇인가

by masacorgi 2025. 6. 9.


오늘은 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