Escolar Documentos
Profissional Documentos
Cultura Documentos
Gaiotto
Modulation)
Objetivos:
Desenvolvimento
Informaes necessrias:
Um sinal PWM (Pulse Width Modulation Modulao por Largura de Pulso) permite
que a energia entregue para a carga possa ser controlada. Ele consiste em manter o perodo do sinal
constante, mudando apenas a largura do pulso, ou seja, o tempo que o sinal fica em nvel lgico alto.
A figura 1 apresenta o grfico de um sinal quadrado com perodo constante e larguras de pulso em
50%, ou seja, simtrico.
O Microcontrolador PIC 16F877A (assim como alguns outros modelos) possui 2 canais de
PWM que podem operar com resoluo mxima de 1024 pontos (de 0 1023), ou seja, o ciclo ativo
pode ser configurado com at 10 bits, e possibilitar variaes de 0 100%. Conforme a freqncia
escolhida para a operao, esta resoluo pode ser alterada para menos de 10 bits.
Para definir o perodo do PWM, devemos ajustar o TIMER 2, que um contador de 8 bits, ou
seja, pode realizar uma contagem de 0 at 255. Este Timer possui ainda dois outros registradores
especiais chamados de PRESCALER e POSTSCALER. A figura 5 apresenta o diagrama em blocos
do TIMER 2.
Toda vez que o valor do registrador TMR2 for igual ao valor do PR2, o
contador ser resetado e o registrador POSTSCALER incrementado.
TPWM = (2
)*(1/xtal)*PRESCALER
PWM RESOLUO
(1/78,125KHz) = (2
)*(1/20MHz)*1
PWM RESOLUO
12,8us = (2
)*50ns*1
controlar a energia entregue para as sadas, onde esto conectados dois leds, os quais tero a
intensidade de brilho controlada pelo nvel mdio da tenso entregue a eles e de maneira
independente. O cdigo fonte para o teste deste hardware apresentado a seguir.
Com o circuito da figura 7 permite que sejam testados os dois canais de PWM do
microcontrolador PIC 16F877A. Atravs do ajuste de potencimetros, um para cada canal, pode-se
controlar a energia entregue para as sadas, onde esto conectados dois leds, os quais tero a
intensidade de brilho controlada pelo nvel mdio da tenso entregue a eles e de maneira
independente. O cdigo fonte para o teste deste hardware apresentado a seguir.
Figura 7. Circuito bsico de teste para o PWM 100% com Motor DC 24V de baixa corrente.
//*******************************************************************************************************************
//
Programa exemplo para uso do PWM 100% - frequencia de 19,53KHz
//
- Um canal de PWM controlado por um potencimetro conectado
//
ao RA0 controlando a rotao de um motor DC
//*******************************************************************************************************************
#include <16F877A.H> // configurar para o controlador a ser usado
#device ADC=10 // numero de bits do conversor AD - max de 10 bits e min de 8 bits
#use delay(clock=20000000) // informa qual e a frequencia do cristal que esta sendo utilizado
#fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP
//*******************************************************************************************************************
//
Programa principal
//*******************************************************************************************************************
void main()
{
long ValorAd;
setup_adc_ports(RA0_ANALOG); // PORT A0 Analogica
setup_adc(ADC_CLOCK_INTERNAL);//seleciona o clock interno para o conversor AD
port_b_pullups(true); // ativa os pullups do PORT B
setup_timer_2 (T2_DIV_BY_1, 255, 1); // timer 2 = 19,53 KHz
setup_ccp1(CCP_PWM);// habilita o PWM 1 a operar
set_pwm1_duty(0);// coloca a saida de pwm 1 com o ciclo em 0%
while (true)
{
set_adc_channel(0); // indica qual canal ad sera lido
delay_us(20);// aguarda os capacitores internos se carregarem
ValorAd = read_adc(); // realiza a Leitura do canal selecionado
set_pwm1_duty(ValorAd);
delay_ms(10);
}// while
}// void main
//*******************************************************************************************************************
//
FIM do Programa principal
//*******************************************************************************************************************
Figura 9. Circuito de teste da Ponte H com Rels sem motor somente com Leds.