Estimados muchos saludos,
Bueno tal como dice el titulo necesito ayuda con PWM
y bueno les comento que ya he visto suficientes post y blog con el mismo tema y he logrado entender como calcular los valores.
Requiero hacer el pwm para 20 Khz con un Ciclo de duty al 50% , con el pic18f4550 este pic emplea un crystal de 20 MHz, y lo programo con el pic c Compiler o CCS, . después de haberme nutrido de información he realizado los siguientes calculos:
Periodo de duración del PWM, PER_PWM= 1/20khz = 50uS
Tosc= 1/20Mhz = 50nS
PR2= 50us/(50nS*4*1)-1 = 249
Tiempo del ciclo Duty T_DC= 50uS/2 ( ya que es el 50%) = 25uS
PR2 del duty= 25us/(50nS*1)= 500
Estos valores que que calcule los he comprobado con el wizard de CCS y a lo que me da entender es que estoy bien
(en caso de que exista algún error me lo podrían indicar ya que estoy en pañales con esto.), por lo que procedí a programar el micro dándome como resultado las siguientes lineas de programación que se encuentran mas abajo. Para verificar los resultados he simulado con proteus 8.0 y me he percatado que los valores de periodo y frecuencia no eran los esperados, dandome como Periodo 7 mS y ciclo duty de 6mS, Les adjunto Imagen, y es aquí donde tengo mi problema ya que según el wizard y mis cálculos debería dar correcto el tiempo y la frecuencia. Que me pueden decir de esto. Saludos.
#include <18F4550.h>
#fuses HS,NOWDT,INTRC, NOPUT, NOPROTECT, NOLVP, NOMCLR, BROWNOUT
#use delay(clock=20000000)
void main(void)
{
output_low(PIN_C1); // Salida CCP1 a 0
setup_ccp1(CCP_PWM); // Configuro CCP1 as a PWM
setup_timer_2(T2_DIV_BY_1,249,1); //
while(1)
{
set_pwm1_duty(1000);
}
}
Bueno estimados espero poder llegar a buen puerto con esto ya que me interesa aprender de este metodo y poder aplicarlo a motores. Salu2