0% acharam este documento útil (0 voto)
4 visualizações5 páginas

Conversor AD

O documento descreve o funcionamento e a configuração do conversor analógico-digital (ADC) do microcontrolador PIC16F887A, que realiza a conversão de sinais analógicos em valores binários de 10 bits. Ele detalha a configuração das portas, seleção de canais, tensão de referência, fonte de clock e o processo de inicialização e leitura do ADC. Exemplos de código em MikroC PRO PIC são fornecidos para ilustrar a implementação do ADC.

Enviado por

Ramiro
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOC, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
4 visualizações5 páginas

Conversor AD

O documento descreve o funcionamento e a configuração do conversor analógico-digital (ADC) do microcontrolador PIC16F887A, que realiza a conversão de sinais analógicos em valores binários de 10 bits. Ele detalha a configuração das portas, seleção de canais, tensão de referência, fonte de clock e o processo de inicialização e leitura do ADC. Exemplos de código em MikroC PRO PIC são fornecidos para ilustrar a implementação do ADC.

Enviado por

Ramiro
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOC, PDF, TXT ou leia on-line no Scribd

Conversor A/D

PIC16F887A

O conversor analógico-digital (ADC) permite conversão de um sinal de


entrada analógico para um binário de 10 bits. Este dispositivo
utiliza entradas analógico, que são multiplexados em uma única amostragem. A
saída da amostra está ligada à entrada do conversor. o conversor gera um
resultado binária de 10 bits por meio de sucessivas aproximação e armazena o
resultado da conversão(ADRESL e ADRESH).

A referência de tensão ADC é selecionável por software para ser gerados


internamente ou externamente.

O ADC pode gerar uma interrupção, uma vez concluída uma conversão.

Configuração:
CONFIGURAÇÃO DAS PORTAS
O ADC não distingue entre tensões analógicas e digitais. Para evitar erros de medição
ou estragos no chip, os pinos deve ser configurados como entradas analógicas, antes
de iniciar a conversão. Estes registros são TRIS e ANSEL/ANSELH.

CONFIGURAÇÃO DO CANAL
Os bits CHS do registro ADCON0 determina qual canal estará conectado ao
conversor.
CONFIGURAÇÃO DA TENSÃO DE REFERÊNCIA
Os bits VCFG do registro ADCON0 fornece controle independente da tensão de
referência positivo enegativo. tensão de referência positivo pode ser VDD ou uma
fonte de tensão externa. Da mesma forma, a tensão de referência negativa pode
ser um VSS ou
fonte de tensão externa.

FONTE DE CLOCK DA CONVERSÃO


A fonte e clock do conversor é selecionável através dos bits ADCS do
registo ADCON0. São quatro opções de clock possíveis: Fosc/2, Fosc/8, Fosc/32 e
RC.

ADCON0

ADCS1:ADCS0 - Seleção do clock da conversão


00 - Fosc/2
01 - fosc/8
10 - Fosc/32
11 - RC

CHS3:CHS0 - Seleção do canal

GO/DONE - Status da conversão


0 - Conversão completa ou nao iniciada;
1 - Conversão iniciada. O bit é limpo automaticamante quando completar a conversão.
ADON - Habilita o módulo ADC
0 - Habilitado
1 - Desabilitado

ADCON1

ADFM - Formato do resultado da conversão


0 - Justificado para Esquerda
1 - Justificado para Direita

VCFG1 - Tensão de referência negativo


0 - VSS (interno)
1 - pino VREF- (externo)

VCFG0 - Tensão de referência positivo


0 - VDD (interno)
1 - pino VREF+ (externo)

ANSEL/ ANSELH

Configura os pinos:
1 - Analógico
0 - Digital
Iniciando a conversão:

1 - Configurar o pino como entrada;


2 - Configurar o pino como analógico;
3 - Selecione o clock da conversão ADC
4 - Configurar a tensão de referência
5 - Selecione o canal de entrada ADC
6 - Selecionar o formato do resultado
7 - Ligue o módulo ADC
8 - Configurar a interrupção ADC (opcional):

 Limpar flag de interrupção ADC


 Habilitar interrupção ADC
 Habilitar interrupção periférica
 interrupção Ativar global
9 - Esperar o tempo de aquisição pretendido. (20 us)
10 - Iniciar a conversão, definindo o bit GO/DONE.
11 - Aguarde ADC conversão, até que:

 GO/DONE for resetado ou


 Aguardando a interrupção ADC (caso interrupção esteja ativada)
11 - Leia o resultado ADC
12 - Limpar o flag de interrupção ADC (caso interrupção esteja ativada)

Exemplo:
Equivale a função ADC_Init() do MikroC PRO PIC
pino RA0 como entrada
TRISA = 0b00000001;
define somente pino RA0 como analogico
ANSEL = 0b00000001;
ANSELH = 0;
selecional o canal utilizado: Canal 0
ADCON0.CHS3 = 0;
ADCON0.CHS2 = 0;
ADCON0.CHS1 = 0;
ADCON0.CHS0 = 0;
selecionar o clock (RC)
ADCON0.ADCS1 = 1;
ADCON0.ADCS0 = 1;
Seleciona a tensão de referencia
ADCON1.VCFG1 = 0;
ADCON1.VCFG0 = 0;
Seleciona o formato do resultado(para direita)
[Link] = 1;
Equivale a função ADC_Read() do MikroC PRO PIC
habilita conversor
[Link] = 1;
tempo de aquisição exigida
delay_us(20);
inicia a conversão
ADCON0.GO_NOT_DONE = 1;
espera a conversão terminar
while(ADCON0.GO_NOT_DONE);
desabilita o conversor
[Link] = 0;
habilita conversor
[Link] = 1;
tempo de aquisição exigida
delay_ms(20);
Recupera o valor da conversão
adc_rd = ((ADRESH <<8) + ADRESL);
return adc_rd;

Mais um exemplo:

1. unsigned long adc_rd;


2.
3. void main()
4. {
5. ADC_Init();
6. ANSEL = 1;//define somente pino RA0 como analógico
7. ANSELH = 0;
8.
9. while(1)
10. {
11. adc_rd = ADC_Read(0);
12. delay_ms(100);
13. }
14. }

Você também pode gostar