por Pask » 03 Jan 2010 18:25
Amigos, fiz o módulo PWM do PIC 16F876 funcionar para gerar um sinal de 1,22 kHz com ciclo ativo de 20% sem problemas. Este PIC possui 2 módulos PWM com saídas pelos pinos C1 e C2.
Agora estou com um pequeno probleminha: os sinais retangulares que saem pelos pinos C1 e C2 são em fase, ou seja, não tem defasagem entre si. Eu gostaria que houvesse uma defasagem de 180º entre um sinal e outro.
O código, em linguagem C, para geração deste sinal é o seguinte:
setup_timer_2(t2_div_by_16,50,1); //timer2 configurado (prescaler 1:16,PR2=50 e postcaler 1:1)
set_timer2(0); //timer 2 inicializado com zero
setup_ccp1(ccp_pwm); //módulo CCP1 ativado no modo PWM
setup_ccp2(ccp_pwm); //módulo CCP2 ativado no modo PWM dt=41; //valor do duty-cicle aplicado aos registradores do módulo PWM
set_pwm1_duty(dt);
set_pwm2_duty(dt);
}
//Ajusta forma de onda para duty-cicle de 20%
//819,7us = 100% => Um duty-cicle de 20% = 819,7*20% = 164us
//Qual o valor de CCPRL:CCPCON para se atingir esse duty-cicle?
//PWMciclo ativo = Tp * (CCPRL:CCPCON) => 164us = 4,018us * (CCPRL:CCPCON)
//Portanto, CCPRL:CCPCON = 41 (valor da variável dt acima.)
//---------------------------------------------------------------------------------
Espero que seja possível entendê-lo....rsrsrsrs. Está bem comentado!
Se alguém puder me dar uma idéia de como defasar esses sinais de 180° para que não haja coincidência entre seus níveis altos, eu agradeceria muito.
P.S: Eu gostaria que essa defasagem fosse conseguida via programação e não através de componentes adicionais externos ao PIC.
Quero usar esses sinais para acionar um par de transistores em configuração (push-pull) e, como vocês sabem, ambos os transistores não podem conduzir ao mesmo tempo senão ficam em curto-circuito.
Obrigado.
Pask.