Fig. 3 Conversor D/A de N -bits usando um agregado binário de resistências.
Manual Conversor A/D
description
Transcript of Manual Conversor A/D
Escola Secundária Serafim Leite Disciplina: SDAC
CC
oonnvveerrssoorr AA//DD
2008/2009
Professora Ana Reis Professor Marco Vasconcelos
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
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
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
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
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
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
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
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
Microcontrolador PIC16F877A
Página 10 de 13
Tabela 6: Registos associados ao 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
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
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