Anda di halaman 1dari 17

Conversor A/D

As principais caractersticas do conversor A/D disponvel no PIC18F4550 so as seguintes: 13 canais de entrada configurveis como entradas analgica no modelo de 40 pinos utilizado no KitUni; Resultado da converso obtido atravs de aproximaes sucessivas e carregado nos registradores ADRESH e ADRESL; A converso e realizada em um canal de cada vez; Conversor AD de 10-bits (0 1023); Seleo de referncia de tenso pela alimentao do microcontrolador ou referncia externa.

Circuitos Microprocessados I

prof. Marcos Zuccolotto

Circuitos Microprocessados I

prof. Marcos Zuccolotto

ADCON0 A/D Control 0


CHS3:CHS0: Bits para a seleo do canal analgico 0000 Canal 0 (AN0) 0001 Canal 1 (AN1) 0010 Canal 2 (AN2) 0011 Canal 3 (AN3)

0100 Canal 4 (AN4)


0101 Canal 5 (AN5) 0110 Canal 6 (AN6) 0111 Canal 7 (AN7) 1000 Canal 8 (AN8) 1001 Canal 9 (AN9) 1010 Canal 10 (AN10) 1011 Canal 11 (AN11) 1100 Canal 12 (AN12) 1101, 1110, 1111 No Implimentado

Circuitos Microprocessados I

prof. Marcos Zuccolotto

GO/DONE: bit de status do conversor A/D Usando ADON = 1: 0 A/D disponvel 1 Converso A/D em andamento ADON: bit para habilitao do A/D 0 mdulo conversor A/D desabilitado 1 mdulo conversor A/D habilitado

Circuitos Microprocessados I

prof. Marcos Zuccolotto

ADCON1 A/D Control 1


VCFG1: bit de configurao da tenso de referncia (Fonte VREF-) 0 Fonte VSS 1 Fonte VREF- (AN2)

VCFG0: bit de configurao da tenso de referncia (Fonte VREF+)


0 Fonte VDD 1 Fonte VREF+ (AN3)

Circuitos Microprocessados I

prof. Marcos Zuccolotto

PCFG3:PCFG0: bits de configurao de controle da Porta A/D:

Circuitos Microprocessados I

prof. Marcos Zuccolotto

ADCON2 A/D Control 2


ADFM: bit de seleo do formato da resultado da converso A/D 0 Justificado a esquerda 1 Justificado a direita ACQT2:ACQT0: bits para seleo do tempo de aquisio do A/D

111 20 TAD
110 16 TAD 101 12 TAD 100 8 TAD

011 6 TAD
010 4 TAD 001 2 TAD 000 0 TAD

Circuitos Microprocessados I

prof. Marcos Zuccolotto

ADCS2:ADCS0: bits para seleo do clock do conversor do A/D


111 FRC (clock derivado do oscilador RC do A/D) 110 FOSC/64 101 FOSC/16

100 FOSC/4
011 FRC (clock derivado do oscilador RC do A/D) 010 FOSC/32 001 FOSC/8

000 FOSC/2

Circuitos Microprocessados I

prof. Marcos Zuccolotto

Outras configuraes
Alm das configuraes dos registradores de controle outras configuraes devem ser feitas para o correto funcionamento do A/D: Configurao das portas utilizados pelo conversor A/D como entradas; Habilitao da interrupo que ser gerada ao final da converso.

Circuitos Microprocessados I

prof. Marcos Zuccolotto

Circuitos Microprocessados I

prof. Marcos Zuccolotto

Resumo de implementao
Seguir os passos seguites para executar uma converso A/D : 1. Configurar o mdulo A/D: Configure os pinos analgicos, tenso de referncia e os entradas e sadas digitais (ADCON1) Selecione o canal de entrada do A/D (ADCON0)

Selecione o tempo de aquisio e o clock para a converso A/D (ADCON2)


Habilite o mdulo conversor A/D (ADCON0) 2. Configure a interrupo do A/D (se desejar): Limpe o bit ADIF

Ligue o bit ADIE


Ligue o bit ADIP (caso queira tratar a interrupo do AD como de Alta prioridade) Ligue o bit GIE

Circuitos Microprocessados I

prof. Marcos Zuccolotto

3. Aguarde o tempo de aquisio configurado caso seja necessrio


4. Inicie a converso: Ligue o bit GO/DONE (regitrador ADCON0) 5. Aguarde o final da converso A/D conversion de alguma das formas:

Testando o valor do bit GO/DONE at que este seja zerado


OU Aguarde uma interrupo do A/D; 6. Leia os regitradores com o resultado da converso A/D (ADRESH:ADRESL); zere o bit ADIF, se necessrio. 7. Para a prxima converso, v para os passos 1 ou 2go to step 1 or step 2, como desejado. Se a converso for no mesmo canal pode ser reiniciada apartir do passo 4.

Circuitos Microprocessados I

prof. Marcos Zuccolotto

Rotina de interrupo em C
//prottipo da funo de interrupo void InterruptHandlerHigh(); //---------------------------------------------------------------------------// High priority interrupt vector #pragma code InterruptVectorHigh = REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS void InterruptVectorHigh (void) { _asm goto InterruptHandlerHigh //jump to interrupt routine _endasm } //----------------------------------------------------------------------------

Circuitos Microprocessados I

prof. Marcos Zuccolotto

// High priority interrupt routine #pragma code

#pragma interrupt InterruptHandlerHigh


Void InterruptHandlerHigh () { if (PIR1bits.ADIF == 1) //Testa se a interrupo foi gerada pelo AD //Limpa flag de interrupo de converso

{
PIR1bits.ADIF = 0;

//Armazena leitura dos registradores de converso AD VectorLeiturasAD[LeiturasIndex] = (ADRESH*256) + ADRESL; } }

Circuitos Microprocessados I

prof. Marcos Zuccolotto

Utilizando o Conversor A/D


TRISA=0xFF; // PORTA so entradas para conversor AD ADCON1=0; // Todos os canais analgicos habilitados //referncia de tenso: VDD e VSS ADCON0 = 0; //Seleciona o canal de entrada do AD (AN0) //Seleciona tempo de aquisio e clock da converso ADCON2 = 0X86; //TAD = 0; 64TOSC; justificado a direita //Turn on A/D module (ADCON0) ADCON0bits.ADON = 1; //Habilita o mdulo de converso AD PIR1bits.ADIF = 0; PIE1bits.ADIE = 1; IPR1bits.ADIP = 1; //Zera flag que indica converso concluida //Habilita interrupo do AD //Indica interrupo de alta prioridade

Circuitos Microprocessados I

prof. Marcos Zuccolotto

Disparando o conversor
//Disparo da coverso ADCON0bits.GO = 1;

//Exibindo no Display
Medicao = VectorLeiturasAD[0]; VectorDS7SegValue[0] = Medicao/1000;

VectorDS7SegValue[1] = (Medicao%1000)/100;
VectorDS7SegValue[2] = ((Medicao%1000)%100)/10; VectorDS7SegValue[3] = ((Medicao%1000)%100)%10;

//Multiplexa o digito do display na porta E


PORTE = KitDSX; //Escreve na porta o valor do digito correspondante PORTD = VectorDecTo7Seg[VectorDS7SegValue[KitDSX]];

Circuitos Microprocessados I

prof. Marcos Zuccolotto

Exerccio
1 - Elabore um programa em linguagem C que implemente a leitura do sinal analgico fornecido por um potencimetro conectado a entrada analgica do canal 0 (AN0). Exibir o valor lido diretamente no display de 7 segmentos justificado a direita (valor de 0 a 1023). 2 Implemente um mecanismo de calibrao com ajuste de ganho e offset para o valor analgico lido;

Circuitos Microprocessados I

prof. Marcos Zuccolotto

Anda mungkin juga menyukai