본문 바로가기

카테고리 없음

[ADC] ADC란?

반응형

안녕하세요. 취업한 공대누나입니다.

오늘은 ADC에 대해 알아보도록 하겠습니다.

MCU에서 펌웨어 소스 코드를 짤 때 정말 많이 사용하는 기능 중 하나입니다.

예를 들어서 전압 값을 읽어야 할 때 0과 1로만 표현되는 디지털 값으로 받을 수는 없겠지요?

따라서 이러한 아날로그 값을 디지털로 변환하는 ADC가 필요한 것입니다.

 


1. ADC란?

Analog to Digital Converter의 약자입니다.

임베디드 시스템 내에서 처리되는 모든 데이터와 연산 등은 디지털화 되어 처리됩니다.

한편, 우리가 실제로 생활하는 실제적인 환경은 아날로그적인 양상을 나타내는 것들이 많습니다.

이러한 디지털과 아날로그 사이를 적절하게 처리해 주는 것이 ADC와 DAC라고 할 수 있습니다.

 

아날로그 신호란 시간축을 기준으로 연속적인 신호를 말하고, 디지털 신호는 시간축을 기준으로 불연속적인 신호를 말합니다. 아래와 같은 아날로그 신호를 양자화시켜서 디지털 신호로 바꾸는 것을 우리는 ADC라고 합니다.

이렇게 변환하는게 한 번에 뿅하고 되는 것은 아닌데요.

1) 필터링

우선 필터링을 걸쳐야 합니다. 아날로그 신호에는 상당한 노이즈들이 있기 때문에 이러한 노이즈들을 제거해주는 과정이 필요합니다.

 

2) 샘플링

그리고 샘플링 과정을 거치게 되는데요. x축 간격을 나누는 것을 말합니다.

 

같은 신호라도 왼쪽 처럼 간격이 큰 것보다 오른쪽 처럼 간격이 작아야지 원신호에 가깝게 되겠지요?

이 과정에서 한번쯤 배우는 것이 나이퀴스트 샘플링입니다.

샘플링을 하는 주파수는 입력 주파수의 최대 주파수보다 2배 이상이어야 한다는 이론인데 ADC-DAC를 거쳐서 원래의 신호로 복귀할 때 왜곡되지 않기 위해서 필요한 것입니다.

 

3) 양자화

양자화는 샘플링된 아날로그 신호를 디지털화 하는 작업을 말합니다.

x축만 현재 디지털화가 되어있는데, y축의 값도 디지털화가 되어야겠지요?

 

 

간단한 예시를 들고 왔는데요. 예를 들어서 1.8이라는 값은 2로, 2.7이라는 값은 3으로, 2.1이라는 값은 2로 매칭이 되는 것입니다.

이 때 resolution이라는 개념이 등장하는데요. 예를 들어서 지금 제가 예시로 든 것과 같이 1, 2, 3, 4, 5이런 식으로 값을 정할 것인지 혹은 0.5, 1, 1,5, 2와 같은 간격으로 값을 매칭시킬 것인지 또한 결정해주어야 합니다.

레벨을 촘촘하게 나누면 원래 아날로그 신호에 더 가까워지기는 하겠지만 처리해야 할 데이터 양이 많아지게 됩니다.

 

4) 부호화

2진수로 변환시켜주는 과정을 말합니다.

위에서 정한 해상도에 따라서 코드가 결정이 되는 경우가 많은데요.

처리하는 해상도가 2-bit라면 부여할 수 있는 코드는 00 01 10 11 4개의 코드만을 부여할 수 있는 것입니다.

 


2. Datasheet 예시

 

역시나 제가 주로 사용하는 SAM4S16C IC의 Datasheet를 천천히 읽어 보면서 주요 내용들을 정리해보도록 하겠습니다.

우선 보통 MCU에는 ADC핀이 따로 할당이 되어 있습니다.

데이터 시트 핀맵의 일부분을 가져와보았습니다. 

사용하시는 MCU에 따라 다르시겠지만 여기서는 AD4, AD13등 AD라는 이름이 붙은 핀이 ADC 핀입니다.

AD라고 되어있지 않은 핀에서 아날로그 값을 읽으려고 해봤자 읽을 수가 없다는 것입니다.

 

0V에서 ADVREF라는 핀에 인가된 전압 값 까지의 값을 ADC할 수 있으며 12bit의 resolution을 가지는 것을 알 수 있습니다.

 

ADC ON 신호를 준 후에 ADC Chaneel을 선택해주는 것을 볼 수 있습니다.

내가 설정한 핀에 맞게 0번 채널이면 0번 채널, 1번 채널이면 1번 채널을 select하고 adc를 시작해주면

일정 시간 후 Conversion이 완료되는 것을 확인할 수 있습니다.

 


 

ADC를 어떻게 하는지에 대한 감이 조금은 잡히셨나요?

막상 펌웨어로 하려고 하면 항상 마음대로 잘 안되곤 하는데요.

 그래도 디버깅을 계속 하다보면 언젠가는 숙달되는 날이 올 거라 생각합니다.

감사합니다.

반응형