Вы находитесь на странице: 1из 6

COMO UTILIZAR O CONVERSOR AD DO MICROCONTROLADOR PIC

O CONVERSOR ANALÓGICO DIGITAL (AD)

Vivemos em um mundo analógico. Tudo à nossa volta é analógico. Todas as sensações que podemos experimentar são analógicas (audição, visão, olfato, palad

Porém os sistemas informatizados atuais como computadores, microprocessadores, microcontroladores e outros microsistemas no geral são digitais. Para coletar

Estes conversores transformam um sinal analógico qualquer em um sinal digital discreto, passivo de ser “processado” pelos computadores e microsistemas digita

Para converter um sinal analógico qualquer, o conversor faz algumas amostragens e depois representa a leitura realizada através de um valor equivalente binário

Um conversor ADC com 8 bits pode retornar valores dentro da faixa de 00H a FFH (0 a 255) e um ADC com 10 bits retornará valores de 0000H a 03FFH (0 a 102

Obs.: O “H” inserido ao lado dos números refere-se à adoção do sistema de numeração hexadecimal, um sistema muito usado em computação e eletrô

Assim para um mesmo valor de entrada, poderemos ter resoluções diferentes. Quanto menor o valor retornado em nossa resolução, maior será a precisão da me

onde:
Vref = tensão de entrada no conversor
n = número de bits do conversor (quantidades de bits que compõe um degrau)

Para exemplificar ainda mais, na tabela abaixo você tem o comparativo do valor da resolução para uma conversão do valor de 5 Volts com ADC’s de 8 e 10 bits.

Tabela – Resolução para ADC’s de 8 e 10 bits de precisão


ADC de 8 bits ADC de 10 bits

Valor a ser convertido = 5V Valor a ser convertido = 5V

Resolução = Entrada / 28 - 1 = 5V / 256 - 1 = 0,0196 V Resolução = Entrada / 210 - 1 = 5V / 1024 - 1 = 0,00488 V

Resolução = 19,6 mV Resolução = 4,88 mV

Assim, um sinal analógico variante no tempo é agora desmontado em pequenos degraus durante uma conversão digital. Ou seja, nosso conversor vai de zero até

Nota-se que com um ADC de 8 bits podemos representar um valor de 0 a 5VDC em degraus com 0,0196 V cada, e com um ADC de 10 bitspodemos representar

Note que o valor que obteremos do conversor não será o valor de 0,0196V ou 0,00488V, por exemplo, para conversores de 8 e 10 bitsrespectivamente. O conver
equações matemáticas previamente definidas no programa.

Um outro ponto importante a respeito é que a informação está dividida em degraus, e se o valor ficar entre um degrau e outro, por exemplo, o ADC poderá enviar

Vamos a um exemplo bem simples. Digamos que durante uma experiência qualquer, com dois conversores ADC diferentes, um com 8 e outro com 10 bits de pre

ADC 8 bits => 10101101 binário = 173 decimal

ADC 10 bits => 1010111010 binário = 698 decimal

Se você multiplicar os valores pela resolução calculada para cada um, obteríamos:

ADC 8 bits => 173 x 19,3 mV = 3,33 V


ADC 10 bits => 698 x 4,88 mV = 3,40 V

No exemplo fica claro o fator precisão no exemplo. Variando apenas um único bit na mesma o valor informado pelo ADC de 8 bits ficou fora da faixa. Já para o AD
obtidos serão 3,43VDC para o ADC de 8 bits e 3,416 para o ADC de 10 bits. Portanto, numa possível “flutuação” durante a conversão, um numero maior de bits n

O CONVERSOR ADC DO MICROCONTROLADOR PIC

Alguns microcontroladores PIC possuem conversores ADC internos, outros não. É preciso selecionar um que possua conversor ADC interno para poder utilizá-lo.

- Pode trabalhar com 8 ou 10 bits de precisão;


- Possui 8 canais para conversão;
- Quatro tipos de referência: VDD ou VSS (interna), VREF+ ou VREF- (externa);
- Freqüência de conversão baseada no clock interno do microcontrolador ou através de cristal externo (pode operar no modo sleep);
- Três divisores para a freqüência (clock interno da máquina);
- Dois tipos de justificação do resultado: direita e esquerda;
- Uma interrupção para avisar sobre o término da conversão.

Apesar do modelo possuir 8 canais para conversão, ele só possui um único conversor. Os canais são na verdade entradas ligadas através de uma “chave” que po

CONFIGURANDO O PIC PARA LEITURAS ANALÓGICAS

OS REGISTRADORES ADCON1 E TRIS

A primeira coisa a fazer é definir o número de canais necessários para o projeto que você tem em mãos. Após isso é necessário configurar os pinos de I/O onde o
registrador ADCON1. Veja a tabela abaixo.

Tabela – Seleção dos canais analógicos, VREF+ e VREF-

PCFG3: AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN1 VREF+ VREF- Canais Ref.
PCFG0 RE2 RE1 RE0 RA5 RA3 RA2 RA1 RA0 ADC Externa

0000 A A A A A A A A VDD VSS 8 0

0001 A A A A VREF+ A A A RA3 VSS 7 1

0010 D D D A A A A A VDD VSS 5 0

0011 D D D A VREF+ A A A RA3 VSS 4 1

0100 D D D D A D A A VDD VSS 3 0

0101 D D D D VREF+ D A A RA3 VSS 2 1

0110 D D D D D D D D VDD VSS 0 0

0111 D D D D D D D D VDD VSS 0 0

1000 A A A A VREF+ VREF- A A RA3 RA2 6 2

1001 D D A A A A A A VDD VSS 6 0


1010 D D A A VREF+ A A A RA3 VSS 5 1

1011 D D A A VREF+ VREF- A A RA3 RA2 4 2

1100 D D D A VREF+ VREF- A A RA3 RA2 3 2

1101 D D D D VREF+ VREF- A A RA3 RA2 2 2

1110 D D D D D D D A VDD VSS 1 0

1111 D D D D VREF+ VREF- D A RA3 RA2 1 2

Pinos configurados como I/O digital (D)

Pinos configurados como entrada analógica (A)

Além do registrador ADCON1, os registradores TRISA e TRISE (para o caso do PIC16F877) devem ser configurados corretamente. Os pinos que serão utilizados

JUSTIFICAÇÃO DO RESULTADO – CONVERSÕES PARA 8 E 10 BITS

Agora que já temos informações sobre a seleção dos canais analógicos vamos falar sobre a “justificação” do resultado obtido. Esta pode ser feito de duas maneir

Tabela – Seleção da justificação em ADCON1

ADFM Justificação

0 Justificado a esquerda. O resultado da conversão utiliza todos os bits (0 a 7) deADRESH e somente dois
bits (7 e 6) de ADRESL

1 Justificado a direita. O resultado da conversão utiliza todos os bits (0 a 7) deADRESL e somente dois
bits (7 e 6) de ADRESH

A justificação ajuda quando desejamos trabalhar com apenas 8 bits na conversão ao invés de 10. Neste caso justificamos a esquerda onde utilizaríamos todos os

TENSÂO DE REFERÊNCIA

O valor apresentado pelo ADC leva em conta, sempre, a referência selecionada. Ou seja, quando a referência V REF+ selecionada for VDD, por exemplo, a conversã

Porém se você optar por utilizar os pinos RA3 e/ou RA2 como entrada para diferentes tensões de referência, a máxima conversão retornada como 1024 terá exat

Tabela – Valores máximos e mínimos p/ tensões de ref. externas

Referência Valor Mínimo (V) Valor Máximo (V)

VREF+ VDD – 2,5 VDD + 0,3

VREF- VSS – 0,3 VREF+ + 2,0

(VREF+ - VREF-) 2,0 VDD + 0,3


VELOCIDADE DE AMOSTRAGEM E SELEÇÃO DO TAD

Um outro detalhe muito importante sobre o conversor analógico interno do PIC diz respeito a sua velocidade. Toda amostragem feita é realizada pelo processo Sa
selecionado, mantendo assim a tensão anteriormente presente na entrada. Assim, mesmo que a tensão na entrada sofra pequenas variações, estas não afetarão

Devido a este fato você deve tomar muito cuidado durante suas “medidas analógicas” com o PIC. Digamos que entre uma leitura e outra o capacitor se descarreg
(40 x 10-6 segundos).

A adequação do capacitor interno também dependerá da temperatura e da impedância inserida na entrada. Valores entre 50k Ohm e 10k Ohm são os indicados.

O tempo de adequação do capacitor também está intimamente ligado ao clock selecionado para o conversor ADC. Podemos chamar este tempo (período) de TAD
freqüência do clock selecionada para o conversor.

Obs.: é recomendável acrescentar mais 2 TAD no total calculado, pois ao final da conversão o flag da interrupção é marcado e o capacitor será religado

REGISTRADOR ADCON0

SELEÇÃO DA FREQUENCIA PARA O CONVERSOR

Agora você tem algumas informações que o ajudarão a calcular melhor o tempo de adequação do capacitor e assim evitar medidas errôneas. Para isso será nece

Tabela – Seleção da Freqüência

ADCS1 ADCS0 Freqüência

0 0 FOSC / 2

0 1 FOSC / 8

1 0 FOSC / 32

1 1 RC interno

Vamos a um pequeno exemplo. Digamos que o cristal externo no PIC seja de 20 MHz e a opção selecionada seja FOSC / 2, então temos:

Este tempo é bastante pequeno, se considerarmos que cada ciclo de máquina nesta situação terá 200 ns. Assim o mesmo não é recomendado.

A escolha correta para este caso seria FOSC / 32. Com este valor obteríamos um TAD de 1,6 us aproximadamente. Multiplicando o total obtido nosso tempo total se

Obs.: A escolha correta da freqüência de trabalho do conversor representa a diferença entre o sucesso e o fracasso no uso deste periférico.

Outros bits importantes no registrador ADCON0 são: <CH2:CH0>, <ADON> e <GO/DONE>. O bit <ADON> liga o sistema de conversão. Os bits<CHS2:CHS0> s

Tabela – Seleção do canal


CHS2:CHS0 Canal selecionado

000 Canal 0 (AN0/RA0)

001 Canal 1 (AN0/RA1)

010 Canal 2 (AN0/RA2)

011 Canal 3 (AN0/RA3)

100 Canal 4 (AN0/RA5)

101 Canal 5 (AN0/RE0)

110 Canal 6 (AN0/RE1)

111 Canal 7 (AN0/RE2)

O bit <GO/DONE> determina o estado do ADC: 0 indica que a conversão terminou, 1 conversão em andamento. Se o bit for forçado a “zero” lógico, a conversão

Observados as configurações, vamos a um pequeno segmento de código que o ajudara a compreender melhor o que foi dito até aqui. O mesmo foi montado na li

pic_init:
bsf STATUS,RP0 ; muda para banco 1
movlw b'00001110' ; faz porta A digtal
; exceto RA0 (AN0)
movwf ADCON1 ; valor justificado a esquerda
movlw 0x01 ; ajusta os bits em A como saída
movwf TRISA ; exceto RA0
; (AN0 - entrada analógica)
bcf STATUS,RP0 ; volta para banco 0
movlw b'01000001' ; liga ADC canal 0
movwf ADCON0 ; fosc/8

Esta primeira parte do código deve ser inserida no inicio do seu programa, no ponto de configuração do PIC. Veja que o registrador ADCON1 é setado de acordo

O registrador TRISA também é configurado conforme descrito: apenas RA0 é entrada, e o restante dos bits será utilizado como saída. É importante notar que este

No segmento de código demonstrado o registro ADCON0 é carregado com o valor binário “01000001”. Isso nos dá a seguinte configuração, conforme tabela abai

Tabela – Configuração no registrador ADCON0

Bit Nome do Bit Valor inserido

7 ADCS1 – Freqüência do conversor 0

6 ADCS0 – Freqüência do conversor 1

5 CHS2 – Canal selecionado 0

4 CHS1 – Canal selecionado 0

3 CHS0 – Canal selecionado 0

2 GO/DONE – Estado do ADC 0

1 Não utilizado 0

0 ADON – Liga conversor analógico 1


A leitura do canal seria feita então, da seguinte maneira:

loop:
bsf ADCON0,2 ; colhe dado do canal analógico

espera_ad:
btfsc ADCON0,2 ; testa para ver se dado pronto
goto espera_ad ; dado ainda não pronto
; continua teste
movf ADRESH,W ; carrega valor da conversão em "W"
call _40us ; temporiza 40 us
goto loop ; faz eternamente

Neste segmento de código, quando a conversão é finalizada, o valor de ADRESH é inserido em W. Em seguida é realizado uma “espera” e uma nova leitura é rea

O comando “goto loop” pode ser retirado e no lugar deste inserido as rotinas de conversão do valor obtido. Neste caso a temporização poderá ser retirada també

- Limpar o bit <ADIF> no registrador PIR1;


- Ligar a interrupção do ADC através do bit <ADIE> no registrador PIE1;
- Ligar as interrupções para periféricos através do bit <PEIE> no registrador INTCON;
- Ligar as interrupções (gerais) através do bit <GIE> no registrador INTCON.

CONCLUSÃO

As informações passadas neste artigo apenas preparam a utilização do conversor ADC do microcontrolador PIC Microchip. Um exemplo de uso pode ser encontr

Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N
de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta págin
outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorizaçã
escrito do autor.

Вам также может понравиться