Hola muy buenas noches saludos desde colombia...
Bueno actualmente ando trabajando en el diseño de un inversor resonante de puente completo monofasico, la etapa de potecia esta conformado por IGBT de switching fast..
El proyecto consiste en poder variar tanto el ciclo de trabajo como la frecuencia de pwm del puente H. Para comenzar arranque generando una frecuencia fija y un ciclo de trabajo fijo en la parte de control. Ando trabajando con el PIC18F4550 el cual le ando utilizando P1A y el P1B para generar las dos señales de control complementaria.. mi primer inconveniente es que no he podido generar los tiempos muertos entre cada rama del puente H.. Algunos de ud tiene alguna idea... he mirado la hoja de datos del PIC pagina 160 pero no entiendo como generar ese tiempo muerto... Anexo el codigo que llevo hasta el momento.
#include <18F4550.h>
#fuses INTRC_IO,PUT,NOWDT,NOPROTECT,NOLVP,BROWNOUT,MCLR
#use delay(clock=8000000)
void main()
{
setup_ccp1(CCP_PWM_HALF_BRIDGE | CCP_PWM_H_H);
setup_timer_2(T2_DIV_BY_1, 255, 1);
set_pwm1_duty(124); // 25% duty cycle
while(1);
}
Bueno actualmente ando trabajando en el diseño de un inversor resonante de puente completo monofasico, la etapa de potecia esta conformado por IGBT de switching fast..
El proyecto consiste en poder variar tanto el ciclo de trabajo como la frecuencia de pwm del puente H. Para comenzar arranque generando una frecuencia fija y un ciclo de trabajo fijo en la parte de control. Ando trabajando con el PIC18F4550 el cual le ando utilizando P1A y el P1B para generar las dos señales de control complementaria.. mi primer inconveniente es que no he podido generar los tiempos muertos entre cada rama del puente H.. Algunos de ud tiene alguna idea... he mirado la hoja de datos del PIC pagina 160 pero no entiendo como generar ese tiempo muerto... Anexo el codigo que llevo hasta el momento.
#include <18F4550.h>
#fuses INTRC_IO,PUT,NOWDT,NOPROTECT,NOLVP,BROWNOUT,MCLR
#use delay(clock=8000000)
void main()
{
setup_ccp1(CCP_PWM_HALF_BRIDGE | CCP_PWM_H_H);
setup_timer_2(T2_DIV_BY_1, 255, 1);
set_pwm1_duty(124); // 25% duty cycle
while(1);
}