Autor Tema: pwm con frecuencia fija (60HZ)variando solo el ciclo util(Duty cycle)  (Leído 21079 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado edos

  • PIC10
  • *
  • Mensajes: 2
Estoy realizando un inversor DC/AC controlado por PWM, necesito generar una PWM de varios pulsos pero que su frecuencia se mantenga constante (es decir a 60 HZ), me han dicho que se logra cargardo un valor en unos de los TIMER y se divide el ciclo util entre la cantidad de pulso que quiero, y el pic se encarga de calcular el valor del tiempo en alto y bajo que va a durar la señal. Soy nuevo en Lenguaje C y estoy trabajando con el CCS Compiler. El Pic que estoy usando es el 16f877. espero haberme explicado, si alguien pueda ayudarme le estare enormemente agradecido.

        Un Saludo a todos...

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: pwm con frecuencia fija (60HZ)variando solo el ciclo util(Duty cycle)
« Respuesta #1 en: 11 de Junio de 2008, 23:17:53 »
hola edos, bienvenido al foro, bueno, el programa depende de que tipo de inversor vayas a hacer, si es el inversor con pwm, necesitaras una señal de referencia(una onda senoidal) y la señal que vas a variar (onda triangular) estaonda triangular recortara la onda senoidal, los puntos donde convergan es lo que te va a dar el ancho de pulso, si es asi como lo quieres utilizar (cosa complicada, pero no imposible) vendra de un comparador, al adc obtendra el voltaje del comparador, el valor del adc t dara el ancho de pulso variable para excitar a tu puente H, claro, previamente aislado, y con una etapa excitadora de los mosfet, vaya, ya explique mucho y no se si me entiendas, lo que quiero preguntar, es que tipo de inversor quieres hacer, he estado trabajando en uno, pero no he tenido muho exito lamentablemente, me recomendaron un sg3527, checalo, a ver en que puedo ayudarte, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: pwm con frecuencia fija (60HZ)variando solo el ciclo util(Duty cycle)
« Respuesta #2 en: 12 de Junio de 2008, 00:00:51 »
Saludos edos, bienvenido al foro paisano!
Viejo una pwm de 60Hz la puedes generar usando interrupciones con el timer 1. Ese pic tiene un módulo generador de PWM pero no puede trabajar a esa frecuencia, se queda corto. Te recomiendo que uses el buscador del foro, de repente puedes encontrar algún ćodigo por allí que te sirva. En el "Microcursillo de C", que está ubicado en el subforo de C, encontrarás bastante información al respecto.
Puedes ir publicando tus avances en este hilo.
Ok nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: pwm con frecuencia fija (60HZ)variando solo el ciclo util(Duty cycle)
« Respuesta #3 en: 12 de Junio de 2008, 01:29:09 »
Que casualidad el usuario Neron también tiene un problema muy parecido al tuyo, además sois paisanos.

Escribe tu programa aquí y se intentará ayudarte.

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: pwm con frecuencia fija (60HZ)variando solo el ciclo util(Duty cycle)
« Respuesta #4 en: 12 de Junio de 2008, 01:30:17 »
La cosa parece epidemia, verdad pocher?  :D
Ok saludos, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado miltonmc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 305
Re: pwm con frecuencia fija (60HZ)variando solo el ciclo util(Duty cycle)
« Respuesta #5 en: 12 de Junio de 2008, 15:38:43 »
saludos a todos.
seria muy bueno que se desarrolle una rutina pwm a 60 hz para un inversor

Desconectado edos

  • PIC10
  • *
  • Mensajes: 2
Re: pwm con frecuencia fija (60HZ)variando solo el ciclo util(Duty cycle)
« Respuesta #6 en: 14 de Junio de 2008, 00:26:21 »
 
   Estoy usando un puente en H constituido con MOSFET canal N (IRF640).

    EL TIEMPO VIENE EXPRESADO POR:
     
    T= 4/FOSC*PRESCALER*VALOR DEL TIMER.

    PARA TIMER0 COMO ES DE 8 BIT
    COMO LA ONDA ES DE 60HZ. SU PERIODO ES DE 16.66ms.
    su ciclo util es la mitad del periodo 8.33ms    para un cristal de 20MHZ, y colocando el prescaler en 256
    el valor que se cargara en el timer0 es:
           timer0=8.33ms*20MHZ/4*256
           timer0=162. timer0 real= 255-162=93// Ya tengo el valor que se le cargara al timer0 para generar la frecuencia a 60 HZ fija.
         
   COMO EL TIMER1 ES DE 16 BIT.
    colocamos el prescaler en 1, lafrecuencia del cristal 20MHZ, y el tiempo en 8.33ms tenemos:
            TIMER1=8.33ms*20MHZ/4
            TIMER1=41650-65535= TIMER1real= 23885// YA TENGO EL VALOR DEL TIMER1 PARA QUE GENERA UN PERIODO DE 8.33ms.

         ahora bien mi problema es como hago para dividir el periodo del timer1  a travez del timer0.

         es decir cuando el timer0 termine de contar me genera la interrupcion lee el valor del timer1 y dependiendo del numero de pulso que yo elijo como hago para decir que ese es el periodo que va a durar la señal.

          esto es lo que tengo:
       
         #include "C:\Documents and Settings\edos\Escritorio\PWM a 60 HZ.h"

#define output_b(PIN_RB4);
#define input(PIN_RB2);//TECLA QUE SE PULSA PARA INDICAR EL NUMERO DE PULSO.
#int_rtcc
RB_isr()
{
delay_ms(3);//rebote
output_high(PIN_RB4);
set_timer0(93);

}

void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   setup_timer_2(T2_DISABLED,0,1);
   enable_interrupts(int_rtcc);
   enable_interrupts(global);

// y de aqui en adelante no encuentro como jugar con los timer//

     espero haberme explicado. un saludo a todos...

Desconectado miltonmc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 305
Re: pwm con frecuencia fija (60HZ)variando solo el ciclo util(Duty cycle)
« Respuesta #7 en: 14 de Junio de 2008, 02:42:24 »
saludos a todos
la frecuencia de un inversor es de 120hz dividido en 2 que es igual a 60hz por fase y las 2 están desfasadas  en 180 grados cada una.
eso nos da una un tiempo de 16.66ms que es igual a 120hz que es también 360 grados.
ok los inversores usan varios tipos de onda.  cuasinenoidal, senoidal, y cuadrada.
en el caso de una con un pwm trabajando a 60hz y variando el ciclo de trabajo  subes o bajas el voltaje de salida del inversol. esa es una señal cuasisenoidal.
si solo usas una señal de 120hz cuadrada dividida en 2, 60hz mas 60hz desfasadas en 180 grados obtienes una salida cuadrada sin control ajuste de voltaje de salida.
si trabajas en una señal pwm con intervalos de salidas de diferentes ciclos de trabajos usando una sinutabla obtienes una salida senoidal lo cual es muy complejo en este caso.
si vas a usar un pic con un solo pwm el cual tiene que trabajar a 120hz. necesitas otra señal de 60hz cuadrada que se llama positivo negativo.
 la cual  se usa para dividir el pulso del pwm en 2. y esta sincronizada por el cruce por cero del pwm y se encarga de dividir las señal en 2 de  60hz y en 180 grados cada una.
si usas 2 pwm puedes usar el pwm solamente en 60hz cada uno periodo de 8.33ms . pero tienes que apagar uno y mientras el otro funciona y  mantener la secuencia.
bueno es mas fácil trabajar un inversor con pic por software que por hardware (pwm).



Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: pwm con frecuencia fija (60HZ)variando solo el ciclo util(Duty cycle)
« Respuesta #8 en: 14 de Junio de 2008, 12:05:03 »
hola, bueno aqui dejo un ejemplo de un inversor didactico, no es mas que un encendido y apagado de leds, sin usar interupciones, solamente con retardos, mi objetivo es solo presentar la idea, nada mas, y agregar que hay un pequeño tiempo de apagado de las dos salidas, para que no se conmuten los transistores al mismo tiempo, para que no haya un pequeño corto en los transistores

Código: [Seleccionar]
do{


if(input(pin_b1)){

output_low(led1);
delay_us(350);
output_high(led2);
delay_us(8333);
output_low(led2);
delay_us(350);
output_high(led1);
delay_us(8333);


}else{
output_low(led1);
delay_us(350);
output_high(led2);
delay_us(8000);
output_low(led2);
delay_us(350);
output_high(led1);
delay_us(8000);



}

cuando el pin b1 este a 1 sacara una frecuencia de 60 hz, y si es 0, sacara una frecuencia de 50 hz. espero sirva, aunque no se si es lo que esta pidiendo el amigo edos, aun no he entendido muy bien lo que desea, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: pwm con frecuencia fija (60HZ)variando solo el ciclo util(Duty cycle)
« Respuesta #9 en: 14 de Junio de 2008, 12:23:59 »
Si quieres que la frecuecia sea fija a 60Hz tienes que contar todo el período, 16.67ms...

Yo usaría el timer1 para contar ese período.
Lo configuras a preescala de 1:2, y lo cargas para contar 41675.
De esta forma: (20E6^-1)*4*2*41675 = 16.67ms...

Entonces tendrías que cargar el timer con el valor apropiado, y habilitar la interrupción...
En la subrutina de interrupción, tendrías que siempre colocar la señal a alto (el timer cuenta el fin del período, así que comenzaría un pulso nuevo) y cargar nuevamente el valor apropiado al timer para que cuente los 16.67ms.

Luego usaría el timer0 para temporizar el ancho del pulso (el timer2 iniciaría con la interrupción del timer1)... el único detalle es que no tendrás una variación de PWM al 100%, pues lo máximo que puede contar el timer0 es (20E6^-1)*4*256*256=13.1ms... lo cual representa un 78.62% del período... así serviría?

En ese caso pues dependiendo del ancho de pulso deseado se cargará un valor apropiado en el timer0, y se habilita interrupción.... cuando el timer0 interrumpa habrá que colocar la señal a bajo...

Y pues así podrías generar una PWM de período fijo bastante preciso....
Qué opinan?
Bueno espero sus comentarios...

Saludos, nos leemos! :mrgreen:   
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado miltonmc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 305
Re: pwm con frecuencia fija (60HZ)variando solo el ciclo util(Duty cycle)
« Respuesta #10 en: 14 de Junio de 2008, 14:52:05 »
saludos
en esta web hay uno que esta construido con un 16f84

http://www.technology.niagarac.on.ca/people/mcsele/i2k.htm


 

anything