Autor Tema: DESFASAR PWM  (Leído 12037 veces)

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

Desconectado SIFLIGINIUS

  • PIC10
  • *
  • Mensajes: 6
DESFASAR PWM
« en: 19 de Febrero de 2008, 16:42:08 »
Hola a todos!
A ver si alguien me da una pista para solucionar mi problema:
Desde una entrada A/D en el puerto A controlo dos salidas PWM en el puerto C.
Cómo puedo desfasar una de la otra en 180º?
No se trata de invertir, no sirve ya que es PWM.
Las dos señales PWM deben ser iguales, sólo desfasadas y  el módulo ccp pwm no trae esa opción.
Me parece algo sencillo y práctico a la hora de controlar un inversor pero no se me ocurre cómo.
Agradecido de antemano
Saludos!

Desconectado Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: DESFASAR PWM
« Respuesta #1 en: 19 de Febrero de 2008, 18:38:34 »
Hola amigo !

De Niple no entiendo nada, pero la idea podría ser la siguiente ?
Si tienes definido el PWM, 1 ciclo del mismo serán 360º, mientras que 1/2 serán 180º

Si lograses a través del programa, hacer PWM/2 y luego se lo sumas algebraicamente (en tiempo, en delay) al PWM original, tendrías la señal desfasada 180º a cada instante.

Tal vez esté diciendo burradas, pero al menos quería aportarte ésa idea.

Espero puedas solucionar el problema.

Saludos
Mario

Desconectado SIFLIGINIUS

  • PIC10
  • *
  • Mensajes: 6
Re: DESFASAR PWM
« Respuesta #2 en: 20 de Febrero de 2008, 18:58:18 »
Gracias amigo, pero la verdad es que tiene que ser vía Niple.
En una de esas Canito puede tener algún tiempo y responderme.

Para aclarar más la cosa:
Actualmente vía Niple controlo dos compuertas Mosfet en un inversor push pull.
Cuando conduce uno el otro no conduce, eso se cumple a una frecuencia fija por ej en mi caso 50 c/s.
En los primeros 10 ms recibe la exitación la compuerta del mosfet 1 y conduce. en los siguientes 10 ms restantes (20ms período total para una frecuencia de 50cs) no conduce.
En el segundo mosfet en los primeros 10 ms no conduce, sí en los 10 ms restantes.

Con esto se cumple que para el caso de una onda cuadrada ambos conducen solo 180º pero desfasados en 180 es decir el primero conduce entre 0º y 180º y el segundo entre 180º y los 360º.

Ahora lo que necesito es regular el voltaje de salida para lo cual fácilmente lo puedo realizar variando el ancho del pulso por ej disminuirlo a 8 ms.Bueno, eso lo hago pero todas las veces tengo que grabar un nuevo hex y esa no es la gracia.

Vía pwm puedo obtener con un predivisor de 16 una frecuencia aproximada a los 60 c/s, esa me sirve para controlar el primer mosfet pero la segunda salida pwm debe estar al igual que el ejemplo anterior desfasada en 180º para que no conduzcan los dos al mismo tiempo y a su vez conduzcan exactamente la misma cantidad de tiempo.

Con eso tendría via el potenciómetro en la entrada A/D la regulación que necesito, pero cómo flautas se le dice al segundo módulo ccp que genere su onda desfasada en 180º con respecto a la del primero?

La respuesta debe estar en el Niple ....
Quedo atento y sumamente agradecido de cualquier respuesta sea o no positiva  para no seguir intentando algo que a lo mejor no se puede.
 

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: DESFASAR PWM
« Respuesta #3 en: 20 de Febrero de 2008, 19:22:44 »
Creo que te estas complicando de forma innecesaria. La mejor solución es realizar una inversión por hardware, con un simple transistor, puerta o lo que quieras. De estas formas las señales estarán perfectamente sincronizadas y la programación será sencilla.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado diego_z

  • PIC16
  • ***
  • Mensajes: 225
Re: DESFASAR PWM
« Respuesta #4 en: 20 de Febrero de 2008, 23:32:35 »
hola yo estoy haciendo algo parecido puedes hacer un contador con un temporizador intermedio, cuando contador incrementa el tiempo sube y viseversa

cuentame como te fue suerte!!!
« Última modificación: 20 de Febrero de 2008, 23:36:58 por diego_z »
,,,,option,,,,,,,,,,,explicit,,,,,,,

DR800 big a la venta ,solo argentina por privado

Desconectado SIFLIGINIUS

  • PIC10
  • *
  • Mensajes: 6
Re: DESFASAR PWM
« Respuesta #5 en: 21 de Febrero de 2008, 13:50:26 »
jfh 900:
Aquí no se trata de invertir es, desfasar!
Si la primera señal pwm por ej se modula al 75% el primer mosfet conducirá ese 75%
Si inviertes la segunda el otro mosfet conduciría sólo un 25% y eso no es desfasar!
 
diego z:
Acá yo uso un pic 16f873 y utilizo las ventajas propias de su máodulo ccp que genera el pwm,
como puede generar dos salidas pwm no entiendo como va a estar diseñado para que la segunda
sea igual a la primera y no tenga la opción de desfasarla para que sea algo útil.
Espero que la autoridad en la materia de Niple, Jorge Cano se pronuncie porque la gracia es
hacerlo a través de Niple.(Y creo que internamente un módulo ccp podría hacerlo).
También sé que existen circuitos desfasadores pero insisto, la idea es seguir vía Niple de lo contrario no tendría mucho sentido utilizarlo.

Gracias a todos por sus respuestas! actuales y futuras ..
Un saludo!


Desconectado diego_z

  • PIC16
  • ***
  • Mensajes: 225
Re: DESFASAR PWM
« Respuesta #6 en: 21 de Febrero de 2008, 22:12:25 »
fijate si te sirve esto modificalo a tu gusto

espero te sirva
,,,,option,,,,,,,,,,,explicit,,,,,,,

DR800 big a la venta ,solo argentina por privado

Desconectado Menta

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 611
Re: DESFASAR PWM
« Respuesta #7 en: 07 de Marzo de 2008, 17:33:28 »
El caso es que nipple te da varias funciones para programar un pic más facil que si programaras un plc. pero no cubre todo. Así que debes recurrir a armarte de ingenio. Eso se hace con los timer y las interrupciones, solo con eso. Como no uso nipple no te puedo resolver el problema, sólo darte mi opinión.

Coloca un timer de modo que se desborde e interrumpa cada 10ms dentro de la interrupción pon una variable tipo bit que se niege de modo que sea 0 y 1 (un pulso de reloj de 50Hz = 20ms)
y luego si la variable es cero pon a 1 el pin de salida que definas como pwm1 al tiempo que disparas un timer1 seteado en el valor para pwm1
si la variable es uno pon a 1 el pin de salida que definas como pwm2 al tiempo que disparas un timer2 seteado en el valor pwm2 = pwm1 en tu caso. Cuando timer1 se desborda pones a cero el pin de salida correspondiente y haces lo mismo cuando se desborda timer2 con su pin asociado.

Eso sí, demanda 3 timer, uno para cada pwm. los usas como si fuesen distintos pwm pero sincronizados por el timer principal...
     

Desconectado SIFLIGINIUS

  • PIC10
  • *
  • Mensajes: 6
Re: DESFASAR PWM
« Respuesta #8 en: 07 de Marzo de 2008, 21:07:02 »
Gracias Gerardo,
Finalmente solucioné mi problema, a puro Niple y mucha experimentación, solo con asignarle valores a los bits
y ponerle delays de acuerdo a registros variables y subrutinas simples de resta para poder mantener la frecuencia en el pwm.
Lo que tu me indicas me suena super interesante, tal vez encuentre algún ejemplo práctico en algún lado ya que nunca los he utilizado y da lata porque como que es otra parte fundamental del silabario!
Un Saludo!

Desconectado arielperez

  • PIC10
  • *
  • Mensajes: 10
Re: DESFASAR PWM
« Respuesta #9 en: 22 de Diciembre de 2008, 17:55:14 »
Hola. Tengo el mismo problema. Necesito desfasar dos señales PWM, de manera de que tengan el mismo porcentaje, y la segunda deberá dispararse cuando termina la primera. Si alguno logró algo con Niple y lo puede comprtir le voy a estar agradecido. Saludos. Ariel.

Desconectado jorgecano

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 230
Re: DESFASAR PWM
« Respuesta #10 en: 24 de Diciembre de 2008, 18:49:37 »
Hola a todos,

Nunca hice algo de esto, pero tal vez se podria probar con 2 registros de desplazamiento (1 registro por cada canal).
La entrada del registro de desplazamiento corresponde a la lectura del PWM a leer.
La salida del registro de desplazamiento corresponde a la salida del PWM desplazado en 360º.
La rotacion se realizaría mediante una interrupcion TMR que usa como base de tiempo un fraccion de tiempo de los 360º.

Utilizar un registro de desplazamiento es equivalente a memorizar el estado de las entradas en cada ciclo de rotación.

Nunca lo he probado.
Espero que sirva la idea.

Saludos
Jorge.


 

anything