Conversão Analógico Digital
1)INTRODUÇÃO:
●
Método pelo o qual um sinal analógico qualquer é convertido em uma “palavra binária”,
possibilitando o seu armazenamento.
●
O sinal digitalizado possui amostras do sinal analógico que são quantizadas e
codificadas, sendo transformadas em uma quantidade fixa de bits.
●
Todo conversor que transforma um sinal analógico em digital (AD), utiliza 3 etapas
durante a conversão:
I. Amostragem
II. Quantização
III.Codificação
Transdutor
PIC
AD
Grandezas Físicas: - Pressão - Umidade - Temperatura Sinal analógico representando as grandezas físicasI. AMOSTRAGEM:
●
Os valores do sinal analógico (tensão) são retidos (amostras) por períodos de tempo.
●A periodicidade com que essas amostras são retidas é denominado de período de
amostragem.
Conversão Analógico Digital
II. QUANTIZAÇÃO:
●
Consiste em transformar as amostras coletadas em valores pré-determinados e
conhecidos pelo sistema A/D.
●
Esses valores são expressados em níveis de tensão de acordo com a faixa de coleta e
quantidade de bits do A/D.
●
Quantidade de níveis = 2
N→ N = Quantidade de bits do A/D
●No PIC18F: A/D's de 10 bits de resolução
●
2
N= 1024 níveis.
●
Logo, o valor de cada nível depende do valor de excursão do sinal analógico.
●Se o sinal excursionar de 0 até 5 volts → 5 / (1023) = 4,88 mVolts.
Conversão Analógico Digital
0 volts
5 volts
1023 níveis 4,88 mVolts 9,76 mVolts 14,64 mVolts 4,98 Volts. . . . . . . .II. QUANTIZAÇÃO:
Conversão Analógico Digital
II. QUANTIZAÇÃO:
- 5 volts
5 volts
- 1 volts
1 volts
1023 1023 ●10 volts
●
10 / 1023 = 9,77 mVolts por nível
●
2 volts
Conversão Analógico Digital
5 volts
0 volts
II. QUANTIZAÇÃO:
5 volts5 volts4,1 volts
4,5 volts 3,9 volts
Conversão Analógico Digital
5 volts
0 volts
II. QUANTIZAÇÃO:
4,5 volts 4,5 volts 3,9 voltsConversão Analógico Digital
5 volts
0 volts
Conversão Analógico Digital
III.CODIFICAÇÃO:
●
Última etapa de uma conversão de analógico para digital.
●
Cada nível quantizado recebe um palavra binária de N bits, de acordo com a
quantidade de bits do conversor A/D → PIC18F = 10 bits.
●
O menor nível de tensão do sinal quantizado, recebe a palavra binária 000000, ou seja,
o menor valor binário possível.
●
O maior nível de tensão do sinal quantizado, recebe o maior valor binário possível, ou
seja, 11111.
●
Assim que o sinal é codificado, tem-se a transformação do sinal analógico em sinal
Conversão Analógico Digital
1111111111 - 5 volts 0000000000 - 0 voltsIII.CODIFICAÇÃO
0000000001 0000000010 0000000011 0000000100 . . . . . . . . . . . . . 1111111111 0000001110 1111111111 0011101111 0011100110Conversão Analógico Digital
2)DIAGRAMA EM BLOCOS
AMOSTRADOR QUANTIZADOR CODIFICADOR
TRANSDUTOR Pressão 11101100 11100011 01110111 11111000
A/D → PIC18F
Conversão Analógico Digital
3) CARACTERÍSTICAS DO AD DO PIC18F4550
RA0 - AN0 RA1 - AN1 RA2 - AN2 RA3 - AN3 RA4 - AN4 RA5 - AN5 RA6 - AN6 RA7 - AN7 RB4 - AN11 RB3 - AN9 RB2 - AN8 RB1 - AN10 RB0 - AN12 VREF -VREF +Conversão Analógico Digital
3) CARACTERÍSTICAS DO AD DO PIC18F4550
Bits 4 e 5 do registrador ADCON1 Bits 0, 1, 2 e 3 do registrador ADCON0 VREF -VREF +Conversão Analógico Digital
4) CONFIGURAÇÃO DO A/D – Sem Interrupção
I. A configuração do A/D do PIC é feita por meio de 3 Registradores:
ADCON0
ADCON1
ADCON2
I. Ligar o A/D do PIC – Linha de código
II. Configurar os Pinos e tensões de referência – Quais pinos serão analógicos
III. Selecionar o canal Analógico a ser usado (AN1, AN2, …..., AN12)
Conversão Analógico Digital
4) CONFIGURAÇÃO DO A/D - REGISTRADORES
ADON GO CHS0 CHS1 CHS2 CHS3 7 6 5 4 3 2 1 0 ADCON0
ADON: Controle do A/D
1 – Conversor A/D Habilitado 0 – Conversor A/D Desabilitado
Conversão Analógico Digital
4) CONFIGURAÇÃO DO A\D - REGISTRADORES
PCFG0 PCFG1 PCFG2 PCFG3 VCFG0 VCFG1 7 6 5 4 3 2 1 0 ADCON1
VCFG1: Configuração da Tensão de Referência (VREF -) 1 – VREF- (AN2)
0 – GND
VCFG0: Configuração da Tensão de Referência (VREF +) 1 – VREF+ (AN3)
0 – VDD
Conversão Analógico Digital
PCFG3::
PCFG0 AN12 AN11 AN10 AN9 AN8 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0
0000 A A A A A A A A A A A A A 0001 A A A A A A A A A A A A A 0010 A A A A A A A A A A A A A 0011 D A A A A A A A A A A A A 0100 D D A A A A A A A A A A A 0101 D D D A A A A A A A A A A 0110 D D D D A A A A A A A A A 0111 D D D D D A A A A A A A A 1000 D D D D D D A A A A A A A 1001 D D D D D D D A A A A A A 1010 D D D D D D D D A A A A A 1011 D D D D D D D D D A A A A 1100 D D D D D D D D D D A A A 1101 D D D D D D D D D D D A A 1110 D D D D D D D D D D D D A
Conversão Analógico Digital
4) CONFIGURAÇÃO DO A/D - REGISTRADORES
ADON GO CHS0 CHS1 CHS2 CHS3 7 6 5 4 3 2 1 0 ADCON0
GO: Indicador de Conversão
1 – Realizando Conversão A/D 0 – Conversão A/D livre
CHS3 :: CHS0: Seletores de Canais
0000 = Canal AN0 Selecionado 0001 = Canal AN1 Selecionado 0010 = Canal AN2 Selecionado 0011 = Canal AN3 Selecionado 0100 = Canal AN4 Selecionado 0101 = Canal AN5 Selecionado 0110 = Canal AN6 Selecionado 0111 = Canal AN7 Selecionado 1000 = Canal AN8 Selecionado 1001 = Canal AN9 Selecionado 1010 = Canal AN10 Selecionado
Conversão Analógico Digital
4) CONFIGURAÇÃO DO A/D - REGISTRADORES
ADCS0 ADCS1 ADCS2 ACQT0 ACQT1 ACQT2 -ADFM 7 6 5 4 3 2 1 0 ADCON2
ACQT0::ACQT2: Tempo de Amostra do Sinal ADFM: A/D result Format
000 – 0 TAD 1 – Justificado a Direita – 8bits no ADRESL
001 – 2 TAD 0 – Justificado a Esquerda – 8 bits no ADRESH
010 – 4 TAD 011 – 6 TAD 100 – 8 TAD 101 – 12 TAD 110 – 16 TAD 111 – 20 TAD
ADCS2 :: ADCS0: Determina o Valor de TAD
AD Source Clock (TAD)
Operation ADCS2:ADCS0 Maximum FOSC
2 Tosc 000 2.5 MHz
4 Tosc 100 5 MHz
8 Tosc 001 10 MHz
Conversão Analógico Digital
Conversão Analógico Digital
4) CONFIGURAÇÃO DO A/D – CÓDIGO EM C DE CONFIGURAÇÃO
void main ( ) { //Início
int resultado_conversão; //Variável de 16 bits
DDRAbits.RA0 = 1; //Pino A0 como entrada - AN0
ADCON0bits.ADON = 1; //Habilita o conversor A/D ADCON0bits.CHS0 = 0;
//---ADCON0bits.CHS1 = 0; // SELECIONA O CANAL
ADCON0bits.CHS2 = 0; // AN0
ADCON0bits.CHS3 = 0; //---ADCON1bits.VCFG0=0; //REFERENCIA DE Vss ADCON1bits.VCFG1=0; //REFERENCIA DE Vdd
ADCON1bits.PCFG0=0; //---ADCON1bits.PCFG1=1; //----CANAL AN0 como analógico----ADCON1bits.PCFG2=1; //----Demais Canais como Digitais---ADCON1bits.PCFG3=1; //---ADCON2bits.ADFM=1; //Resultado Justificado á Direita ADCON2bits.ACQT0=0; //---ADCON2bits.ACQT1=0; // TAD = 0x
ADCON2bits.ACQT2=0; //---ADCON2bits.ADCS0=1;
Conversão Analógico Digital
4) LEITURA DO A/D – CÓDIGO EM C
void main ( ) { //Início
int resultado_conversão; //Variável de 16 bits DDRAbits.RA0 = 1; //Pino A0 como entrada ADCON0bits.ADON = 1; //Habilita o conversor A/D
PIE1bits.ADIE = 0; //Desliga a Interrupção por conversão A/D ADCON0bits.CHS0 = 0;
//---ADCON0bits.CHS1 = 0; // SELECIONA O CANAL
ADCON0bits.CHS2 = 0; // AN0
ADCON0bits.CHS3 = 0;
//---ADCON1 = 0b00001110; //REFERENCIA DE Vss e VDD e o CANAL AN0 como analógico ADCON2 = 0b10000101; //FOSC / 16
//TAD = 0x
//ADFM = Resultado Justificado á Direita
ADCON0bits.GO = 1; //Inicializa a Conversão
Conversão Analógico Digital
4) LEITURA DO A/D – CÁLCULO DE CONVERSÃO
● A Variável de aquisição precisa ser de 16 bits, porque:
0 0 0 0 0 0
0 1 1 0 0 1 0 0 1
ADRESH
ADRESL
0
7
0
7
Int resultado_conversao
0 0 0 0 0 0
0 1
0 0 0 0 0 0
0 1 1 0 0 1 0 0 1
Resultado = 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1
2
82
72
42
1Conversão Analógico Digital
4) LEITURA DO A/D – CÁLCULO DE CONVERSÃO
Níveis de Tensão
Representação Binária
Representação Decimal
0 v
0000000000
0
4,88 mVolts
0000000001
1
9,76 mVolts
0000000010
2
14,64 mVolts
0000000011
3
…...
…...
…...
5 volts
1111111111
1023
1023 – 5 volts
402 – x volts
Conversão Analógico Digital
4) LEITURA DO A/D – CÓDIGO EM C COM CÁLCULO DE CONVERSÃO
void main ( ) { //Início
int resultado_conversão; //Variável de 16 bits
float x;
DDRAbits.RA0 = 1; //Pino A0 como entrada ADCON0bits.ADON = 1; //Habilita o conversor A/D
PIE1bits.ADIE = 0; //Desliga a Interrupção por conversão A/D ADCON0bits.CHS0 = 0;
//---ADCON0bits.CHS1 = 0; // SELECIONA O CANAL
ADCON0bits.CHS2 = 0; // AN0
ADCON0bits.CHS3 = 0;
//---ADCON1 = 0b00001110; //REFERENCIA DE Vss e VDD e o CANAL AN0 como analógico ADCON2 = 0b10111101; //FOSC / 16
//TAD = 20x
//ADFM = Resultado Justificado á Direita ADCON0bits.GO = 1; //Inicializa a Conversão (16 us de aquisição)
while (ADCON0bits.GO == 1) ; //Programa Fica parado no WHLE até que o bit GO vá para 0 resultado_conversão = (ADRESH<<8) | (ADRESL) ; //FORMATO 1
resultado_conversão = ADRESH ; //FORMATO 2