Você está na página 1de 15

9- MDULO CONVERSOR ANALGICO DIGITAL (ADC)

O Conversor Analgico Digital (ADC) permite a converso de um sinal de


entrada analgico a uma representao de 10 bits deste sinal. Este equipamento usa
entradas analgicas, as quais so multiplexadas em um nico circuito sample e
hold. A sada do sample e do hold conectada entrada do conversor. O conversor
gera um resultado binrio de 10 bits por aproximaes sucessivas e armazena o
resultado da converso nos registradores ADC (ADRESL e ADRESH).
Nota: O mdulo ADC se aplica somente aos PIC 16F677/PIC 16F685/PIC
16F687/PIC 16F689/PIC 16F690.
A tenso referncia ADC selecionada por software. Pode ser tanto VDD ou
uma tenso aplicada a um pino de referncia externo. O ADC pode gerar uma
interrupo aps o final da converso. Essa interrupo pode ser usada para acordar o
PIC da instruo SLEEP.


9.1 CONFIGURAES ADC

Ao configurar e usar o ADC as seguintes funes devem ser consideradas:
Configuraes do port
Seleo de canal
Seleo da tenso de referncia ADC
Fonte de clock da converso ADC
Controle da interrupo
Results formatting

9.1.1- CONFIGURAES DO PORT
O ADC pode ser usado para converter sinais analgicos e digitais. Ao converter
sinais analgicos, os pinos de I/O devem ser configurados para o modo analgico
setando os bits associados ao TRIS e ANSEL. Veja a seo correspondente do port para
mais informaes.
Nota: Tenses analgicas em qualquer pino que esteja configurado como entrada digital
pode causar o excesso de corrente do buffer interno.

9.1.2- SELEO DO CANAL
Os bits CHS do registrador ADCON0 determinam qual canal conectado ao
circuito sample e ao hold. Ao trocar os canais, um delay requerido antes de comear a
prxima converso. Ver a seo 9.2 Operao ADC para mais informaes.

9.1.3- TENSO DE REFERNCIA ADC
O bit VCFG do registrador ADCON0 provm o controle da tenso de referncia
positiva. A tenso positiva pode ser tanto VDD ou uma fonte de tenso externa. A
tenso de referncia negativa sempre conectada ao terra
9.1.4- CONVERSO DO CLOCK
A fonte de converso do clock programvel utilizando os bits ADCS do registrador
ADCON1. H sete possveis opes de clock:
FOSC/2
FOSC/4
FOSC/4
FOSC/16
FOSC/32
FOSC/64
FRC (dedicado ao oscilador interno)
O tempo para completar a converso de um bit definido como TAD. Uma
converso de 10 bits requer 11 perodos TAD como mostra a Figura 9-2.
Para a converso correta, a especificao apropriada TAD deve ser conhecida. Veja
os requerimentos para converso A/D na seo 17.0 Especificaes Eltricas para
mais informaes. A tabela 9-1 d exemplos da seleo de clocks apropriados ADC.
Nota: Exceto ao usar FRC, qualquer mudana no sistema de freqncia do clock vai
mudar a freqncia do clock ADC, o que pode adversamente afetar o resultado ADC.


9.1.5- INTERRUPES
O mdulo ADC permite gerar uma interrupo aps uma converso Anolgico- Digital
completada. A flag da interrupo ADC o bit ADIF no registrador PIR1. O bit que
permite a interrupo ADC o ADIE, o qual est no registrado PIE1. O bit ADIF deve
ser limpo no software.
Nota: O bit ADIF setado no final de cada converso, mesmo que a interrupo esteja
ou no habilitada.
A interrupo pode ser gerada enquanto o equipamento estiver operando ou enquanto
estiver em modo SLEEP. Se o equipamento estiver em modo SLEEP, a interrupo vai
acordar o equipamento. Uma vez acordado do modo SLEEP, a instruo que segue o
SLEEP ser sempre executada. Se o usurio estiver tentando acordar o PIC do SLEEP e
retomar a execuo do cdigo em linha, a interrupo global deve estar desabilitada. Se
a interrupo global estiver habilitada, a execuo voltar para a rotina de interrupo.
Ver a seo 9.1.5 Interrupes para mais informaes.

9.1.6- RESULTADO DA FORMATAO
O resultado da converso dos 10 bits pode ser produzida em dois formatos, justificado
esquerda ou direita. O bit ADFM do registrador ADCON0 controla o formato de
sada. A figura 9-3 mostra as duas formas de sada.



9.2- OPERAES DO ADC

9.2.1- COMEANDO UMA CONVERSO
Para habilitar o mdulo ADC, o bit ADON do registrador ADCON0 deve estar
setado em 1. Ao setar o bit GO/DONE do registrador ADCON0, a converso
analgico-digital ir iniciar.
Nota: O bit GO/DONE no deve ser setado na mesma instruo que liga o ADC. Ver a
Seo 9.2.6 Procedimentos para Converso A/D.

9.2.2- ACABAMENTO DE UMA CONVERSO
Quando a converso est completa, o mdulo ADC vai:
Limpar o bit GO/DONE
Setar a flag ADIF
Atualizar os registradores ADRESH e ADRESL com o novo resultado da
converso



9.2.3- INTERROMPENDO UMA CONVERSO
Se a converso deve ser interrompida antes de acabada, o bit GO/DONE pode
ser limpo no software. Os registradores ADRESH e ADRESL no sero atualizados
com a converso parcial. Ao invs disso, o par registrador ADRESH e ADRESL vai
continuar com o mesmo valor da ltima converso. Adicionalmente, um delay de 2
TAD requerido antes de que uma nova aquisio possa ser inicializada. Aps este
prazo, a aquisio de entrada automaticamente iniciada no
canal selecionado.
Nota: Um reset no equipamento fora todos os registradores ao estado de reset.
Portanto, o mdulo ADC desligado e qualquer converso pendente interrompida.

9.2.4- OPERAO ADC DURANTE SLEEP
O mdulo ADC pode operar durante o SLEEP. Isso requer que a fonte do clock
ADC esteja na opo FRC. Quando a opo de fonte de clock selecionada a FRC, o
ADC espera uma instruo adicional antes de comear a converso. Isso permite que a
instruo SLEEP seja executada, o que pode reduzir o rudo do sistema durante a
converso. Se a interrupo ADC estiver habilitada, o equipamento ir acordar do
SLEEP quando a converso for completada. Se a interrupo ADC estiver desabilitada,
o mdulo ADC desligado aps a converso estiver terminada, embora o bit ADON
continue setado. Quando a fonte de clock ADC no for FRC, uma instruo SLEEP faz
com que a converso que est sendo executada seja abortada e o mdulo ADC
desligado, embora o bit ADON continue setado.

9.2.5 EVENTO ESPECIAL DE GATILHO
Um evento especial de gatilho ECCP permite medies peridicas ADC sem a
interveno do software. Quando o gatilho acontece, o bit GO/DONE setado pelo
hardware e o contador Timer1 reseta ao zero. Ao utilizar o evento especial de gatilho
no assegurado o tempo de ADC. responsabilidade do usurio garantir que os
tempos requeridos pelo ADC sero conhecidos. Ver Seo 11.0 Reforo e
Captura/Comparao/Mdulo PWM para mais informaes.
9.2.6- PROCEDIMENTOS PARA CONVERSO A/D
Este um exemplo de como proceder ao usar o ADC:
1- Confgure o PORT:
o Desabilite o driver de sada (ver registrador TRIS)
o Configure o pino como analgico
2- Configure o mdulo ADC:
o Selecione o clock da converso ADC
o Configure a tenso de referncia
o Selecione o canal de entrada ADC
o Selecione o formato do resultado
o Ligue o mdulo ADC
3- Configure a interrupo por ADC (opcional)
o Limpe a flag de interrupo ADC
o Habilite a interrupo ADC
o Habilite a interrupo perifrica
o Habilite a interrupo global (Nota1)
4- Espere o tempo de aquisio requerido (Nota2)
5- Comece a converso setando o bit GO/DONE
6- Espere at a converso estar completa com uma das seguintes opes:
o Teste o bit GO/DONE
o Espere at a interrupo ADC acontecer (se ela estiver habilitada)
7- Leia o resultado ADC
8- Limpe a flag da interrupo ADC (requerido se a interrupo estiver
habilitada)

Nota 1: A interrupo global pode ser desabilitada se o usurio quiser acordar o PIC
do SLEEP e continuar a execuo em linha.
Nota 2: Ver Seo 9.3 Requerimentos para Aquisio A/D



EXEMPLO 9-1 CONVERSO A/D
; Este bloco de cdigo configure o ADC para teste de finalizao, referncia VDD, fonte
; de clock FRC e entrada no pino RA0
;
; O incio da converso e o teste de finalizao esto includos
;
;
BANKSEL ADCON1 ;
MOVLW B01110000 ; Fonte do clock do ADC: FRC
MOVWF ADCON1 ;
BANKSEL TRISA ;
BSF TRISA,0 ; Seta o pino RA0 como entrada
BANKSEL ANSEL ;
BSF ANSEL,0 ; Seta o pino RA0 como analgico
BANKSEL ADCON0 ;
MOVLW B10000001 ; Justifica direita,
MOVWF ADCON0 ; tenso de referncia= VDD
CALL TEMPO ; Aquisio delay
BSF ADCON0,GO ; A converso comea
BTFSC ADCON0,GO ; A converso j terminou?
GOTO $-1 ; No, teste novamente
BANKSEL ADRESH ;
MOVF ADRESH,W ; L os 2 bits superiores
MOVWF RESULTALTO ; Guarda no registrador GPR
BANKSEL ADRESL ;
MOVF ADRESL,W ; L os 8 bits inferiores
MOVWF RESULTBAIXO ; Guarda no registrador GPR










9.2.7 DEFINIO DOS REGISTRADORES ADC
Os seguintes registradores so utilizados no controle e na operao do mdulo ADC:

bit 7 ADFM: Bit de Seleo do Formato do Resultado da Converso A/D
1 = Justificado direita
0 = Justificado esquerda
bit 6 VCFG : Bit de Referncia de Tenso
1 = Vref do pino
0 = Vdd
bit 5-2 CHS<3:0>: Bits de Seleo do Canais Analgicos
0000 = AN0
0001 = AN1
0010 = AN2
0011 = AN3
0100 = AN4
0101 = AN5
0110 = AN6
0111 = AN7
1000 = AN8
1001 = AN9
1010 = AN10
1011 = AN11
1100 = CVREF
1101 = 0.6V Referncia
1110 = Reservado. No usar.
1111 = Reservado. No usar.
bit 1 GO/DONE: Bit do Status da Converso A/D
1 = A converso A/D est em progresso. Ao setar esse bit uma converso
A/D ir comear. Esse bit j automaticamente limpo pelo hardware quando a
converso estiver terminada.
0 = A converso A/D est completa ou no est em progresso.
bit 0 ADON: Bit habilitador do ADC
1 = ADC est habilitado
0 = ADC est desabilitado e no consome corrente de operao


bit 7 No implementado: Lido como 0
bit 6-4 ADCS<2:0>: bits de Seleo do Clock da Converso A/D
000 = FOSC/2
001 = FOSC/8
010 = FOSC/32
x11 = FRC (clock derivado de um oscilador interno dedicado = 500 kHz
mximo)
100 = FOSC/4
101 = FOSC/16
110 = FOSC/64
bit 3-0 No implementado: Lido como 0




bit 7-0 ADRES<9:2>: Bits Resultado do Registrador ADC
Resultado da converso. Contm os 8 bits superiores dos 10 da converso


bit 7-6 ADRES<1:0>:Bits Resultado do Registrador ADC
Resultado da converso. Contm os 2 bit inferiores dos 10 da converso
bit 5-0 Reservado: No usar.


bit 7-2 Reservado: No usar.
bit 5- ADRES<9:8>:Bits Resultado do Registrador ADC
Resultado da converso. Contm os 2 bit superiores dos 10 da converso




bit 7-0 ADRES<7:0>: Bits Resultado do Registrador ADC
Resultado da converso. Contm os 8 bits inferiores dos 10 da converso

9.3- REQUERIMENTOS DE AQUISIO A/D
Para o ADC atender a sua preciso especificada, o capacitor (CHOLD) deveser
permitido ao capacitor carregar completamente para o nvel de tenso de entrada do
canal. O modelo de entrada Analgica mostrado na Figura 9-4. A impedncia da
fonte (RS) e a impedncia do interruptor de amostragem interna (RSS) afetam
diretamente o tempo necessrio para carregar o capacitor CHOLD. A impedncia do
interruptor de amostragem (RSS) varia com a tenso do dispositivo (VDD), veja a
Figura 9-4. O mximo recomendado de impedncia para fontes analgicas de 10
kohms. Conforme a impedncia da fonte diminuda, o tempo de aquisio pode ser
diminudo tambm.
Depois que o canal de entrada analgica selecionado (ou alterado), uma
aquisio A/D deve ser feita antes da converso pode ser iniciada. Para calcularo tempo
de aquisio mnimo, a Equao 9-1 pode ser utilizada. Esta equao presume que
LSB de erro seja usado (1024 passos para a ADC). O 1/2 LSB de erro o erro mximo
permitido para o ADC para atender sua resoluo especificada.





Nota 1: A tenso de referncia (VREF) no tem efeito na equao, uma vez que ele se
anula.
2: A carga do capacitor (CHOLD) no descarregada aps cada converso.
3: O valor mximo recomendado para impedncia de fontes analgicas de 10
kohms. Isso necessrio para satisfazer a especificao do pino.