본문 바로가기

아두이노/아두이노 공부하기!

7. [Tutorial] 아두이노 아날로그 심화(ADC)

이번 시간에는 아날로그 심화편으로 좀 더 ADC를 깊게 파헤쳐보자.


단순히 아두이노를 사용하기위한 목적이라면 SKIP하고 바로 실습편으로 넘어가도 된다.

아두이노 아날로그 실습(가변저항) - http://openstory.tistory.com/64


----------------------------------------------------------------------------------------------------------------------


ADC를 사용하는 이유에 대해서 다시 언급하겠다.

ADC란 Analog to Digital Converter로 아날로그 신호를 MCU에서 인식할 수 있도록 디지털 신호로 변환하는 과정으로 사용된다.

즉, 아날로그 신호를 디지털로 바꿔서 MCU에서 사용할 수 있게 한다.

아날로그 전압 신호는 시간 축과 전압 축에 대해 연속적인 값을 가진다.

디지털 전압 신호는 이산화된 시간축에 이산화 된 값을 가진다. 즉 0과 1로 표현한다.

아래 그림은 아날로그 신호를 디지털로 변환하기 위해 사용되는 그림을 나타낸다.


1. 아날로그 신호 입력.

2. 샘플링(표본화) - 시간 축 방향으로 연속된 아날로그 신호를 어떤 시간 간격으로 나누고, 나눈 시간 간격의 값을 추출(표본)해서 추출한 표본으로 샘플을 만드는 것.

3. 양자화 - 샘플링한 시간 간격의 값들을 반올림하는 과정 (즉, 10진수 값으로 변환)

   -> 정확히 말하면 샘플링한 값은 예를들어 3.2155315....V 로 굉장히 온전한 아날로그 값에 가까운 값을 나타낸다.

       이를 디지털로 바꾸기 위해서 반올림을 한다. 그렇다면 어떻게 반올림을 할까??

       그건 ADC에 있는 비트의 수로 결정이 된다. (ADC가 10bit면 10bit까지만 값이 나오고 그 이후엔 반올림되어 사라진다.)

       10bit는 2의 10승으로 1024까지 수를 나타낼 수 없기 때문에 이후에는 반올림시키게 된다.

4. 복호화 - 양자화된 디지털 진폭 값들을 이용하여 디지털 신호 값(2진수)으로 변환

그리고 복호화 과정에서는 OPAMP(비교기)를 이용하여 이를 디지털 값으로 나타나게 된다.

기본 원리는 아래에서 설명한다.


----------------------------------------------------------------------------------------------------------------------


*** 여기서 취급할 수 있는(사용할 수 있는) 신호는 샘플링 주파수의 1/2까지다.

이 말이 무엇이냐면,

CD의 경우, 샘플링 주파수가 44.1KHz이다. 그러면 이론적으로 22Khz까지 실제 데이터로 사용이 가능하다. (즉 원래의 아날로그 값으로)

근데 안전을 위해서 실제론 20Khz까지만 실제 데이터가 된다.


----------------------------------------------------------------------------------------------------------------------


이러한 복호화 과정을 하기 전에, ADC의 기본 원리는 다음과 같다.

아날로그 전압이 ADC로 입력되면 짧은 시간동안 입력된 전압을 S/H(샘플 앤 홀드)에 충전한다.

샘플 앤 홀드를 사용하는 이유는 아날로그 신호를 디지털 신호로 변환 중에 샘플링 값에 변동이 있으면 안된다.

그래서 다음 샘플이 얻어질 때까지 샘플 값을 유지하는 것이 샘플 앤 홀드이다.


샘플 앤 홀드의 기본은 저항과 스위치 그리고 캐패시터를 이용한다. 여기서 스위치가 매우 짧은 시간(샘플링 주파수의 역수(fs) - LPF) 동안 닫혔다가 열리고 그 시간동안 입력전압 Vin의 값은 캐패시터에 충전된다.

이렇게 캐패시터에 충전된 전압값이 OPAMP 비교기로 전달되게 된다.


샘플 앤 홀드를 이용하여 전달받은 전압을 이용하여 OPAMP 비교기에서 Vref 값과 비교한다.

- Vref > Vin = 0 

- Vref < Vin = 1

위 두 경우로 값이 표현된다.

여기서 4bit ADC는 위 그림의 1bit ADC가 4개 연속으로 연결되어 있다. (아래 그림은 4bit ADC이다)

ADC가 V = 15V , I = 1A로 동작하는경우, OPAMP의 - 부분의 각 저항은 각각의 전압이 인가된다.

15V가 OPAMP의 - 의 부착되어 있는 저항으로 인해 전압 값이 순서대로 낮아지게 된다.

낮아진 전압을 각 OPAMP 비교기의 Vref로 인가하게 된다.

그리고 Vin이 오는 값을 비교해서 이를 bit로 표현하여 출력한다.


만약, Vin이 2.5V가 인가되었다고 하자.

그리고 OPAMP 비교기의 동작을 다시 표현하면 아래와 같다.

- Vref > Vin = 0 

- Vref < Vin = 1


그러면 이를 이용해서 계산한다면,

2.5V이 Vref보다 높으면 1 낮으면 0이 되므로 0.47V, 1V, 2V는 1이 되고 3V는 2.5V보다 크니깐 0이 출력될 것이다. (0111)


아두이노의 경우 10bit ADC이기 때문에 위 OPAMP 비교기가 10개가 있다.


----------------------------------------------------------------------------------------------------------------------


ADC의 성능은 크게 2개의 파라미터로 표현된다. 

1. 시간 축의 분해능을 나타내는 샘플링 주파수.

2. 전압 축의 분해능을 나타내는 비트 수.


빠른 샘플링 주파수는 입력전압의 빠른 변화에도 충실히 그 전압 값을 디지털로 표현할 수 있게 해준다.

또한 높은 ADC의 비트 수는 전압 공간의 분해능이 좋아져 보다 정밀한 디지털 값으로 전압을 표현할 수 있다.


여기서 비트의 수가 높아지면 전압공간의 분해능이 좋아진다는 말은 위에 양자화에서 나타낼 수 있는 전압의 값이 더 세밀하게 된다는 의미.

그래서 반올림하는 위치가 더 늘어난다는 의미가 된다.


여기서 분해능이란 "얼마나 더 많이 분해할 수 있는가(정밀하게 나눌 수 있는가)" 이다.


따라서 고 성능 ADC는 AD의 변환시간이 짧고 비트 수가 높은 ADC를 말한다. (가격도 더 비싸다.)


통상적으로 많이 사용되는 ADC는 10bit 이상의 변환 시간은 수백 마이크로초 이하 이다.

----------------------------------------------------------------------------------------------------------------------

첨언으로 디지털의 가장 큰 장점은 노이즈에 강하다는 것이다.

이유는 아무리 신호가 뭉개져도 결국 0, 1로만 복원만 시키면 되기 때문이다.

즉, 외부에서 들어오는 열이라던가, 잡음이라던가 많은 노이즈가 첨가되지만 디지털은 이 것을 비교기등 복원 회로를 거쳐 복원이 가능하다.

아날로그의 경우 노이즈에 굉장히 취약하기 때문에 디지털로 사용하는 경우도 있다.

----------------------------------------------------------------------------------------------------------------------

출처: http://withrobot.com/technicalreport28/


ADC 참고 이론

다른 블로그: http://roundhere.tistory.com/entry/%EC%95%84%EB%82%98%EB%A1%9C%EA%B7%B8-%EC%83%98%ED%94%8C%EB%A7%81-%EB%94%94%EC%A7%80%ED%84%B8-%EC%A7%80%ED%84%B0

정보통신기술용어해석: http://www.ktword.co.kr/abbr_view.php?m_temp1=978