Analog Input

/ Analog Input  |   Potentiometer  |   LM35  |   LM35-MP20

     아래 그림은 스위치의 눌림에 따라 발생되는 전압의 변화를 읽어 LED를 켜고 끄는 회로로써, 스위치의 상태에 따라 5 V와 0 V두 신호가 발생한다. 이러한 신호를 Microcontroller의 Digital Input을 사용하여 받아 들일 수 있다. 스위치가 눌리지 않았을 경우 5 V 출력(스위치 양단 전압)이 발생되고 이를 Digital Input으로 읽어들이면 1 이라는 값으로 Microcontroller는 그 값을 표현한다. 스위치를 누르는경우 출력 값은 0 V 따라서 Microcontroller는 0의 값으로 0 V를 읽게 된다. 이러한 스위치의 눌림 상태의 출력 값은 5 V 또는 0 V이기 때문에 1 또는 0의 값 만으로도 스위치의 상태를 표현 할 수 있다.


Microcontroller의 Digital Input을 사용하여 스위치의 상태를 읽기위한 회로


     그러나 LM-35 온도센서를 사용하여 온도를 측정하는 경우, 센서의 출력 값은 온도에 비례하는 값으로 (V = 0 mV + 10.0 mV/C) 연속적인 신호를 출력한다. 이러한 신호를 연속적인(Analog) 신호라고 하며, Digital Input에서 사용하는 1 또는 0의 값만으로는 온도 센서의 출력 값을 표현 할 수 없다. LM-35와 같은 센서들의 출력 값은 무수히 많은 전압 값이 존재하고, 이것을 읽기 위하여 많은 Microcontroller들은 Analog Input 기능을 제공하고 있고 이를 사용하여 센서의 출력 값을 받아 들일 수 있다.

     
ref) http://www.ti.com/lit/ds/symlink/lm35.pdf
LM35를 사용한 기본 회로



Analog Input은 온도, 습도, 그리고 빛을 측전 할 수 있는 다양한 센서 출력을 받아들이기 위하여 매우 중요한 신호처리방법으로 ADC (Analog Digital Converter, 아날로그 디지탈 변환기) 전저소자를 사용한다. 이소자는 아날로그 신호를 디지탈 신호로 변환할 수 있는 소자로 센서의 출력 신호를 받아 들이기 위하여 흔하게 사용합니다. 일반적으로 많은 Microcontrollere들은 내부에 ADC를 내장하고 있어 Analog Input을 쉽게 사용할 수 있다.

ref 1) What is analog I/O? (https://www.contec.com/...)

      아래 표는 빛의 밝기에 따라 저항값이 변하는 센서(Light-dependent resistor)인 CdS의 빛의 있고 없음에 따른 저항값 변화를 나타낸 표로 어두울때와 밝을때의 저항값을 보여주고 있다. 표에서는 단지 3종류의 발기에 해당하는 저항값을 보여주고 있지만 실제로는 무수히 많은 빛의 밝기가 존재하고 이에 따라 저항값 역시 무수히 많은 값을 가지게 된다. 이러한 값을 Digital Input으로 받아 들이기 어려우며 Analog Input을 사용하여 그 신호를 받아 들일 수 있다.

빛이 없을 때(dark)와 빛이 있을 때의 CdS의 저항값 및 출력 전압
Illumination (lux)RLDR (Ω)Vo (V)
Dark≥ 1.0 M≥ 4.9
109 k2.3
10004000.1


빛이 없는 경우 출력 전압은 4.9 V, 빛이 있는 경우 출력 전압은 0.1 V

     일반적으로 아날로그 입력을 사용하기 위하여 ADC를 사용하여야 하지만 많은 MCU는 자체적으로 ADC를 가지고 있어 따로 ADC를 사용할 필요가 없다. PIC Microcontroller 역시 10 bit 또는 12 bit ADC를 가지고 있어 이를 사용하여 센서 출력을 받아들여 디지탈 값으로 변환 할 수 있다.

     10 bit의 경우 2^10 = 1024 개의 표현 가능한 수가 생겨 입력 전압을 0 ~ 1023의 Digital 값으로 변환 할 수 있고,
     12 bit의 경우 2^12 = 4096 개의 표현 가능한 수가 생겨 입력 전압을 0 ~ 4095의 Digital 값으로 변환 할 수 있다.

     아래 그림은 그림은 두개의 저항 R1, R2를 사용하여 직렬 연결하고 그 사이의 전압을 측정한 경우로, 출력 전압 계산은 R1, R2, 그리고 걸어준 전압 5 V에 의하여 결정되며 수식은 아래와 같이 나타낼수 있다.

Vo = R2 / (R1+R2) x 5 V


     아래 그림과 같이 R1이 2K, R2가 8 K인 경우 출력 전압은

Vo = 8000 / (2000 + 8000) x 5000 mV = 4000 mV

로 계산됨을 알수 있다.

pic-01
두 저항값의 변화에 따른 전압변화
(그림을 마우스로 클릭하면 동영상을 볼 수 있습니다.)


     따라서 R1이 고정된 저항값이라고 가정하고 R2의 양단 전압을 측정하면 R2의 저항 값을 알수 있다. 이러한 방법으로 물리적 변화량을 정항의 변화로 변환시켜주는 센서의 경우에 적용가능하다.

     일반적으로 사용하는 가변저항의 경우 신호를 줄이기 위하여 흔하게 사용하는 전자부품으로 운동위치에따라 저항값이 변하는 특성을 가지고있다. 이러한 특성을 이용하여 각도 또는 위치 판단에 많이 사용한다. 이러한 가변저항은 아래 그림과 같은 원리로 되어있으며, 그림과 같이 가변저항 양단에 전압을 걸고 중심 전극에서 걸리는 정압을 측정하면 가변저항의 위치를 알 수 있다.

     
10k 가변 저항을 사용하는 경우, 출력 전압은 가운데 단자의 움직임에 따라 0 ~ 5000 mV 사이의 값을 보여준다.


     Microcontroller에 내장된 ADC를 사용하거나 외부에 ADC를 사용할 경우 ADC의 Bit에 따라 아래표와 같은 특성을 갖는다.

ADC 의 분해능에 따른 ADC 값 (Ref V: 5V사용하는 경우)
Input (mV)8 Bit10 Bit12 Bit16 Bit
00000
100520811310
25012512043276
500251024096553
10005120481913107
150076306122819660
2000102409163826214
3000153613245739321
4000204818327652428
50002551023409565535
Resolution19.6 mv/bit4.88 mv/bit1.22 mv/bit0.0763 mv/bit
Resolution0.39 %0.098 %0.0244 %0.00153 %

ADC 값 = Input 전압 * 최대 ADC 값 / 최대 입력 전압

10 Bit ADC를 사용하고 최대 입력전압이 5 V(5000 mV)인 경우
ADC 값 = Input 전압 * 1023 (최대 ADC 값) / 5000 mV (최대 입력 전압)
ADC 값 = Input 전압 * 1023 / 5000 mV -------------------- (1)
Input 전압 = ADC 값 * 5000 mV / 1023 -------------------- (2)

     ADC 값은 입력 전압과 ADC의 최대입력 전압 그리고 최대 ADC 값으로결정되며 식 (1)과 같이 구할 수 있으며, 읽은 ADC 값을 사용하여 식 (2)와 같이 입력 전압을 계산 할 수 있다. 식 (1)과 식 (2)는 간단하지만 ADC를 다루기 위하여 매우 중요하다.

     위의 표는 최대 입력전압이 5000 mV 일때 ADC의 분해능에 따른 ADC 값을 나타낸 것으로, 표에서 볼 수 있듯이 5.0 V (5000 mV)를 최대 입력 전압이라고 가정할 때 8 Bit ADC의 경우 1 개의 bit당 19.6 mV에 해당이되고 0.39 %의 분해능에 해당한다. 이에 비하여 12 Bit ADC의 경우 1 bit당 1.22 mV에 해당이되고 0.024 %의 분해능을 가지고 있어 8 Bit ADC에 비하여 16 배 정밀하게 측정 할 수 있다. 따라서 Analog 신호를 측정하기 위하여 ADC의 변환 속도 및 Bit Resolution은 매우 중요하며 목적에 맞게 사용하여야 한다.

참고:

     1. ADC 기초
     
     
     


 
TOP
Next >