본문 바로가기
Embedded System/마이크로컨트롤러

ADC(Analog Digital Converter)란?

by MachineJW 2023. 3. 2.

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로 입력되는 신호의 저항 값은 비교기의 입력 임피던스보다 훨씬 낮아야 한다.