Sie sind auf Seite 1von 12

Fundamentos e Programao Bsica de Microcontroladores PIC

MDULO 5

Prof. Msc. Tcio Luiz de Souza Barbeiro

Contedo
s s s s s s s s s

Mdulo Compare, Capture, PWM Pulse Width Modulation (PWM) PWM Caractersticas Comandos Capture, Compare, PWM PWM Aplicaes Comandos - Capture, Compare, PWM Freqncia do PWM Circuitos Exemplos Programa Exemplo

Mdulo Capture, Compare, PWM


s s s s s s s s s s s

2 Mdulos Capture, Compare, PWM (16F877); CPP1 e CPP2 (2 canais); Registrador Capture de 16 bits; Registrador Compare de 16 bits; Registrador PWM de 10 bits; CPPR1L: Registrador de 8 bits menos significativos (canal 1); CPPR1H: Registrador de 8 bits mais significativos (canal 1); CPPR2L: Registrador de 8 bits menos significativos (canal 2); CPPR2H: Registrador de 8 bits mais significativos (canal 2); CPP1CON: Registrador de controle do mdulo 1; CPP2CON: Registrador de controle do mdulo 2;

Pulse Width Modulation (PWM)


s

Modulao por Largura de Pulso:

Da forma de onda, facilmente deduzido que o valor mdio VM (rea total da forma de onda) dado por: T VM V ON V T Sendo =TON/T o duty-cycle.

PWM - Caractersticas
s

Observa-se ento, que o valor mdio pode ser alterado atuando-se em TON, em T ou em ambos. Atuando-se sobre T , com TON fixo, tem-se a estratgia de controle de VM designada por modulao de freqncia dos pulsos (do ingls, PFM). Porm, atuando-se sobre TON com T fixo (freqncia fixa), tem-se a estratgia designada modulao por largura de pulso (do ingls, PWM). Considerando-se que a implementao de uma chave eletrnica feita com dispositivos semicondutores (tiristores ou transistores), a transio do estado conduzindo para o estado no-conduzindo (e vice-versa) no instantnea, de modo que cada etapa de transio caracteriza uma perda de potncia por dissipao no prprio dispositivo. Neste caso, fica claro que a estratgia PFM implicar globalmente em maior dissipao de potncia de chaveamento para abranger uma grande variao de VM. J com a estratgia PWM, toda gama de valores de VM pode ser conseguida com uma nica e determinada quantidade de potncia dissipada em transies, definida pela freqncia do PWM.

As perdas relacionadas com os semicondutores em estado de conduo sero substancialmente as mesmas. Logo pelas razes aqui mencionadas, a estratgia PWM se mostra superior PFM.

PWM - Aplicaes
s

Controle de potncia em cargas CC: Controle de Brilho de um LED; Controle de Velocidade de um Motor CC; Controle de um tenso analgica CC (D/A); Controle de potncia em cargas CA com a utilizao de tiristores: Controle de Velocidade de um Motor CA; Controle de temperatura; Controle do valor RMS tenso analgica CA; Exemplo:

Conversor CC-CC (Chopper)

Comandos - Capture, Compare, PWM


s

SETUP_CCPX(): Configura o funcionamento do watchdog. Sintaxe: setup_ccp1( modo ) setup_ccp2( modo ) Modos (varivel ou constante inteira de 8 bits): CCP_OFF: mdulo CCP desligado; CCP_PWM: configura o modo de gerao de sinal PWM; Exemplo: setup_ccp1(CCP_PWM) SET_PWMX_DUTY(): Configura o ciclo ativo do mdulo CCP no modo PWM. Sintaxe: set_pwm1_duty ( valor ) set_pwm2_duty ( valor ) valor uma varivel ou constante inteira de 8 ou 16 bits Exemplo: set_pwm1_duty(100);

Freqncia do PWM
s s

Freqncia definida pelo Timer 2 SETUP_TIMER2(): Configura o Timer 2. Sintaxe: setup_timer_2( modo , per , os ) - modo uma varivel ou constante inteira de 8 bits; - per uma varivel inteira de 8 bits; - ps um nmero entre 1 e 16; modos: T2_DISABLE: desliga o timer 2; T2_DIV_BY_1: timer 2 ligado com prescaler dividindo por 1; T2_DIV_BY_4: timer 2 ligado com prescaler dividindo por 4; T2_DIV_BY_16: timer 2 ligado com prescaler dividindo por 16; O parmetro per utilizado para especificar um perodo de contagem para o timer 2. A contagem do temporizador inicia em 0 e cada vez que ele chegar a uma contagem igual ao valor de per, o temporizador ser reiniciado. O parmetro os utilizado para especificar um valor para o ps-divisor do timer 2. O nmero programado em ps ser igual ao nmero de reincios do timer 2 necessrios para gerar uma interrupo (TMR2IF). Exemplo: setup_timer_2( T1_DIV_BY_1, 100 , 1);

Circuitos Exemplos
Controle de Brilho de um LED: Controle de Velocidade de um Motor CC:

Programa Exemplo
#include <16f877A.h> #use delay(clock=4000000) #fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP #include <mod_lcd.c> // Biblioteca de Funes do LCD // Definio de Variveis int tcl; long int ciclo; boolean tecla_pres; // Subrotina de verificao de tecla pressionada int varre_teclas (void) { if (!input(pin_a0)) return(1); // verifica a tecla S1 if (!input(pin_a1)) return(2); // verifica a tecla S2 // se nenhuma tecla est pressionada, desliga o flag // tecla_pres e retorna o valor 0 tecla_pres = 0; return (0); }

Programa Exemplo
// Rotina principal de verificao do teclado // Verifica se uma nova tecla e filtra rudo int teclas (void) { int t; t = varre_teclas(); // verifica se h tecla if ((t) && (!tecla_pres)) // se h tecla e o flag est apagado { tecla_pres = 1; // ativa o flag if (t != tcl) // se a tecla atual diferente da tecla anterior { // filtra o ruido de contato delay_ms (50); // aguarda 50ms // l novamente as tecla e verifica // se a mesma tecla ainda est pressionada // caso positivo, retorna a tecla if (varre_teclas() == t) return (t); } } return (0); // se no h tecla, retorna 0 }

Programa Exemplo
// Progama Principal void main() { lcd_ini(); // inicializa o lcd tcl = 0; // limpa a tecla atual tecla_pres = 0; // desliga o flag de tecla pressionada ciclo=0; setup_timer_2 (T2_DIV_BY_4, 248, 1); // timer 2 = 1,004 khz setup_ccp1 (ccp_pwm); // configura CCP1 para modo PWM set_pwm1_duty ( 0 ); // configura o ciclo ativo em 0 (desligado) while (true) { lcd_escreve ('\f'); // apaga o display lcd_pos_xy(1,1); printf (lcd_escreve,"Teste PWM"); lcd_pos_xy(1,2); printf (lcd_escreve,"Ciclo ativo=%lu",ciclo); tcl = teclas(); if (tecla_pres) { // verifica se h tecla pressionada if (tcl == 1) { ciclo = ciclo + 10; // incrementa em 10x a variel cilco } if (tcl == 2) { ciclo = ciclo - 10; // decrementa em 10x a variel cilco } } if (ciclo>1023) ciclo = 1023; // Limita a varivel ciclo em 1023 (10 bits) set_pwm1_duty (ciclo); // configura o ciclo ativo delay_ms(100); } }