A/D변환기 (Analog-to-Digital Converter)란 아날로그 전압을 디지털 값으로 변화시켜주는 장치로서 ATmega8(A)는 10비트 분해능의 A/D변환기를 내장하고 있다. 개략적으로 설명하면 변환하는 전압의 범위가 0~5V일 때 입력핀의 전압이 0V이면 0x000, 5V이면 0x3FF (0b11.1111.1111), 2.5V이면 0x1FF와 같이 연속적인 전압을 불연속적인 2진 숫자로 바꾸어주는 장치가 A/D변환기이다.


[그림 1] ATmega8(A) 의 ADC 내부 구조도


A/D변환기는 보다 안정된 동작을 위하여 AVR의 시스템 전원과 별도로 아날로그 회로의 전원핀 AVCC가 있으며 A/D변환에 필요한 기준 전압을 인가하는 AREF핀도 가지고 있다. 단, AVCC의 전압은 VCC에 인가되는 전압의 ±0.3V 이내로 유지되어야 한다. 이를 위해서 dateasheet에는 다음과 같은  간단한 LC 필터를 AVCC에 연결하도록 권장된다.


[그림 2] AVCC에 연결되는 LC필터


변환되는 전압의 최소값은 GND이며, 최대값은 AVCC/AREF/2.56V(내부 발생) 세 가지 중에서 선택적으로 설정할 수 있다.


[그림 2] ADC와 관련된 핀들


A/D 변환 핀은 PDIP패키지의 경우 ADC0~ADC5로 6개가 있으며 SFR의 설정에 따라 이들 중 하나의 핀을 선택하여 A/D 변환을 수행하게 된다. 단일 변환 시간은 13~250us이다.


 A/D변환 모드는 단일 변환 모드 (single conversion mode)와 연속 변환 모드 (free running mode)가 있는데 연속 변환 모드에서는 최대 분해능으로 초당 15,000번의 속도로 연속 변환을 수행토록 할 수 있다. A/D변환이 완료되면 변환 결과 값이 저장되는 SFR이 갱신되면서 A/D 변환 완료 인터럽트가 발생하도록 설정할 수도 있다.



Posted by 살레시오