Académique Documents
Professionnel Documents
Culture Documents
Conversor AD e PWM
Microcontroladores PIC
Prof. Msc. Francisco Fambrini
27/06/2015
LAB 4L
Intervalo para cooffe break 9:25hs a 9:40hs
Conversor A/D
O papel do Conversor Analgico/Digital (A/D) converter valores de tenso analgicas para valores digitais.
O conversor analgico-digital converte tenso analgica para nmeros binrios.
Estes nmeros binrios podem ser de comprimento diferentes: 2, 4, 8, 10, 12 ou 16 bits.
Quanto mais bits o conversor AD tiver, maior ser a resoluo deste AD.
Por exemplo: Suponha que a tenso fornecida ao conversor A/D varia de 0 a 5 volt, e o conversor A/D converte
a voltagem de entrada a um nmero binrio de 2 bits apenas.
Com 2 bits ns podemos ter apenas 4 sadas diferentes:
Conversor AD
A linha azul descreve as mudanas na tenso de entrada analgica do
microcontrolador. A linha vermelha representa os nveis digitais na sada
do conversor AD do microcontrolador.
Podemos ver que o sinal vermelho est longe de ser ideal, ou seja, no
reproduz os valores de tenso de entrada analgica original.
Assim, podemos dizer que este AD de 2-bit possui baixa resoluo e h uma
grande diferena entre o valor real da tenso de entrada analgica e os
valores representados por este A D.
Agora, suponhamos que a tenso fornecida ao conversor A D varia de 0 a 5
volt, no entanto, o conversor A / D converte a voltagem de entrada a um
nmero binrio de 3-bits.
Com 3-bits podemos obter 8 opes diferentes:
Conversor AD de 3 bits
ADCON0
Se ambos os bits forem feitos iguais a 1, o clock ser gerado por um oscilador RC
interno ao chip.
Bits PCFGx
PCFG3 a PCFG0: A/D Port Configuration Control bits
Resumo
Passo 4 - Aguarde o tempo de aquisio ( aproximadamente 20us ).
IMPORTANTSSIMO !
O Tempo de Aquisio Tad depende fundamentalmente da impedncia de
entrada do sinal colocado na entrada analgica !
A impedncia mxima da fonte de sinal analgico deve ser de 10 Kohms;
O tempo mnimo de aquisio para uma impedncia de 10K de 19,72us
O tempo mnimo de aquisio para uma impedncia de entrada de 50
ohms de 10,61us.
Para usar fontes de entrada com impedncia maior do que 10K,
recomenda-se o uso de um buffer (conversor de impedncia) externo ao
microcontrolador:
Questo
a) Se a tenso de alimentao Vcc do PIC for de
5 volts, qual o menor intervalo possvel
entre Vref- e Vref+ ?
b) Para este menor intervalo possvel, qual o
menor valor de tenso que pode ser lido pelo
conversor AD ?
Teorema de Nyquist
O critrio de Nyquist afirma que, para evitar o aliasing, devemos amostrar um
sinal a uma taxa igual a pelo menos duas vezes sua largura de banda.
Em outras palavras:
A Frequncia de Amostragem deve ser 2 vezes maior
que a frequencia que desejamos amostrar (Teorema
de Nyquist).
Na minha experincia prtica de desenvolvedor de sistemas embarcados, eu
reescreveria o Teorema de Nyquist assim:
A Frequncia de Amostragem deve ser pelo menos 10 vezes maior que a
frequencia que desejamos amostrar (Teorema de Fambrini).
11 ciclos da Converso do AD
IMPORTANTSSIMO !
1- O registrador ADCON1 est no Banco 1 da memria
( bsf STATUS,RP0) mas o registrador ADCON0 est no
Banco 0 da RAM ( bcf STATUS,RP0). Uma opo
usar a diretiva BANKSEL para selecionar o banco de
memria correto. Exemplo: banksel ADCON1.
Esquecer de chavear corretamente os bancos de
memria acarreta o no funcionamento do programa
2 Os microcontroladores PIC16F87x no possuem o
registrador de configurao ANSEL. A configurao
do AD feita apenas nos registradores ADCON0 e
ADCON1
; desligas as interrupes
bcf STATUS, 5
movlw b'00000101' ;Justificado direita, a referencia VDD=5 volts, AN0 entrada analog
movwf ADCON0 ;Ajusta RA0 como entrada analgica
bsf PORTA,5
clrf PORTD
; aguarda 20us
; liga o bit GO do ADCON0
CHECK:
btfsc ADCON0,2 ; Aguarda 12 Tad, aproximadamente 24us se clock= 4MHz
goto CHECK
; loop que aguarda o termino da converso AD
bsf STATUS,RP0
movf ADRESL,W
bcf STATUS,RP0
; muda para o banco0 da memria
movwf PORTD ; coloca o valor do W no PORTD, acendendo os LEDs correspondentes
nop
nop
goto MAIN
Exerccio
No programa anterior, identifique todas as
configuraes atribudas a cada bit dos
registradores ADCON0 e ADCON1.
Explique cada uma delas, escrevendo-as no seu
caderno.
ADCON0=00000101
ADCON1=10001110
// Configurao do conversor AD
SETUP_ADC_PORTS(RA0_ANALOG);
setup_ADC(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
while(true){
resultado = read_adc( );
output_D (resultado);
delay_us(20);
}//while(true)
}//main
Exemplo 2: Conversor AD em C
Abra e execute o Exemplo 2: Conversor AD em
linguagem C compilador CCS
// Configurao do conversor AD
SETUP_ADC_PORTS(RA0_ANALOG);
setup_ADC(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
//configura a Interrupo do AD
enable_interrupts(INT_AD );
enable_interrupts(GLOBAL);
PWM
MODULAO POR LARGURA DE PULSOS
PWM
PWM um acrnimo de Pulse Width Modulator (Modulao por Largura de Pulsos).
Trata-se de uma tcnica poderosa usada para gerar tenso analgica a partir de sinais
digitais.
PWM tem uma ampla variedade de aplicaes tais como controlar a potncia mdia
fornecida a uma carga, gerando nveis de tenso analgica, gerao de onda senoidal e
controle de velocidade do motores.
Sinais PWM so sinais do tipo On-Off (da o nome de pulso) cuja durao do tempo ligado
"On" pode variar de acordo com nossas necessidades.
A frao do perodo de tempo durante o qual o sinal ON dividida perodo de tempo total
denominado Ciclo Ativo (em ingls, DutyCycle=DC ).
Os microcontroladrores PIC possuem os mdulos CCP que podem ser usados para gerar
ondas PWM.
CCP uma sigla para para Capture/Compare/PWM.
O PIC 16F877A tem dois mdulos CCP chamados de CCP1 e CCP2.
Neste curso estudaremos apenas o mdulo PWM.
Os PIC16F877 podem produzir PWM com resoluo de at 10-bit (ou menos).
Observe que o perodo total de cada pulso t = t1+t2. Num sistema PWM,
o perodo t constante.
T(PWM) =
Perodo do Sinal PWM
Tosc =
1 / Fosc
Prescaler do TMR2 = Fator de Prescaler aplicado ao TMR2
Exerccio
Qual o valor que deve ser escrito no registrador PR2
para gerar um sinal PWM no pino RC2/CCP1 com
uma frequncia de 15625Hz, sendo a frequncia do
oscilador principal de 4MHz e o fator de Prescaler do
TMR2 de 1:1 ?
Soluo
PR2=63
Tendo em vista que o TMR2 s possui 8 bits, ele concatenado com 2 bits obtidos do Oscilador
Principal ou do Prescaler do TMR2 que so aqui representados por <Q1:Q0>, para
completar os 10 bits necessrios para que seja feita a comparao com os bits de controle.
Obs: Se escrevermos o valor PR2 = 255 (0xFF) no ser possvel obter um ciclo ativo de 100%, porque Np =
1024. Para obtermos um ciclo de 100% seria necessrio escrever o valor 1024 nos bits de controle, mas
isso no possivel, pois s temos 10 bits de controle, ento o maior valor possivel de ser escrito 1023.
RESUMO
Para ativar o modo PWM, aconselha-se seguir os seguintes passos:
1- Configurar o perodo do sinal PWM escrevendo o valor correto no
registrador PR2;
2 Configurar a largura do ciclo ativo escrevendo o valor correto nos bits de
controle CCPR1L:CCP1CON<5:4>
3 Configurar o pino RC2/CCP1 como sada, fazendo bcf TRISC, 2
4 Ligar o TMR2 com o valor desejado no Prescaler (T2CON)
5 Ativar o modo PWM fazendo CCP1CON <3:0> = 1100
; na prtica 8 bits
Exerccio
Calcule a mxima resoluo (em bits) do ciclo
ativo que pode ser obtida usando-se uma
frequncia de PWM de 78.125 kHz e oscilador
de clock com cristal de 20 MHz.
Dado: log(2) = 0,3010
(Resp: aprox. 8 bits )
Concluso:
Pode-se ver claramente que o valor escolhido para o registrador PR2 afeta a resoluo
em bits do PWM e consequentemente, o nmero de passos que podem ser obtidos.
Registrador CCP1CON
PROGRAMAS-EXEMPLOS: PWM
MAIN
BCF STATUS,RP0
CLRF PORTA
CLRF PORTB
CLRF PORTC
BSF STATUS,RP0
MOVLW B'11111111'
MOVWF TRISA
CLRF TRISB
CLRF TRISC
; limpa o PORTA
; limpa o PORTB
; limpa o PORTC
; muda para bank 1
; PORTA entrada
; PORTB saida
while (true) {
for (ciclo=0; ciclo<1024; ciclo++){
set_pwm1_duty (ciclo);
delay_ms(5);
}
delay_ms(1000);
}
}
Avaliao 2
1)
a)
b)
c)
d)
e)
f)