1
UTFPR – Campus Curitiba
Prof. Amauri Assef
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA
CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA – TECNOLOGIA
EM AUTOMAÇÃO INDUSTRIAL
Sistemas Digitais e Microcontrolados
Conversor Analógico para Digital - PIC16F877A
Prof. Amauri Assef
amauriassef@utfpr.edu.br
Conversor Analógico para Digital
2
UTFPR – Campus Curitiba
Prof. Amauri Assef
Características do módulo A/D
 10 bits de conversão
 8 canais de entrada
 AN0 – RA0
 AN1 – RA1
 AN2 – RA2
 AN3 – RA3
 AN4 – RA5
 AN5 – RE0
 AN6 – RE1
 AN7 – RE2
 Tensões de referência config.
 Vref+ (superior)
 Vref- (inferior)
CHS2:CHS0
PCFG3:PCFG0
PCFG3:PCFG0
Conversor Analógico para Digital
3
UTFPR – Campus Curitiba
Prof. Amauri Assef
Diagrama em bloco do A/D
Conversor Analógico para Digital
4
UTFPR – Campus Curitiba
Prof. Amauri Assef
Modelo da entrada analógica
 Amostragem e retenção – sample and hold
Conversor Analógico para Digital
5
UTFPR – Campus Curitiba
Prof. Amauri Assef
Diagrama em blocos do tratamento do sinal analógico
Transdutor Condicionamento
do sinal
A/D
PIC16F877A
Grandeza física
de processo
(temperatura,
umidade,
pressão, etc.)
Sinal analógico
convertido em
tensão ou
corrente
Sinal analógico
condicionado
Conversor Analógico para Digital
6
UTFPR – Campus Curitiba
Prof. Amauri Assef
Definições
 O módulo conversor analógico-digital (A/D) realiza a conversão de uma tensão
analógica em valores digitais, isto é, números binários;
 Para o PIC16F877A a conversão do valor analógico em digital é realizada com
comprimento de 10 bits;
 Quanto maior a quantidade de bits maior a resolução e precisão do A/D
 Por exemplo: supondo que a tensão aplicada ao pino de A/D varia entre 0 a 5V
(tensão de fundo de escala), e o conversor possui 8 bits (N), a resolução é de:
 Alterando o conversor A/D para 10 bits, temos:
Conversor Analógico para Digital
7
UTFPR – Campus Curitiba
Prof. Amauri Assef
Conversão do sinal analógico em digital
 Parâmetros:
 A/D de 8 bits
 + Vref = Vdd = 5V
 - Vref = Vss = 0V
 Resolução de 19,61mV/bit
 Parâmetros:
 A/D de 10 bits
 + Vref = Vdd = 5V
 - Vref = Vss = 0V
 Resolução de 4,88mV/bit
Níveis de Tensão (V) Representação binária
0 B’0000 0000’
19,61m B’0000 0001’
... ...
5 B’1111 1111’
Níveis de Tensão (V) Representação binária
0 B’00 0000 0000’
4,88m B’00 0000 0001’
... ...
5 B’11 1111 1111’
Conversor Analógico para Digital
8
UTFPR – Campus Curitiba
Prof. Amauri Assef
Exemplos de cálculo para conversão A/D
 Parâmetros:
 A/D de 8 bits
 + Vref = Vdd = 5V
 - Vref = Vss = 0V
 Resolução de 19,61mV/bit
 2,5V = ?
 Parâmetros:
 A/D de 10 bits
 + Vref = Vdd = 5V
 - Vref = Vss = 0V
 Resolução de 4,88mV/bit
 2,5V = ?
5V → 255
2,5V → X
X = 127,5 ≈ 128
5V → 1023
2,5V → X
X = 511,5 ≈ 512
Conversor Analógico para Digital
9
UTFPR – Campus Curitiba
Prof. Amauri Assef
Registradores de 8 bits do módulo A/D
 ADCON0 (A/D Control Register 0):
 Controla a operação do módulo A/D
 ADCON1 (A/D Control Register 1):
 Configura as funções do PORTA e PORTE, e como o resultado será armazenado
 ADRESH (A/D Result High Register):
 Parte alta do resultado do A/D
 ADRESL (A/D Result Low Register):
 Parte baixa do resultado do A/D
Conversor Analógico para Digital
10
UTFPR – Campus Curitiba
Prof. Amauri Assef
Registrador ADCON0 (Endereço 1FH – Banco 0)
 ADCS1:ADCS0: Seleção do clock de conversão do A/D
em conjunto com o ADCON1
 00 - Fosc/2
 01 - Fosc/8
 10 - Fosc/32
 11 – Frc (clock derivado do oscilador interno RC)
 CHS2:CHS0: Seleção do canal analógico
 000 – canal 0 (AN0)
 001 – canal 1 (AN1)
 010 – canal 2 (AN2)
 011 – canal 3 (AN3)
 100 – canal 4 (AN4)
 101 – canal 5 (AN5)
 110 – canal 6 (AN6)
 111 – canal 7 (AN7)
 GO//DONE: Bit de status da conversão A/D
 0 – conversor A/D em espera
 1 – conversão A/D em progresso
 (setar este bit para iniciar conversão)
 ADON: Bit para ligar o módulo A/D
 0 – conversão A/D desligado
 1 – conversor A/D ligado
Conversor Analógico para Digital
11
UTFPR – Campus Curitiba
Prof. Amauri Assef
Registrador ADCON1 (Endereço 9FH – Banco 1)
 ADFM: Seleção do formato do resultado do A/D
 0 – justificado à esquerda
 1 – justificado à direita
 ADCS2: Seleção do clock em conjunto com os bits ADCS1: ADCS0 do registradorADCON0
Conversor Analógico para Digital
12
UTFPR – Campus Curitiba
Prof. Amauri Assef
Registrador ADCON1 (Endereço 9FH – Banco 1)
 PCFG3:PCFG0: Bits de controle de configuração do PORTA e PORTE
Conversor Analógico para Digital
13
UTFPR – Campus Curitiba
Prof. Amauri Assef
Registrador ADCON1 (Endereço 9FH – Banco 1)
 Resultado do A/D justificado
Conversor Analógico para Digital
14
UTFPR – Campus Curitiba
Prof. Amauri Assef
Exemplo:
1) Escrever o firmware para mostrar o valor de conversor A/D do canal 0 através dos LEDS
conectados no PORTD. Utilizar Fosc/2 e dividir o valor lido por 4 para condicionar o resultado em
8 bits:
2) Escrever, simular e testar o firmware para ler o resultado da conversão do módulo AD, canal 0.
Inicialmente piscar todos os LED do PORTD 5 vezes com atraso de 0,5 segundo. Na sequência,
movimentar o motor de passo de acordo com o resultado da conversão (RC0,RC3,RC4 e RC5):
3) Escrever o firmware para digitalizar o valor analógico do sensor de temperatura LM35 (10mV/°C) e
apresentar a temperatura equivalente no LCD 16x2:
Valor do ADC Descrição – Sentido 1 Valor do ADC Descrição – Sentido 2
<= 0,5V 4 passos de 4ms 2,5V < e <= 3,0V Motor parado
0,5V < e <= 1,0V 4 passos de 8ms 3,0V < e <= 3,5V 4 passos de 32ms
1,0V < e <= 1,5V 4 passos de 16ms 3,5V < e <= 4,0V 4 passos de 16ms
1,5V < e <= 2,0V 4 passos de 32ms 4,0V < e <= 4,5V 4 passos de 8ms
2,0V < e <= 2,5V Motor parado > 4,5V 4 passos de 4ms
Conversor Analógico para Digital
15
UTFPR – Campus Curitiba
Prof. Amauri Assef
CH_1 CH_2
ADC_POT
ADC_POT
ADC_LM35
ADC_LM35
CH_1
CH_2
RA0/AN0
2
RA1/AN1
3
RA2/AN2/VREF-/CVREF
4
RA4/T0CKI/C1OUT
6
RA5/AN4/SS/C2OUT
7
RE0/AN5/RD
8
RE1/AN6/WR
9
RE2/AN7/CS
10
OSC1/CLKIN
13
OSC2/CLKOUT
14
RC1/T1OSI/CCP2
16
RC2/CCP1
17
RC3/SCK/SCL
18
RD0/PSP0
19
RD1/PSP1
20
RB7/PGD
40
RB6/PGC
39
RB5
38
RB4
37
RB3/PGM
36
RB2
35
RB1
34
RB0/INT
33
RD7/PSP7
30
RD6/PSP6
29
RD5/PSP5
28
RD4/PSP4
27
RD3/PSP3
22
RD2/PSP2
21
RC7/RX/DT
26
RC6/TX/CK
25
RC5/SDO
24
RC4/SDI/SDA
23
RA3/AN3/VREF+
5
RC0/T1OSO/T1CKI
15
MCLR/Vpp/THV
1
U1
PIC16F877A
R11
10k
VDD
X1
CRYSTAL
C1
15pF
C2
15pF
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
D1
LED-RED
D2
LED-RED
D3
LED-RED
D4
LED-RED
D5
LED-RED
D6
LED-RED
D7
LED-RED
D8
LED-RED
R9
10k
VDD
R10
10k
VDD
50%
RV1
1k
VDD
27.0
3
1
VOUT
2
U2
LM35
VDD
Conversor Analógico para Digital
16
UTFPR – Campus Curitiba
Prof. Amauri Assef
Exemplo:
1)
unsigned int temp_res;
void main() {
TRISA = 0x01;
TRISD = 0X00;
while(1) {
temp_res = ADC_Read(0); // Le valor de 10 bits da conversão
PORTD = temp_res >> 2; // Normaliza em 8 bits
}
}

Guia de utilização Apresentacao_ADC_PIC16F877A.pdf

  • 1.
    1 UTFPR – CampusCuritiba Prof. Amauri Assef UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA – TECNOLOGIA EM AUTOMAÇÃO INDUSTRIAL Sistemas Digitais e Microcontrolados Conversor Analógico para Digital - PIC16F877A Prof. Amauri Assef amauriassef@utfpr.edu.br
  • 2.
    Conversor Analógico paraDigital 2 UTFPR – Campus Curitiba Prof. Amauri Assef Características do módulo A/D  10 bits de conversão  8 canais de entrada  AN0 – RA0  AN1 – RA1  AN2 – RA2  AN3 – RA3  AN4 – RA5  AN5 – RE0  AN6 – RE1  AN7 – RE2  Tensões de referência config.  Vref+ (superior)  Vref- (inferior)
  • 3.
    CHS2:CHS0 PCFG3:PCFG0 PCFG3:PCFG0 Conversor Analógico paraDigital 3 UTFPR – Campus Curitiba Prof. Amauri Assef Diagrama em bloco do A/D
  • 4.
    Conversor Analógico paraDigital 4 UTFPR – Campus Curitiba Prof. Amauri Assef Modelo da entrada analógica  Amostragem e retenção – sample and hold
  • 5.
    Conversor Analógico paraDigital 5 UTFPR – Campus Curitiba Prof. Amauri Assef Diagrama em blocos do tratamento do sinal analógico Transdutor Condicionamento do sinal A/D PIC16F877A Grandeza física de processo (temperatura, umidade, pressão, etc.) Sinal analógico convertido em tensão ou corrente Sinal analógico condicionado
  • 6.
    Conversor Analógico paraDigital 6 UTFPR – Campus Curitiba Prof. Amauri Assef Definições  O módulo conversor analógico-digital (A/D) realiza a conversão de uma tensão analógica em valores digitais, isto é, números binários;  Para o PIC16F877A a conversão do valor analógico em digital é realizada com comprimento de 10 bits;  Quanto maior a quantidade de bits maior a resolução e precisão do A/D  Por exemplo: supondo que a tensão aplicada ao pino de A/D varia entre 0 a 5V (tensão de fundo de escala), e o conversor possui 8 bits (N), a resolução é de:  Alterando o conversor A/D para 10 bits, temos:
  • 7.
    Conversor Analógico paraDigital 7 UTFPR – Campus Curitiba Prof. Amauri Assef Conversão do sinal analógico em digital  Parâmetros:  A/D de 8 bits  + Vref = Vdd = 5V  - Vref = Vss = 0V  Resolução de 19,61mV/bit  Parâmetros:  A/D de 10 bits  + Vref = Vdd = 5V  - Vref = Vss = 0V  Resolução de 4,88mV/bit Níveis de Tensão (V) Representação binária 0 B’0000 0000’ 19,61m B’0000 0001’ ... ... 5 B’1111 1111’ Níveis de Tensão (V) Representação binária 0 B’00 0000 0000’ 4,88m B’00 0000 0001’ ... ... 5 B’11 1111 1111’
  • 8.
    Conversor Analógico paraDigital 8 UTFPR – Campus Curitiba Prof. Amauri Assef Exemplos de cálculo para conversão A/D  Parâmetros:  A/D de 8 bits  + Vref = Vdd = 5V  - Vref = Vss = 0V  Resolução de 19,61mV/bit  2,5V = ?  Parâmetros:  A/D de 10 bits  + Vref = Vdd = 5V  - Vref = Vss = 0V  Resolução de 4,88mV/bit  2,5V = ? 5V → 255 2,5V → X X = 127,5 ≈ 128 5V → 1023 2,5V → X X = 511,5 ≈ 512
  • 9.
    Conversor Analógico paraDigital 9 UTFPR – Campus Curitiba Prof. Amauri Assef Registradores de 8 bits do módulo A/D  ADCON0 (A/D Control Register 0):  Controla a operação do módulo A/D  ADCON1 (A/D Control Register 1):  Configura as funções do PORTA e PORTE, e como o resultado será armazenado  ADRESH (A/D Result High Register):  Parte alta do resultado do A/D  ADRESL (A/D Result Low Register):  Parte baixa do resultado do A/D
  • 10.
    Conversor Analógico paraDigital 10 UTFPR – Campus Curitiba Prof. Amauri Assef Registrador ADCON0 (Endereço 1FH – Banco 0)  ADCS1:ADCS0: Seleção do clock de conversão do A/D em conjunto com o ADCON1  00 - Fosc/2  01 - Fosc/8  10 - Fosc/32  11 – Frc (clock derivado do oscilador interno RC)  CHS2:CHS0: Seleção do canal analógico  000 – canal 0 (AN0)  001 – canal 1 (AN1)  010 – canal 2 (AN2)  011 – canal 3 (AN3)  100 – canal 4 (AN4)  101 – canal 5 (AN5)  110 – canal 6 (AN6)  111 – canal 7 (AN7)  GO//DONE: Bit de status da conversão A/D  0 – conversor A/D em espera  1 – conversão A/D em progresso  (setar este bit para iniciar conversão)  ADON: Bit para ligar o módulo A/D  0 – conversão A/D desligado  1 – conversor A/D ligado
  • 11.
    Conversor Analógico paraDigital 11 UTFPR – Campus Curitiba Prof. Amauri Assef Registrador ADCON1 (Endereço 9FH – Banco 1)  ADFM: Seleção do formato do resultado do A/D  0 – justificado à esquerda  1 – justificado à direita  ADCS2: Seleção do clock em conjunto com os bits ADCS1: ADCS0 do registradorADCON0
  • 12.
    Conversor Analógico paraDigital 12 UTFPR – Campus Curitiba Prof. Amauri Assef Registrador ADCON1 (Endereço 9FH – Banco 1)  PCFG3:PCFG0: Bits de controle de configuração do PORTA e PORTE
  • 13.
    Conversor Analógico paraDigital 13 UTFPR – Campus Curitiba Prof. Amauri Assef Registrador ADCON1 (Endereço 9FH – Banco 1)  Resultado do A/D justificado
  • 14.
    Conversor Analógico paraDigital 14 UTFPR – Campus Curitiba Prof. Amauri Assef Exemplo: 1) Escrever o firmware para mostrar o valor de conversor A/D do canal 0 através dos LEDS conectados no PORTD. Utilizar Fosc/2 e dividir o valor lido por 4 para condicionar o resultado em 8 bits: 2) Escrever, simular e testar o firmware para ler o resultado da conversão do módulo AD, canal 0. Inicialmente piscar todos os LED do PORTD 5 vezes com atraso de 0,5 segundo. Na sequência, movimentar o motor de passo de acordo com o resultado da conversão (RC0,RC3,RC4 e RC5): 3) Escrever o firmware para digitalizar o valor analógico do sensor de temperatura LM35 (10mV/°C) e apresentar a temperatura equivalente no LCD 16x2: Valor do ADC Descrição – Sentido 1 Valor do ADC Descrição – Sentido 2 <= 0,5V 4 passos de 4ms 2,5V < e <= 3,0V Motor parado 0,5V < e <= 1,0V 4 passos de 8ms 3,0V < e <= 3,5V 4 passos de 32ms 1,0V < e <= 1,5V 4 passos de 16ms 3,5V < e <= 4,0V 4 passos de 16ms 1,5V < e <= 2,0V 4 passos de 32ms 4,0V < e <= 4,5V 4 passos de 8ms 2,0V < e <= 2,5V Motor parado > 4,5V 4 passos de 4ms
  • 15.
    Conversor Analógico paraDigital 15 UTFPR – Campus Curitiba Prof. Amauri Assef CH_1 CH_2 ADC_POT ADC_POT ADC_LM35 ADC_LM35 CH_1 CH_2 RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-/CVREF 4 RA4/T0CKI/C1OUT 6 RA5/AN4/SS/C2OUT 7 RE0/AN5/RD 8 RE1/AN6/WR 9 RE2/AN7/CS 10 OSC1/CLKIN 13 OSC2/CLKOUT 14 RC1/T1OSI/CCP2 16 RC2/CCP1 17 RC3/SCK/SCL 18 RD0/PSP0 19 RD1/PSP1 20 RB7/PGD 40 RB6/PGC 39 RB5 38 RB4 37 RB3/PGM 36 RB2 35 RB1 34 RB0/INT 33 RD7/PSP7 30 RD6/PSP6 29 RD5/PSP5 28 RD4/PSP4 27 RD3/PSP3 22 RD2/PSP2 21 RC7/RX/DT 26 RC6/TX/CK 25 RC5/SDO 24 RC4/SDI/SDA 23 RA3/AN3/VREF+ 5 RC0/T1OSO/T1CKI 15 MCLR/Vpp/THV 1 U1 PIC16F877A R11 10k VDD X1 CRYSTAL C1 15pF C2 15pF R1 330 R2 330 R3 330 R4 330 R5 330 R6 330 R7 330 R8 330 D1 LED-RED D2 LED-RED D3 LED-RED D4 LED-RED D5 LED-RED D6 LED-RED D7 LED-RED D8 LED-RED R9 10k VDD R10 10k VDD 50% RV1 1k VDD 27.0 3 1 VOUT 2 U2 LM35 VDD
  • 16.
    Conversor Analógico paraDigital 16 UTFPR – Campus Curitiba Prof. Amauri Assef Exemplo: 1) unsigned int temp_res; void main() { TRISA = 0x01; TRISD = 0X00; while(1) { temp_res = ADC_Read(0); // Le valor de 10 bits da conversão PORTD = temp_res >> 2; // Normaliza em 8 bits } }