마하전자기술연구소 LOGO

제품검색 고객센터053-604-2355
기술자료실

Home > 기술자료실 기술자료실

제 목 14) A/D변환의 사용법(8비트)
첨부파일


A/D변환의 사용법  

【1. A/D변환이란? 】

PIC16C7x 시리즈에는, 「A/D변환」이라고 하는 기능이 준비되어
있습니다. A/D와는 「Analog to Digital Converter」의 약어입니다.
이것은, 특정의 아날로그 입력 단자에 신호를 접속해, 그 아날로그
신호의 전압을 측정해, 디지탈 데이터로서 읽어낼 수가 있다
기능이 되고 있습니다.

PIC16C7x 시리즈에는 몇개의 종류가 있습니다만, 여기에서는
PIC16C711JW(자외선 소거 타입)(을)를 전제로 해 설명합니다.


【A/D변환의 정밀도란? 】

아날로그 신호의 전압치를 디지탈 신호로 변환할 때는, 도대체
어느 정도의 분해가능으로 표현하는가 하는 것이 문제가 됩니다.
그것을 표현하는 것이, A/D변환의 비트수로, PIC의 경우는 현재는
8비트의 분해가능이 되고 있습니다. 즉, 0~255까지의 256 단계에서
전압치를 표현할 수 있다고 하는 것이 됩니다.

이 분해가능을 정밀도라고 표현하는 일도 있습니다만, 정밀도라고 하면(자)
보통은, 8비트의 최하정도의 1비트 이하라고 하는 표현이 됩니다.
즉 1/256이하라고 하는 것입니다.
이 정밀도는 가까운 장래 10비트에서 12비트에 업 될 계획이
있습니다. 10비트라면 1024 단계, 12비트라면 4096 단계의 분해가능
(을)를 가지게 되어, 매우 세세한 표현이 가능해지게 됩니다.


【A/D변환에 필요한 변환 시간】

PIC에서는, A/D변환을 하기 위해서, 우선 아날로그 신호를 일단 내부의
콘덴서에 저축합니다.
그 후, 참조가 되는 일정한 전압을 가산해 비교하면서 계측 한다
그렇다고 하는 원리이기 (위해)때문에, A/D변환을 정확하게 실시하기 위해서(때문에)는, 축적한다
까지의 시간으로 계측 할 시간의 양쪽 모두를 확보하는 것이 필요하게 됩니다.
PIC의 경우, 이 시간이 어느 정도일까하고 말하면(자)

  축적 시간  =최소 약 12μsec
  계측 시간  =최소 약 1.6μsec×9.5=15. 2μsec

이것들을 가산해

  최소 반복 주기=최소 약 28μsec
  됩니다.
   
따라서, 더 이상의 고속으로 의 A/D변환 동작은 할 수 없다고 하는 것에
됩니다. (1초간에 약 35,000회의 계측)
한층 더 프로그램상, 이 시간을 의식해 두는 것이 필요합니다.

계측 시간에 대해서는, A/D변환용의 클락 지정이 한정되고 있어
이 클락의 시간을 Tad로 하면(자),
 최소 계측 시간=9. 5×Tad (μsec)  됩니다.

또,A/D변환용 클락 Tad는 최소 1.6μsec로 할 필요가 있습니다.
그러나, Tad에는 2 Tosc, 8 Tosc, 32 Tosc, Trc 의 4 종류의 지정 방법
밖에 없기 때문에, 예를 들면 10 MHz의 클락으로 1.6μsec 이상이라고 하면(자),

   Tad=32 Tosc=32×0.1=3.2μsec 되기 때문에 계측 시간은
   9.5×3.2=30.4μsec 됩니다.

결과적으로 클락이 10 MHz때의, 최소 반복 주기는, 42.4μsec
되어, 1초간에 최대에서도 약 23,500회 이상의 측정은 할 수 없는 것에
됩니다.


【계측 할 수 있는 실제의 전압치】

그럼 실제로 어느 정도의 전압을 측정할 수 있는 것일까요?
우선, 전압의 측정은,참조 전압(Reference) Vref가 기본이 됩니다.
측정치의 최대치가, 이 Vref가 됩니다. Vref는 아래와 같은 2 종류를 지정
할 수가 있습니다.

  (1) 외부 입력 지정의 경우 → 3.0V ~ Vdd
  (2) 전원 전압 지정의 경우 → Vdd(전원 전압)

따라서, 측정할 수 있는 전압은, 전원 전압을 5 V 그렇다면, 최소 분해가능은
8비트(즉1/256)이기 때문에,
   
  최대 측정 전압 → 3.0 ~ 5.0V
  최소 측정 전압 → 3/256 ~ 5/256V  됩니다.
         
( 약 12mV ~ 20mV)     


【A/D변환을 제어하는 레지스터와 제어의 흐름】

PIC로 A/D변환 기능을 사용할 때에 관계하는 레지스터는 아래와 같은 3 종류
있습니다.

(1) ADRES (Bank0)
  A/D변환의 결과의 데이터가 격납되는 레지스터
(2) ADCON0 (Bank0)
  A/D변환의 제어를 하는 레지스터로 클락 지정이나 스타트 지령을
  제어합니다.
(3) ADCON1 (Bank1)
  A/D변환의 입력 포토의 지정(채널 지정)을 실시합니다.

이러한 레지스터를 사용해 프로그램은 아래와 같은 흘러 나오고 실시합니다.

세치기를 사용하는 방법도 있습니다만, 변환 종료까지는, 수 10μsec 밖에
걸리지 않기 때문에, 세치기를 사용하면(자) 오히려 여분의 시간을 필요로 해
끝내므로, 세치기는 사용하지 말고 스테이터스 체크의 프로그램
루프로 기다리도록(듯이) 합니다.




《프로그램 플로우》

    초기화로서 ADCON1로 사용하는 포토를 지정한다
        | 
        ↓
    ADCON0로 채널과 클락, A/D ON를 지정한다
     (클락으로 최소 1.6μsec를 확보한다)
         ↓
    충전을 위해 최소 12μsec 기다린다(샘플홀드)
     (여유를 봐 15μsec만 기다린다)
         ↓
    ADCON0로 A/D변환 스타트
         ↓
    ADCON0의 스테이터스로 변환 종료를 기다린다
         ↓
    ADRES로부터 데이터를 읽어들인다



【레지스터의 상세 내용】

전항과 같이, 3 종류의 레지스터가 있습니다만, 상세 내용과 설정 내용
(은)는 밑그림과 같이 되어 있습니다.

PIC16C7x의 종류에 의해 내용은 다소 다릅니다만, 밑그림은 PIC16C711
의 예입니다.




A/D변환 클락(Tad)의 설정 방법법은 아래 표로 합니다.

설정

ADCS1, 0

PIC의 클럭 주파수

20MHz

10MHz

4MHZ

1MHz

Fosc/2

00

 

 

 

2.0

Fosc/8

01

 

 

2.0

8.0

Fosc/32

10

1.6 

3.2

8.0

 

Frc

11

2~ 6 

 상표와 같이 클럭 주파수에 의해 가능한 설정은 황색의 설정
 만됩니다. 다른 설정으로 했을 경우에는, 정밀도가 보증되지 않습니다.
 왜냐하면 A/D용 클락으로서는 1.6μsec 이상 필요한 때문입니다.




이 포토 설정은 아래 표와 같이 됩니다

PCFG1, 0

RA0

RA1

RA2

RA3

Vref

0 0

A

A

A

A

Vdd

0 1

A

A

A

Vref

RA3

1 0

A

A

D

D

Vdd

1 1

D

D

D

D

Vdd

 A는 아날로그 입력 D는 디지탈 입출력 Vref는 기준 전압 입력
 기준 전압 입력의 지정이 없을 때는, 전원 전압이 기준이 된다.

【프로그램예】

아래와 같이는 실제의 프로그램예로, RA0, 1의 2 채널로, Vref 지정은
없음, 의 경우의 예입니다.

(1) 초기화로 ADCON1를 설정
  ·RA0, 1의 2 채널
  ·Vref는 외부 입력은 사용하지 않고

;***********************************
; Initialize
;  PORT A RA0, 1:Analog input
;***********************************
INITA
    BSF   STATUS, RP0   ;Set Page 1
    MOVLW  02H       ;Set to RA0, 1 are analog in
    MOVWF  ADCON1     ;Set A/D
    MOVLW  017H      ;Set PortA to receive mode
    MOVWF  TRISA
    BCF   STATUS, RP0   ;Set Page 0

    MOVLW  010H      ;Set A/D Fosc/32 CH0 A/D off
    MOVWF  ADCON0     ;set

     ↓
   이후에 메인 루틴에


(2) 채널 0또는 1으로부터의 데이터 입력
  ·클락은 Fosc/32
  ·데이터 축적 대기 타이머는 15μsec
    
;***********************
; Start A/D CH0
;***********************
STAD0
    MOVLW  081H      ;A/D on, Fosc/32
    MOVWF  ADCON0     ;select CH0
    CALL  TIME15     ;wait settling
    BSF   ADCON0, GO    ;start A/D
WAIT0
    BTFSC  ADCON0, GO
    GOTO  WAIT0
    MOVF  ADRES, W     ;get A/D data
     ↓
  이 후 데이터 처리에
    

;*************************
; Start A/D CH1
;*************************
STAD1
    MOVLW  089H      ;A/D on, Fosc/32
    MOVWF  ADCON0     ;select CH1
    CALL  TIME15     ;wait settling
    BSF   ADCON0, GO    ;start A/D
WAIT1
    BTFSC  ADCON0, GO    ;wait end of conversion
    GOTO  WAIT1
    MOVF  ADRES, W     ;get A/D data
     ↓
   
이 후 데이터 처리에

;***********************************
; 15usec deley timer
; for A/D conversion settling time
;***********************************
TIME15             ;15usec
    MOVLW  0DH      
    MOVWF  TCNT      
T_LP1  DECFSZ TCNT, F     ;2+3*12-1=37      
    GOTO  T_LP1     
    RETURN         ;37+1=38*0. 4uec

목록보기

www.1chip.com, www.1chip.co.kr
www.micom114.com
자료실바로가기

대구광역시 북구 산격2동 1629 산업용재관 10동 13호 (2층) / Tel. 053-604-2355 / Fax. 053-383-2354 / E-mail. maha@paran.com