TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: j_fernandez en 09 de Febrero de 2006, 09:28:00

Título: Duty Cicle del PWM
Publicado por: j_fernandez en 09 de Febrero de 2006, 09:28:00
Hola a tod@s!!! Tras configurar el pwm mediante el wizard de CCS veo que pone que el duty cicle va entre 0 y 40, sin embargo no corresponde a la señal que tengo en la calida, a que se debe? como se entre que valores va el ciclo de trabajo?
 
Gracias y un saludo
Título: RE: Duty Cicle del PWM
Publicado por: migsantiago en 09 de Febrero de 2006, 16:13:00
La resolución que tu PWM en un PIC depende de la fórmula:



Sustituye los valores que tú uses.
Título: RE: Duty Cicle del PWM
Publicado por: j_fernandez en 10 de Febrero de 2006, 01:24:00
ok! Gracias por contestar a mi pregunta, pero no acabo de entender el funcionamiento, sun tu formula en el caso que tu as puesto sale 7.39 bits, por lo que el la variable del ciclo de trabajo que va de 0 a 167? (2^7.39)

Gracias de nuevo y un saludo a tod@s!! Buen fin de semana
Título: RE: Duty Cicle del PWM
Publicado por: Nocturno en 10 de Febrero de 2006, 10:55:00
Es que los bits no se pueden "trocear". Para representar esa horquilla necesitarás mínimo de 8 bits, aunque algunas combinaciones de esos 8 bits no las usarás nunca.
Título: RE: Duty Cicle del PWM
Publicado por: migsantiago en 10 de Febrero de 2006, 18:17:00
Según yo veo se redondea a 7bits, entonces solo puedes usar 2^7=128. Nocturno, corrígeme si estoy mal por favor. Sonrisa
Título: RE: Duty Cicle del PWM
Publicado por: Nocturno en 10 de Febrero de 2006, 18:22:00
Si no hay nada que corregir, efectivamente 2^7=128.

Aunque ahora que releo el mensaje, no tengo claro qué es lo que pide j_fernandez.
Título: RE: Duty Cicle del PWM
Publicado por: grouchy en 13 de Febrero de 2006, 19:50:00
Hola :-/

La resolucion del pwm, se refiere al numero de bits necesarios para poder manipular el duty cycle del 0-100%, ahora, a pesar del resultado q te dio de 7.39 , eso quiere decir que forzosamente necesitas un numero de al menos 8 bits para manipular el duty cycle. Ahora bien para sacar el duty cycle ( de la mayoria de microcontroladores de microchip) tenemos:

PWM duty cycle=(CCPR1L:CCP1CON<5:4> ) *Tosc*(Valor del preescalador del TMR2)

Por ejemplo para los pic16Fxxx y 18F4xx el duty cycle del pwm puede manipularse con 10 bits (CCPR1L:CCP1CON<5:4> ), sin embargo tu solo requieres  de 8 bits.

Dejame darte un ejemplo de como calcular el valor maximo para poder manipular el ciclo de trabajo del PWM.

Fosc = 20MHz;
FPWM=120Khz;
Prescalador del Tmr2=1;

Suponiendo que requieres trabajar del 0- 100 % del ciclo de  trabajo, entonces el duty cycle tendra valores entre 0- (1/120KHz), pasando de frecuencia a tiempo tenemos---->(0 seg. ---8.3333 microseg.),

PWM duty cycle=(Valor_máx) *Tosc*(Valor del preescalador del TMR2)

8.3333 us=(Valor_max)*(1/20Mhz)*(1)

despejando  Valor_max tenemos

Valor_max=8.3333 us/(50 ns)=166.6667

pero Valor_max debe ser un numero entero, entonces Valor_max=167.

Entonces el maximo valor que puedes enviar al duty cyle es 167:
set_pwm1_duty(167); // 100%
set_pwm1_duty(0);     //   0%

Espero haberme explicado bien, sino por aqui estaremos nuevamente.......SALUDOS
Título: RE: Duty Cicle del PWM
Publicado por: j_fernandez en 21 de Febrero de 2006, 05:56:00
ok!! Muxas gracias a todos!!! Lo probaré y os mantendré informados.

Un saludo