1. ADC란?
Analog Digital Converter(ADC)는 마이크로컨트롤러(MCU)에서 0과1의 이산적인 신호가 아닌 0~3.3V 또는 0~5V의 전압(연속적인 아날로그 신호)을 프로그램에서 사용가능한 디지털 값으로 변환하는 역할을 한다.
ESP32의 경우에는 0~3.3V의 전압을 프로그램에서 사용가능한 0~4095의 범위로 변환한다.
2. 연속근사기법(Successive approximation)
마이크로컨트롤러(MCU)는 연속근사라는 기법을 사용하여 아날로그신호를 디지털신호로 변환한다.
- 아날로그 입력으로 사용되는 GPIO(ADC)핀은 전압 비교기의 두 입력 중 하나에 연결됨
- 비교기의 나머지 입력은 DAC출력과 연결됨
- 마이크로컨트롤러(MCU)에서 D0~D9 (10bit resolution)을 통해 디지털 신호가 DAC에 전달되면, DAC는 그 값에 해당하는 아날로그 전압을 발생시킴
- D0~D9의 데이터가 모두 LOW 이면 DAC 출력 전압은 0V, 모두 HIGH이면 DAC 출력 전압은 MCU 전원 전압( ADC로 읽을 수 있는 최대 전압)이 된다.
- 비교기의 역할은 DAC 출력전압과 ADC핀에서 들어오는 아날로그 입력 전압을 MCU에 피드백 한다.
- MCU는 DAC와 아날로그입력 전압 차이를 줄일 수 있도록 D0~D9 값을 바꿔 DAC 출력전압을 높이거나 낮춘다. 이 과정은 두 전압이 같아질 때까지 단계별로 점진적으로 이루어진다.
- DAC에 입력되는 비트의 갯수를 분해능(Bit resolution)이라고 하며 이 비트의 갯수 만큼 위 과정의 단계 수 가 정해진다.
ADC 변환과정은 최상위 비트(MSB)인 D9에서 시작하고 MCU의 전원 전압은 5V라고 가정한다.
D9 비트는 HIGH이고 나머지 D8~D0 비트는 모두 LOW라고 가정하면 DAC 출력전압은 2.5V가 된다.(전원전압의 절반) ADC핀에서 들어오는 입력 전압이 이 값보다 큰 경우 비교기의 출력은 HIGH가 된다. 반대로 작으면 LOW가 된다. 비교기의 출력이 HIGH라면 마이크로컨트롤러는 D9의 비트 값을 1(HIGH)로 설정하고 그 다음 하위 비트인 D8 비트로 이 값을 내려 보낸다. 새로운 D9~D0 값은 DAC에서 아날로그 전압으로 변환되고 이 값은 ADC핀의 입력전압과 비교기에서 또 다시 비교된다. 이 과정을 DAC의 모든 비트에 대해 되풀이 한다.
MCU마다 ADC의 비트 분해능(Bit resolution)은 다를 수 있다. ESP32 ADC의 경우 12bit의 분해능을 가지고 있으며 0~ 3.3V 전압을 ( 2^12 ) - 1 = 4095 까지의 범위로 변환할 수 있다.
비트 해상도가 많을 수록 아날로그 신호를 더 정확하게 디지털 값으로 변환할 수 있지만, 변환하는 데 더 많은 시간이 걸린다는 단점도 있다.
3. 비교기의 입력 임피던스
대부분의 마이크로컨트롤러에 내장된 비교기의 입력 임피던스는 MΩ단위 (메가는 SI단위계에서 10^6)로 매우크다. ADC로 입력되는 신호의 저항 값은 비교기의 입력 임피던스보다 훨씬 낮아야 한다.
'Embedded System > 마이크로컨트롤러' 카테고리의 다른 글
[MCU] ESP32-WROOM-32 데이터시트 분석 (0) | 2023.08.03 |
---|---|
ESP32-DevkitV4 GPIO 기능 정리 (0) | 2023.04.12 |
ESP32 DevkitC V4 가이드 (1) | 2022.12.14 |
GPIO(범용 입/출력 핀)의 기본적인 기능 (0) | 2022.11.29 |
마이크로컨트롤러(MCU) (0) | 2022.11.27 |