13
Escola Secundária Serafim Leite Disciplina: SDAC C C o o n n v v e e r r s s o o r r A A / / D D 2008/2009 Professora Ana Reis Professor Marco Vasconcelos

Manual Conversor A/D

Embed Size (px)

DESCRIPTION

Manual de auxílio para os Alunos da Disciplina SDAC

Citation preview

Page 1: Manual Conversor A/D

 

   

Escola Secundária Serafim Leite Disciplina: SDAC 

        

 

CC

            

oonnvveerrssoorr  AA//DD 

 

2008/2009

Professora Ana Reis Professor Marco Vasconcelos 

Page 2: Manual Conversor A/D

Microcontrolador PIC16F877A 

Índice 1. Introdução Teórica: ........................................................................................................................................ 3 

1.2 Registos ADRESH e ADRESL ...................................................................................................................... 3 

2. Necessidades de Aquisição do módulo A/D .................................................................................................. 4 

2.1 Período de Relógio do ADC ...................................................................................................................... 4 

3. Registo ADCON0............................................................................................................................................. 5 

4. Registo ADCON1............................................................................................................................................. 6 

5. Interrupções no Conversões A/D ................................................................................................................... 8 

6. Conversor A/D no Modo SLEEP ...................................................................................................................... 9 

7. Efeitos de um Reset ....................................................................................................................................... 9 

8. Kit EasyPic4 .................................................................................................................................................. 11 

9. Bibliografia ................................................................................................................................................... 13 

                            

Página 2 de 13  

Page 3: Manual Conversor A/D

Microcontrolador PIC16F877A 

1. Introdução Teórica: À  parte  de  um  grande  número  de  linhas  de  entradas  I/O  digitais,  o  PIC16F877A  contém  8  entradas analógicas. Permite que o Microcontrolador reconhecer, não só se um pino está na lógica 0 ou de 1 (0V ou 5V respectivamente), mas para medir precisamente a sua voltagem e converter num valor numérico, isto é, formato digital. Todo este procedimento acontece no Módulo do Conversor Analógico‐Digital que tem as seguintes características: 

• O conversor gera um resultado binário de 10 bits usando um método de aproximações sucessivas e guarda os resultados da conversão nos registos do Conversor A/D (ADRESL e ADRESH); 

• O módulo A/D tem a referência de entrada de alta ou baixa voltagem que pode ser seleccionado pelo software para umas combinações de VDD, VSS, RA2 e RA3; 

• O  conversor  A/D  tem  uma  única  característica  de  poder  operar  enquanto  o  dispositivo  está  no modo Sleep. Para operar no modo Sleep, o relógio do A/D tem de ser derivado através do oscilador interno RC do A/D; 

• O Conversor A/D permite a conversão de um sinal de entrada analógica para uma representação binária de 10 bits desse mesmo sinal; 

• Seleccionando  as  voltagens  de  referência  VREF‐  e  VREF+,  a mínima  resolução  ou  qualidade  da conversão pode ser ajustado para as várias necessidades. 

O módulo A/D tem 4 registos, que são: • ADRESH – A/D Result High Register (contém os bits mais significativos do resultado da conversão); • ADRESL – A/D Result Low Register (contém os bits menos significativos do resultado da conversão); • ADCON0 – A/D Control Register 0 ; • ADCON1 – A/D Control Register 1; 

O registo ADCON0, controla a operação do módulo A/D. O registo ADCON1 configura o funcionamento dos pinos da porta. Os pinos da porta podem ser configurados com entradas analógicas (RA3 também pode ser uma Tensão de referência) ou como I/O digital.  

1.2 Registos ADRESH e ADRESL Quando se está a converter um valor analógico para um valor digital, o resultado da Conversão A/D de 10 bits irá ser armazenado nestes dois registos. Para melhor trabalhar com este valor de uma forma mais fácil, pode  ser  representado em dois  formatos:  justificado  à esquerda e  justificado  à direita. O bit ADFM do registo ADCON1 determina o formato do resultado da conversão. 

 Figura 1 – Registos ADRESH e ADRESL: Modo de armazenamento 

Página 3 de 13  

Page 4: Manual Conversor A/D

Microcontrolador PIC16F877A A resolução mínima do Conversor A/D é aproximadamente 4,88 mV (5V/1023). 

• ADFM = 1 – Justificado à Direita: o Para  se  ter  resultado  dos  8  bits  descartando  os  dois  bits mais  significativos  do  ADRESH, 

vamos usar o valor da Tensão de Referência, ou seja 5 V / 4 = 1,25V, mantendo o valor da resolução do Conversor A/D. Passamos a ter 1024/4 = 256 combinações; 

• ADFM = 0 – Justificado à esquerda: o Para  se  ter  resultado dos 8 bits descartando os dois bits menos  significativos do ADRESL 

vamos usar o valor da resolução mínima, ou seja 4,88 mV * 4 = 1,952 mV. Passamos a ter 1024/4 = 256 combinações. 

 

2. Necessidades de Aquisição do módulo A/D Para o Conversor A/D  conhecer  sua precisão, é necessário  fornecer um  certo  tempo de  atraso entre  a selecção da entrada analógica e a sua medição. Este  tempo é denominado por “Tempo de Aquisição” e depende principalmente da  impedância de entrada. Existe uma equação que é usada para calcular com precisão deste tempo, em que no pior dos casos é aproximadamente de 20µs. Depois de seleccionar (ou alterar) a entrada analógica e antes de começar a conversão é necessário fornecer no mínimo o tempo de atraso de 20µs para permitir que o Conversor A/D tenha máxima precisão de conversão.  

2.1 Período de Relógio do ADC O período necessário para completar a conversão de um bit é definido como TAD. O necessário TAD tem de  ter pelo menos 1,6µs. O Conversor A/D requer um mínimo de 12 TAD por cada conversão de 10‐bit. Porém, desde que a conversão da frequência de relógio e a entrada seja determinada pelo software, um dos bits disponíveis de combinação ADCS1 e ADCS0 devem ser seleccionados antes da medição da Tensão em algum início da entrada analógica. Estes bits são armazenados no registo ADCON0.  

Tabela 1: Período de Relógio do ADC 

Entrada do Relógio AD (TAD) Frequência Máxima do Dispositivo 

Operação  ADCS2:ADCS1:ADCS0 

2 Tosc  000  1,25MHz

4 Tosc  100  2,5 MHz

8 Tosc  001  5 MHz

16 Tosc  101  10 MHz

32 Tosc  010  20 MHz

64 Tosc  110  20 MHz

RC  x11  A entrada do RC tem um tempo TAD típico de 4µs mas pode estar entre 2‐6µs. Quando a frequência do dispositivo é maior que 1 MHz, a entrada RC do Relógio do Conversor A/D só é recomendada para a operação Sleep. 

 Qualquer alteração no sistema da frequência do relógio irá ter um efeito na frequência de relógio do ADC, o que pode adversamente afectar o resultado da ADC.      

Página 4 de 13  

Page 5: Manual Conversor A/D

Microcontrolador PIC16F877A 

3. Registo ADCON0   R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 ADCS1  ADCS0  CHS2  CHS1  CHS0  GO/DONE    ADON Bit 7    Bit 6    Bit 5    Bit 4    Bit 3    Bit 2       Bit 1  Bit 0 

R = Bit de Leitura W = Bit de Escrita 

0 = bit is clear   ADCS1, ADCS0 (Bit 7‐6): Bits de selecção do relógio do Conversor A/D. Selecciona a frequência de relógio usada para a sincronização interna do conversor A/D. Também afecta a duração de conversão.  

ADCON1 <ADCS2> 

ADCON0 <ADCS1:ADCS2> 

Conversão do Relógio 

0  00  Fosc/2 

0  01  Fosc/8 

0  10  Fosc/32 

0  11  FRC 1

1  00  Fosc/4 

1  01  Fosc/16 

1  10  Fosc/64 

1  11  FRC Tabela 2: Bits de Selecção do Conversor A/D   CHS2‐CHS0 (Bit5‐3): Bits de selecção do canal analógico. Selecciona um pino ou um canal analógico para conversão, ou seja, medição da voltagem.  

CHS2  CHS1  CHS0  Canal  Pin0 

0  0  0  0  RA0/AN0 

0  0  1  1  RA1/AN1 

0  1  0  2  RA2/AN2 

0  1  1  3  RA3/AN3 

1  0  0  4  RA5/AN4 

1  0  1  5  RE0/AN5 

1  1  0  6  RE1/AN6 

1  1  1  7  RE2/AN7 Tabela 3: Bits de estado do Canal Analógico  

                                                       1 O Relógio é gerado pelo oscilador interno pelo qual está construído no conversor. 

Página 5 de 13  

Page 6: Manual Conversor A/D

Microcontrolador PIC16F877A  GO/DONE (Bit 2): Bit de estado da Conversão A/D. Determina o estado corrente da conversão: 

• Quando o ADON=1; o 1 – Conversão A/D em progresso; o 0  –  Conversão  A/D  está  completa  ou  a  Conversão  A/D  não  esta  em  progresso.  Muda 

automaticamente quando a conversão A/D é completa.   Unimplemented (Bit 1): lê como ‘0’.   ADON (Bit 0): Bit on A/D. Permite conversão A/D. 

• 1 – Conversão A/D é activada; • 0 – Conversão A/D é desactivada. 

  

4. Registo ADCON1  R/W-0 R/W-0 U-0 U-0 R/W-0 R/W-0 U-0 R/W-0 ADFM  ADCS2      PCFG3  PCFG2  PCFG1  PCFG0 Bit 7    Bit 6    Bit 5    Bit 4    Bit 3    Bit 2       Bit 1  Bit 0 

R = Bit de Leitura W = Bit de Escrita 

0 = bit is clear ADFM (Bit 7): formato do bit de selecção do resultado da A/D. 

• 1 – Resultado da Conversão do Justificado à Direita. Os 6 bits mais significativos do ADRESH não são usados; 

• 2 – Resultado da Conversão do Justificado à Esquerda. Os 6 bits menos significativos do ADRESL não são usados. 

  ADCS2 (Bit 6): bit de selecção do Relógio de Conversão A/D.  

ADCON1 <ADCS2> 

ADCON0 <ADCS1:ADCS0) 

Relógio de Conversão 

0  00  Fosc/2 

0  01  Fosc/8 

0  10  Fosc/32 

0  11  Frc (relógio derivado pelo oscilador RC interno do A/D)  

1  00  Fosc/4 

1  01  Fosc/16 

1  10  Fosc/64 

1  11  Frc (relógio derivado pelo oscilador RC interno do A/D)  Tabela 4: Bits de selecção do Relógio do Conversor A/D 

Página 6 de 13  

Page 7: Manual Conversor A/D

Microcontrolador PIC16F877A   Unimplemented (Bit 5‐4): lê como ‘0’.   PCFG3:PCFG0 (Bit 3‐0): Porta de Configuração do Controlo de bits da A/D.  

 Tabela 5: Bits de controlo da configuração da porta A/D.  Os Registos ADRESH:ADRESL contém 10 bits de resolução da Conversão A/D. Quando o Conversor A/D é finalizada,  o  resultado  é  armazenado  no  registo  par,  o  bit  GO/DONE  (ADCON0<2>)  é  posto automaticamente a zero e a flag de interrupção do conversor A/D do bit ADIF é activo.  Depois de o módulo A/D ter sido configurado como desejámos, o canal seleccionado tem de ser adquirido antes do início da conversão. Os canais da entrada analógica têm de ter o respectivo bit TRIS seleccionado como entradas. Para efectuar uma Conversão A/D, segue os seguintes passos: 

1. Configurar o módulo A/D: a. Configurar os pinos/tensão de referência e I/O Digital (ADCON1); b. Seleccionar o canal de entrada do A/D (ADCON0); c. Seleccionar o Relógio do Conversor A/D (ADCON0); d. Activar o Módulo A/D (ADCON0); 

2. Configuras as rotinas de Interrupção do A/D (se assim desejar): a. Desactivar o bit ADIF; b. Activa o bit ADIE; c. Activa o bit PEIE; d. Activa o bit GIE. 

Página 7 de 13  

Page 8: Manual Conversor A/D

Microcontrolador PIC16F877A 3. Esperar pelo Tempo de Aquisição. 4. Início da Conversão: 

a. Activar o bit GO/DONE (ADCON0). 5. Esperar que o A/D finalize a conversão, ou: 

a. Forçar que o bit GO/DONE esteja desactivado (interrupções), ou; b. Esperar pela interrupção do A/D. 

6. Ler o registo par do Resultado do A/D (ADRESH:ADRESL), é necessário desactivar o bit ADIF. 7. Para uma próxima conversão, volte ao passo 1 ou passo 2. O  tempo de Conversão A/D por bit é 

definido como TAD.  

  

Figura 2: Diagrama de Blocos A/D   

5. Interrupções no Conversões A/D Quando  uma  conversão  A/D  termina,  além  de  o  resultado  da  conversão  ser  armazenado  nos  registos ADRESH:ADRESL e do bit GO/DONE passar para o  zero, a  flag de  sinalização de  fim da conversão A/D é colocado  a  1,  o  bit  ADIF  (PIR1<6>).  Para  que  a  interrupção  do módulo  conversor  A/D  seja  tratada,  é necessário as seguintes configurações: 

a. Desactivar o bit ADIF; b. Activa o bit ADIE; c. Activa o bit PEIE; d. Activa o bit GIE 

Página 8 de 13  

Page 9: Manual Conversor A/D

Microcontrolador PIC16F877A 

   Figura 3: Lógica de Interrupção (GIE=1, PEIE=1, ADIE=1 e ADIF=0, assim que finalizar a conversão o bit GO/DONE 

passa a 0 e o ADIF a 1, provocando uma interrupção)    

6. Conversor A/D no Modo SLEEP  O módulo SLEEP do  conversor A/D do PIC16F877A pode  funcionar no modo  sleep, desde que o  relógio utilizado na conversão A/D esteja seleccionado no  Frc (ADCS1:ADCS0=11).  No modo SLEEP, o conversor opera nas funções mínimas o que pode eliminar todo o ruído digital durante a conversão. Quando a conversor for finalizada o bit GO/DONE vai ser desactivado e o resultado armazenado no  ADRESH:ADRESL,  e  se  as  interrupções  estiverem  activadas  a  flag  ADIF  fica  activa  e  acorda  o Microcontrolador. Se  durante  a  conversão  o Microcontrolador  for  colocado  no modo  SLEEP  com  qualquer  outro  tipo  de oscilador  seleccionado que não  seja o  circuito RC,  a  conversão  corrente  irá  ser perdida e o módulo do conversor desligado, embora o bit ADON seja mantido activo.   

7. Efeitos de um Reset Quando ocorre um reset, o módulo conversor A/D é desligado, de maneira que se estiver em andamento alguma conversão, esta será cancelada. O  valor  dos  registos  ADRESH:ADRESL  não  são modificados  quando  fazemos  o  Power‐on  do  Reset.  Os  registos ADRESH:ADRESL irão conter dados desconhecidos depois de um Power‐on do Reset.  

Página 9 de 13  

Page 10: Manual Conversor A/D

Microcontrolador PIC16F877A 

Página 10 de 13  

 Tabela 6: Registos associados ao Conversor A/D.                                 

Page 11: Manual Conversor A/D

Microcontrolador PIC16F877A 

8. Kit EasyPic4 O Kit  tem dois potenciómetros que  trabalham com o Conversor Analógico para Digital  (ADC). Ambas as saídas dos potenciómetros têm uma gama de 0V a 5V. Dois sinais analógicos podem ser  ligados aos dois pinos de entradas analógicas diferentes ao mesmo tempo. O grupo de Jumper J15 permite a conexão com o potenciómetro P1 e o conjunto de pinos envolvidos são: RA0, RA1, RA2, RA3 e RA4. O grupo de Jumpers J16 permite a conexão com o potenciómetro P2 e o conjunto de pinos envolvidos são: RA1, RA2, RA3, RA4 e RA5. 

  Figura 4: Entradas do Conversor ADC 

  Para medir o sinal analógico sem interferências, ponha a posição do interruptor do SW1 para OFF. Isto irá desactivar a conexão usada pelo pino PORTA usado para a resistência de pull‐up/down. Aplicações da Conversão A‐D são várias. O Microcontrolador pega na forma do sinal analógico do seu pino de entrada e converte para um valor Digital. Basicamente, podemos medir qualquer sinal analógico que esteja na gama aceitável pela PIC. A gama é de 0V a 5V. 

Página 11 de 13  

Page 12: Manual Conversor A/D

Microcontrolador PIC16F877A 

 

As  resistências de Pull‐up/down  da  entrada analógica  PORTA  têm de  ser  desactivadas através do SW1

Potenciómetro  P1  está ligado  ao  RA2  e  o Potenciómetro  p2  está ligado ao RA3.

Figura 5: Esquemático das entradas do Conversor ADC  NOTA: Os jumpers J15 e J16 não devem seleccionar o mesmo pino, têm de ser diferentes.            

Página 12 de 13  

Page 13: Manual Conversor A/D

Microcontrolador PIC16F877A 

Página 13 de 13  

9. Bibliografia  [1] Zanco, Wagner da Silva, “Micocontroladores PIC: Técnicas de Software e Hardware para Projectos de Circuitos Electrónicos: Com Base no PIC16F877A”, 2006, Editora Érical Ltda.  [2] DATASHEET Microchip PIC16F87XA  [3] www.microchip.com