You are on page 1of 10

Fundamentos e Programao Bsica de Microcontroladores PIC

MDULO 4

Prof. Msc. Tcio Luiz de Souza Barbeiro

Contedo
s s s s s s s

Mdulo de Converso A/D A/D de Aproximaes Sucessivas Especificaes de um A/D Leitura de tenses Analgicas Caractersticas Circuito Exemplo Programa Exemplo

Mdulo de Converso A/D


s s s s

8 canais de converso (16F877) Conversor de Aproximao Sucessiva Nmero digital de 10 bits Tenses de Referncia : VDD, Vss, RA2 e RA3 (Selecionveis via software) 4 Registradores: A/D Result High Register (ADRESH) A/D Result Low Register (ADRESL) A/D Control Register0 (ADCON0) A/D Control Register1 (ADCON1)

A/D de Aproximaes Sucessivas

Analisando o diagrama anterior, vamos supor que a sada do conversor DA varie de 0V a 15V, quando sua entrada binria tem uma faixa de 0000 a 1111, com 0000 produzindo 0V e 0001 produzindo 1V, e assim por diante. Suponha que uma entrada analgica de 13V seja aplicada. No primeiro pulso do relgio , o registrador de sada carregado com 1000, que convertido pelo conversor AD em 8V. O comparador determina que 8V menor que a entrada analgica (13V), de modo que no prximo pulso do relgio o circuito de controle faz com que a sada do registrador seja carregada com 1100. A sada do conversor DA agora de 12V, e o comparador determina novamente que menor que a entrada analgica. Ento o registrador carregado com 1110 no prximo pulso do relgio. A sada do conversor DA ser de 14V, e o comparador determina agora que maior que a entrada analgica de 13V. Portanto o ultimo 1 carregado no registrador substitudo por 0, e 1 carregado no LSB. Desta vez, a sada do conversor DA de 13V, que igual ao valor da entrada analgica, de modo que a converso est completa. A sada do registrador contm 1101.

Especificaes de um A/D
s

A resoluo de um conversor AD a menor variao que pode ser identificada em uma escala analgica. Nos conversores AD, a resoluo depende diretamente do nmero de bits. O tempo necessrio para converter uma entrada analgica simples em uma sada digital chamado de tempo de converso de um conversor AD. O teorema da amostragem de Shannon declara que o dado amostrado pode ser usado para reproduzir fielmente um sinal que varia no tempo, desde que a taxa de amostragem seja pelo menos o dobro da freqncia da componente de maior freqncia do sinal. Exemplo: Qual o tempo mximo de converso que um conversor AD pode ter se ele for usado para converter sinais de entrada de udio A faixa de freqncia de udio considerada de 20 Hz a 20 kHz. Como a maior freqncia na entrada pode ser de 20 kHz, as conversesdevem ser executadas em uma taxa de pelo menos 40 x 103 converses/s. O tempo mximo de converses permitidas , portanto, igual a:
1 25 s 40 10 3

Leitura de Tenses Analgicas


Comandos Relacionados:
s s s s

s s

SETUP_COMPARATOR(): Configura o funcionamento do mdulo comparador interno. SETUP_VREF(): Configura a referncia interna de tenso. SETUP_ADC(): Configura o conversor AD interno. SETUP_ADC_PORTS(): Configura as entradas analgicas do conversor A/D interno. OBS: Ver tabela. SET_ADC_CHANEL: Seleciona um canal de entrada para o mdulo AD interno. READ_ADC: Efetua converso A/D. Aplicaes:

Normalmente, utilizam-se sensores especiais para converter a grandeza desejada em um nvel de tenso proporcional. Podemos efetuar a leitura dessa tenso por intermdio de um conversos analgico/digital, cuja funo converter a tenso analgica em um nmero binrio, proporcional tenso analgica.

Caractersticas
s

Nos conversores A/D, utiliza-se uma tenso de referncia (normalmente chamada de Vref) que serve de fundo de escala para o sinal de sada do conversor, ou seja, as sadas do conversor estaro todas em nvel 1 quando a tenso de entrada do conversor for igual ou maior que a tenso Vref. Como a sada do conversor um nmero binrio proporcional tenso medida e no o prprio valor binrio da tenso, necessrio utilizar tcnicas conhecidas como escalonamento, de forma a calcular o valor equivalente sada do conversor. O ideal seria usar valores de Vref que facilitem a tarefa de escalonamento, os mais comuns so 1,024; 2,048 e 4,096 Volts. No entanto, como a obteno de tais valores de tenso complicada e muitas vezes cara(apesar de existirem muitos CIS de referncia precisa de tenso), normalmente opta-se pela utilizao da prpria tenso de alimentao como referncia para o conversor. Para entender o funcionamento do escalonamento, suponha um conversor A/D com resoluo de 10 bits e referncia de 5V. Podemos facilmente concluir que o valor de cada bit ser igual a 5/(210 - 1)=4,8876 mV, ou seja, para um resultado igual a 100 (decimal), teremos uma tenso de 100* 4,8876 mV = 0,48876 V. Quando trabalhamos com os conversores A/D internos do PIC devemos lembrar que a impedncia mxima da fonte de sinal analgico deve ser de 10 Kohms e o tempo mnimo de aquisio de 19,72s.

Circuito Exemplo

Simulao de um Sensor

Programa Exemplo
#include <16f877.h> // Configura o compilador para conversor A/D de 10 bits #device adc=10 #use delay(clock=4000000) #fuses HS,NOWDT,PUT #include <regs_16f87x.h> #include <mod_lcd.c> main() { long int valor; int32 val32; lcd_ini(); setup_ADC_ports (RA0_analog); setup_adc(ADC_CLOCK_INTERNAL ); set_adc_channel(0);

Programa Exemplo
while (true) { lcd_escreve ('\f'); // apaga o display // O escalonamento realizado da seguinte forma: // resultado = (5000 * valor lido) / 1023 // Para facilitar os clculos, somamos um ao // valor lido: // resultado = (5000 * (valor + 1)) / 1024 // simplificando: // resultado = ((valor + 1) * 4) + ((valor + 1) * 113) / 128 // Repare que necessrio converter a segunda parte da // equao para 32 bits para que o compilador efetue o // clculo corretamente valor = read_adc(); // efetua a converso A/D // Se o valor > 0, soma 1 ao valor lido if (valor) valor += 1; val32 = valor * 4 + ((int32)valor * 113)/128; // imprime o valor da tenso no display // 5000 = 5,000 Volts ou 5000 milivolts printf (lcd_escreve,"Tensao = %lu mV",val32); delay_ms (250); // aguarda 250 ms } }

You might also like