16
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 [email protected]

Apresentacao ADC PIC16F877A

Embed Size (px)

DESCRIPTION

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:

Citation preview

Page 1: Apresentacao ADC PIC16F877A

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

[email protected]

Page 2: Apresentacao ADC PIC16F877A

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)

Page 3: Apresentacao ADC PIC16F877A

CHS2:CHS0

PCFG3:PCFG0

PCFG3:PCFG0

Conversor Analógico para Digital

3 UTFPR – Campus Curitiba

Prof. Amauri Assef

Diagrama em bloco do A/D

Page 4: Apresentacao ADC PIC16F877A

Conversor Analógico para Digital

4 UTFPR – Campus Curitiba

Prof. Amauri Assef

Modelo da entrada analógica Amostragem e retenção – sample and hold

Page 5: Apresentacao ADC PIC16F877A

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

Page 6: Apresentacao ADC PIC16F877A

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:

Page 7: Apresentacao ADC PIC16F877A

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’

Page 8: Apresentacao ADC PIC16F877A

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

Page 9: Apresentacao ADC PIC16F877A

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

Page 10: Apresentacao ADC PIC16F877A

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

Page 11: Apresentacao ADC PIC16F877A

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

Page 12: Apresentacao ADC PIC16F877A

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

Page 13: Apresentacao ADC PIC16F877A

Conversor Analógico para Digital

13 UTFPR – Campus Curitiba

Prof. Amauri Assef

Registrador ADCON1 (Endereço 9FH – Banco 1)

Resultado do A/D justificado

Page 14: Apresentacao ADC PIC16F877A

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 o LED do pino RD0 5 vezes com atraso de 1 segundo. Na sequência, movimentar o motor de acordo com o resultado da conversão (RD1..RD4):

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

Page 15: Apresentacao ADC PIC16F877A

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_2RA0/AN0

2

RA1/AN13

RA2/AN2/VREF-/CVREF4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RE0/AN5/RD8

RE1/AN6/WR9

RE2/AN7/CS10

OSC1/CLKIN13

OSC2/CLKOUT14

RC1/T1OSI/CCP216

RC2/CCP117

RC3/SCK/SCL18

RD0/PSP019

RD1/PSP120

RB7/PGD40

RB6/PGC39

RB538

RB437

RB3/PGM36

RB235

RB134

RB0/INT33

RD7/PSP730

RD6/PSP629

RD5/PSP528

RD4/PSP427

RD3/PSP322

RD2/PSP221

RC7/RX/DT26

RC6/TX/CK25

RC5/SDO24

RC4/SDI/SDA23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U1

PIC16F877A

R1110k

VDD

X1CRYSTAL

C1

15pF

C2

15pF

R1330

R2330

R3330

R4330

R5330

R6330

R7330

R8330

D1LED-RED

D2LED-RED

D3LED-RED

D4LED-RED

D5LED-RED

D6LED-RED

D7LED-RED

D8LED-RED

R910k

VDD

R1010k

VDD

50%

RV1

1k

VDD

27.0

3

1

VOUT2

U2

LM35

VDD

Page 16: Apresentacao ADC PIC16F877A

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

}

}