본문 바로가기
Embedded SW/Embedded SW Introduction

10. MCU안에 있는 ADC란 무엇인가?

by 방구석 임베디드 2021. 7. 21.
반응형

ADC는 Wiki에서 아래와 같이 정의하고 있씁니다.

아날로그-디지털 변환회로는 A/D 컨버터(Analog-to-digital converter) 또는 간단하게 ADC라 하며, 아날로그 전기 신호를 디지털 전기 신호로 변환하는 전자 회로이다

그런데, ADC를 정확히 알기위해서 잠시 아래의 Background 설명이 추가로 필요합니다.

 

아래 그림은 ECU를 나타내고 있습니다.

ECU는 Electric Control Unit이라고 불리는 어떠한 것을 제어하기 위해 만든 보드입니다.

저 ECU가 TV에도 들어가고, 냉장고에도 들어가고, 자동차에도 들어가서

무언가를 제어하는 역할을 수행합니다.

그런데, 이 ECU안에는 저 위의 동그리미를 친것과 같은 검은 박스가 들어 있습니다.

그것은 MCU라고 불리는 Micro Control Unit입니다.

저 검은 박스 안에는 CPU도 들어있고 메모리도 들어 있습니다.

그리고 ADC라는 모듈도 들어 있습니다.

 

오늘 저는 저 ADC라는 것에 대해서 설명을 하려고 합니다.

MCU는 무언가를 제어하기 위하여 특수로 제작한 모듈이라고 다시 한번 말씀드립니다.

무언가를 Control 하기 위해서는 Sensor를 통해 다양한 전압값을 획득해야 합니다.

예를 들어 보일러안에는 물의 온도를 측정하기 위한 온도 센서가 존재합니다.

그리고 그러한 온도 센서는 전압으로 변환되어 MCU에게 전달이 됩니다.

 

다시말해 MCU는 0~5V 사이의 값으로 다양한 전압값을 전달 받습니다.

그런데, MCU는 이러한 아날로그 값을 인식할까요?

MCU는 아날로그 값을 인식할수 없습니다.

그렇기 때문에 컴퓨터가 아는 디지털 값으로 변환을 해서 저장을 해야합니다.

 

이떄 아날로그값을 디지털 값으로 변환하는 모듈이 ADC 모듈이라고 합니다.

ADC는 Analog-to-digital converter의 약자입니다.

보통 32비트 고급 MCU에는 12비트의 디지털 값으로 아날로그값을 변환하여 저장합니다.

12비트면

(2^12) -1 = 4095

따라서 0~5V의 값을 0~4095로 표현할수 있습니다.

 

예를 들어 2.5V의 경우

(2.5/5) * 4095 =  2048로 값을 획득하게 됩니다.

 

여기서 비트가 클수로 더 많은 값의 표현이 가능해 지기 때문에 분해능이 높다고 표현합니다.

ex. 8비트 --> 0~255의 수로 0~5V를 표현해야한다. 2.5V의 경우 128이므로

훨씬 더 세밀한 단위를 표현할수가 없습니다.

 

그림으로 예를 들자면 아래와 같습니다.

그렇다면 어떠한 원리로 0~5V의 값을 12비트의 값으로 변환하는 것일까요?

아래 그림은 가장 일반적으로 사용하는 계수형 ADC입니다.

여기서 DAC는 Digital 값을 Analog 값으로 역으로 변환 시키는 장치입니다.

이 DAC값을 실제 아날로그 값과 Op Amp로 비교연산을 수행하여

DAC의 출력값이 Analog Input과 일치하는 순간의 Counter값을 Digital Output 값으로 획득합니다.

 

하지만 정말 빠른 변환이 필요한 경우에는

 

 

일반적인 경우에 사용이 되면

정말 빠른 ADC 변환이 필요한 경우에는 병렬비교 ADC를 사용합니다.

병렬 비교 ADC는 Voltage Divider를 통해 바로 Vin과 비교를 하여 이산값을 획득함으로

속도면에서 계수 비교 ADC 보다 성능이 좋습니다.

하지만 비싸다는 단점이 있습니다.

 

앞으로 실제 32비트 고급 MCU를 이용하여

ADC Driver를 초기화하고, 아날로그값을 디지털 값으로 변환 시키는 작업을 수행해 보도록 하겠습니다.

반응형

댓글