Pwm pic 18 f
-
Upload
ifpb -
Category
Technology
-
view
6.163 -
download
4
description
Transcript of Pwm pic 18 f
PWM– PIC 18F
Prof. Ilton L Barbacena
2012.2
PWM – Pulse Width Modulation
• É o recurso mais usado dos módulos CCPs;• Pode-se obter uma tensão analógica a partir
de um sinal digital (DAC), naturalmente com utilização de filtros na saída;
2 /99
PWM
• A tensão média é diretamente proporcional ao duty cycle ou ciclo ativo.
3 /99
Onde: V(t) = Vpulsos para 0<= t <=tp V(t) = 0 para tp < t <= T
A tensão média será:
PWM• Para se obter um conversor digital analógico a partir do
pino CCPx, basta implementar um sinal PWM e adicionar em sua saída um filtro passa baixa com frequência de corte menor que a própria frequência do PWM.– Supor um filtro RC, onde fcorte = 1 / (2*pi*R*C);– Neste caso, deve-se adotar sempre:
4 /99
• Quando não é necessária obter uma tensão média contínua, a implementação do filtro é descartada;
• No caso de resistores de aquecimento ou motores DC o filtro é dispensável, uma vez que estes componentes já atuam como filtros, desde que a frequência do PWM não seja muito baixa.
PWM - DAC
5 /99
PWM com filtro RC
6 /99
1 – Escolhe p/ gerar pulsos 2- Tensão de pico (5V)3 – duty = 10% 4 – freq. Do PWM
PWM com filtro RC
7 /99
Duty = 10% Duty = 70%
Veja alguns exemplos em:http://ww1.microchip.com/downloads/en/AppNotes/00655a.pdfhttp://aquaticus.info/pwm-sine-wavehttp://www.wpi.edu/Pubs/E-project/Available/E-project-042711-190851/unrestricted/PWM_Techniques_final.pdf
PWM com filtro RC
8 /99
Veja o resultado da simulação com um sinal PWM aplicado em utilizando um filtro RC com 2 estágios, para geração de um sinal senoidal.
Filtro RC com 2 polos Sinal de entrada pwm de 19kHz e duty de 70%
PWM com filtro LC
9 /99
• Veja o resultado da simulação com um sinal PWM aplicado em utilizando um filtro LC com 2 estágios, para geração de um sinal senoidal.
• Em não havendo necessidade de obter tensão média contínua, utiliza-se o PWM sem filtros (aquecimento e acionamento de motores), desde que a frequência do PWM não seja muito baixa.
Filtro LC com 2 polosSinal de entrada pwm de 19kHz e duty de 80%
Diagrama simplificadodo PWM no PIC 18F
10 /99
O registrador de duty cycle possui 10 bits: 8 em CCPxL e 2 em CCPxCON
PWM no PIC 18F
11 /99
Timer2 no PIC 18F
12 /99
Timer 2Contador de 8 Bits
Calculadora timer2: http://pictimer.picbingo.com/http://www.best-microcontroller-projects.com/pic-timer-2.html
Timer2 no PIC 18F
13 /99
• Timer2 é um contador de 8 bits;• Usa somente o clock interno ou o cristal;• Possui um prescaler (1, 4, 16 e 16) e um postscaler
(1,2,3,..,15, 16), ambos configuráveis;• A saída do Timer2 pode ser associada ao modo MSSP
(Master Synchronous Serial Port Module) e PWM; • TMR2 é um registrador contador de leitura e gravação de 8
bits;• PR2 é um registrador de leitura e gravação de 8 bits e sempre
inicializado a 0xFFh no Reset.• O registrador contador TMR2 do Timer2 incrementa de 0 até
o valor gravado em PR2 (8 bits);• Quando PR2=0xFF ou 255, ocorre a contagem máxima;• Observar que o postscaler de timer 2 não afeta o PWM;
Timer2 no PIC 18F
14 /99
• Fout - A frequência de saída após a divisão /overflow / .• Tout - O tempo de ciclo após a divisão.• Fclk é a frequência do cristal. Não se deve usar oscilador externo.• Contagem - Um valor numérico para ser colocado para obter a
frequência desejada - fout.• (PR2 - TMR2) - O número de vezes que o contador irá contar.
Exemplo de Timer2 no PIC 18F
15 /99
Assumiremos os seguintes parâmetros:Cristal=8MHz, Prescaler 1:1, Postscaler 1:16, TMR2=0 e PR2=255
Exemplo: Cálculo de uma interrupção a cada 1s com TIMER2 (1Hz)
Count = clock / (4*prescaler*(PR2-TMR2) * Postscaler * Fout)
Count = 8M / (4*1*(255-0)*16*1)Count = 488
Para se obter uma interrupção a cada 1s dever utilizar uma variável global Count, iniciando com zero, e o tempo de 1s vai ocorrer quando o valor atingir 488.
Exemplo de Timer2 no PIC 18F
16 /99http://pictimer.picbingo.com/ 488 x 2048000nS = 1s
PWM no PIC 18F
17 /99
• Nesta família existem 2 canais PWM (CCP1 e CCP2) / 2 pinos de saída;• Resolução máxima de 10 bits, logo o duty cycle pode variar de 0 a 1023;• O ciclo ativo do sinal é definido pelo valor armazenado em CCPRxL (8 bits) e
CCPxCON (bit DCxB1 e bit DCxB2);• O período do PWM é controlado diretamente pelo Timer 2, através do
registrador PR2;• O contador do timer2, TMR2, começa de zero e vai incrementando até quando TMR2
= PR2, voltando para zero novamente. Neste momento quando o timer2 é ressetado, o postscaler é incrementado. Quando o postscaler, contador de estouros, atingir o valor programado, é gerado uma interrupção associado a timer2;
• O postscaler varia de 1 a 16;• O período e a frequência PWM é dado por:
Tpwm = (PR2 + 1) * 4 * Tosc * (Prescaler do TMR2)PWMfreq = 1 / Tpwm
No PIC não se define duty cycle, mas o tempo de pulso em nível alto, que é dado por:
(1)
(2)
PWM no PIC 18F
18 /99
• A largura do pulso é ajustada em 10 bits: 8 bits do registrador CCPxL e 2 bits do registrador CCPxCON (os bits 5 e 4);
• O duty depende exclisivamente dos 10 bits (8 em CCPxL e 2 em CCPxCON);
• Veja que PR2 (8 bits), que controla o Tpwm, é multiplicado por 4 para poder igualar-se aos 10 bits. Com isso, se PR2 for ajustado para um valor menor que 255, será necessário um valor menor que 10 bits, para atingir um PWM com 100% de duty;
• Observar que o postscaler de timer 2 não afeta o PWM;• A resolução ou a quantidade máxima de bits para o PWM é dado
por:
(3)Em bits
Exemplo de PWM no PIC 18F
19 /99
• Supor um PWM de 20KHz, com um clock de 8MHz e prescaler do timer 2 de 1:1;
De (1)
Em (5), para fpwm = 10KHz , p=1 e clock=8MHz , teremos PR2 = 99 Hz
(4)
(5)
PWM no PIC 18F
20 /99
• A resolução do sinal PWM é inversamente proporcional à frequência do sinal, ou seja, quanto maior a freq. PWM, menor será sua resolução;
• Com isso, para obter um sinal PWM com frequência maior, é necessário gravar o registrador PR2 com um valor menor.
• A resolução de 10 bits somente se consegue quando se grava em PR2 com o valor 0xFF. Para obter-se frequências maiores, é necessário diminuir este valor, diminuindo assim os o número de passos no ciclo ativo;
Exemplos: http://www.todopic.com.ar/foros/index.php?topic=30740.0;wap2Atividade:
gerar um PWM de 3KHz (fpwm = 3KHz) com duty variável de 20% a 80%.
Exemplo de PWM no PIC 18F
21 /99
• Supor um PWM de 20KHz, com um clock de 8MHz, configurar os registradores;
Calculadora de PWM para PIC: http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html
Neste caso, é somente transcrever para o programa no PIC;
Resolução de PWM no PIC 18F
22 /99
• A resolução do sinal PWM é inversamente proporcional à frequência do sinal, ou seja, quanto maior a freq. PWM, menor será sua resolução;
• Com isso, para obter um sinal PWM com frequência maior, é necessário carregar o registrador PR2 com um valor menor.
• A resolução de 10 bits somente se consegue quando se carrega PR2 com o valor 0xFF. Para obter-se frequências maiores, é necessário diminuir este valor, diminuindo assim os o número de passos no ciclo ativo;
Dados extraídos do manual do PIC18F4520 na pag. 147
Atividade para PWM no PIC 18F
23 /99
• Gerar um PWM de 20KHz, com um clock de 8MHz. Variar o duty proporcionalmente ao valor de tensão analógica presente em um potenciômetro conectado a uma entrada analógica;
• Mostra mudança no duty com as mudanças na posição do potenciômetro no LCD;
• Implementar o programa no simulador Proteus;• Detalhar todas as considerações feitas na elaboração do
programa;• Entrega no dia 30/10 . • Pode usar a calculadora, mas tem que explicar os resultados;• Colocar identificações nos arquivos fontes e escrever no LCD o
seu nome e data, no inicio do programa;