Ayuda con PWM
2 participantes
Página 1 de 1.
Ayuda con PWM
Deseo realizar un sintetizador PWM que entregue una señal senoidal. La idea es atacar con esa señal una etapa de potencia para un inversor CC/CA.
Las caracteristicas que deseo son:
Frecuencia de muestreo del PWM = 12800 Hz.
Frecuencia de la señal senoidal final = 50 Hz.
De lo que se deduce que tendre 256 muestras por ciclo, (256 * 50 = 12800)
En principio deseo utilizar el PIC18F4523, pero no es critico.
El problema es que en programacion estoy pez y no soy capaz de sacar eso. ¿Alguien me ayuda?.
Gracias anticipadas.
Saludos.
Las caracteristicas que deseo son:
Frecuencia de muestreo del PWM = 12800 Hz.
Frecuencia de la señal senoidal final = 50 Hz.
De lo que se deduce que tendre 256 muestras por ciclo, (256 * 50 = 12800)
En principio deseo utilizar el PIC18F4523, pero no es critico.
El problema es que en programacion estoy pez y no soy capaz de sacar eso. ¿Alguien me ayuda?.
Gracias anticipadas.
Saludos.
AcoranTf- Participante Activo
- Mensajes : 44
Fecha de inscripción : 10/11/2009
Re: Ayuda con PWM
Hola, si entiendo bién quieres generar la señal mediante software?, El hardware que tienen algunos PIC permite generar una señal cuadrada, pero no se de alguno senoidal. El problema de generarlo por software son las operaciones matemáticas que tendria que realizar el pic lo que puede llevar mucho tiempo e impedir que el pic haga otra cosa. Pero la razón principal es que la salida seria una señal digital. la mejor forma es con un oscilador y aplicar algún filtrado.
carlostex- Participante
- Mensajes : 19
Fecha de inscripción : 30/10/2010
Re: Ayuda con PWM
Hola Carlostex y gracias por responder.
Lo que quiero es utilizar el modulo PWM del PIC, por eso entre otras cosas elegi el PIC18F4523. Efectivamente se generara una onda "cuadrada", pero de ciclo util variable y es esa caracteristica la que hace que la salida se comporte como si realmente fuese senoidal. Esto es asi porque al integrar las distintas muestras con su correspondiente ciclo util, o duty cicle, el resultado es una semisenoide, (mas abajo explico como no es posible ver los semiciclos negativos). El filtrado se realiza despues del paso de potencia, ya que en caso contrario no tendria sentido hacerlo por PWM y bastaria un simple oscilador senoidal.
Resumiendo, lo que necesito es utlizando la funcion PWM del PIC, general una onda con frecuencia 12800 herzios y con un ciclo util que comenzaria en 0 e iria aumentando hasta 255, en pasos de 4. Seguidamente decreceria desde 255 hasta 0 igualmente en pasos de 4 y cada vez que se llegue a 0, se invertira una salida del PIC, esta se utiliza para indicar al hardware que se cambia de semiciclo y por tanto se conmutan los transistores que trabajan cada vez.
Si analizas lo anterior, veras que el hecho de saltar de 4 en 4 es tan simple como que un ciclo completo de la senoide, tiene 4 etapas: 1ª de 0 a maximo, 2ª de maximo a 0, 3ª de 0 a minimo y 4ª de minimo a 0, por ello y como quiero que cada ciclo de la senoide dure 256 ciclos de la frecuencia base, pero siempre llegando hasta el maximo, (5 V.) y al minimo, (-5 V.), es que lo hago de esta manera. Con ello se consigue una pseudosenoide de 50 Herzios a la salida del PWM, (solo se verian semiciclos positivos, los negativos son "discriminados" por la salida citada antes y que se conmuta en todo paso por 0, ya que el micro no puede trabajar con tensiones simetricas). Esto es facilmente verificable si se filtra debidamente dicha señal, para eliminar todo rastro de la frecuencia base de 12800 Hz.
Y en pocas palabras, necesito general una señal PWM de 12800 Hz. que sera modulada indefinidamente para obtener el ciclo util en cada momento por el contenido de un registro del PIC, que a su vez contiene un simple contador de 0 a 255 en saltos de 4. Esta funcion no debe ocupar mas que una parte no superior al 20 % del tiempo de procesador, ya que necesito el resto para otras rutinas de control y medida.
Espero haberlo explicado de forma inteligible, de todos modos si algo no entiendes, simplemente preguntame.
Saludos.
P.D.: Edito para comentar que estudiando el comportamiento del PIC18F4523 en cuanto al PWM se refiere, he visto que tiene un modo especificamente para controlar etapas de potencia en modo puente completo, ello significa que no necesitaria la salida adicional comentada antes para seleccionar los dos semiciclos, bastaria con utilizar dicho modo, con lo que el PIC acondiciona sus 4 salidas de PWM para excitar el puente completo.
Lo que quiero es utilizar el modulo PWM del PIC, por eso entre otras cosas elegi el PIC18F4523. Efectivamente se generara una onda "cuadrada", pero de ciclo util variable y es esa caracteristica la que hace que la salida se comporte como si realmente fuese senoidal. Esto es asi porque al integrar las distintas muestras con su correspondiente ciclo util, o duty cicle, el resultado es una semisenoide, (mas abajo explico como no es posible ver los semiciclos negativos). El filtrado se realiza despues del paso de potencia, ya que en caso contrario no tendria sentido hacerlo por PWM y bastaria un simple oscilador senoidal.
Resumiendo, lo que necesito es utlizando la funcion PWM del PIC, general una onda con frecuencia 12800 herzios y con un ciclo util que comenzaria en 0 e iria aumentando hasta 255, en pasos de 4. Seguidamente decreceria desde 255 hasta 0 igualmente en pasos de 4 y cada vez que se llegue a 0, se invertira una salida del PIC, esta se utiliza para indicar al hardware que se cambia de semiciclo y por tanto se conmutan los transistores que trabajan cada vez.
Si analizas lo anterior, veras que el hecho de saltar de 4 en 4 es tan simple como que un ciclo completo de la senoide, tiene 4 etapas: 1ª de 0 a maximo, 2ª de maximo a 0, 3ª de 0 a minimo y 4ª de minimo a 0, por ello y como quiero que cada ciclo de la senoide dure 256 ciclos de la frecuencia base, pero siempre llegando hasta el maximo, (5 V.) y al minimo, (-5 V.), es que lo hago de esta manera. Con ello se consigue una pseudosenoide de 50 Herzios a la salida del PWM, (solo se verian semiciclos positivos, los negativos son "discriminados" por la salida citada antes y que se conmuta en todo paso por 0, ya que el micro no puede trabajar con tensiones simetricas). Esto es facilmente verificable si se filtra debidamente dicha señal, para eliminar todo rastro de la frecuencia base de 12800 Hz.
Y en pocas palabras, necesito general una señal PWM de 12800 Hz. que sera modulada indefinidamente para obtener el ciclo util en cada momento por el contenido de un registro del PIC, que a su vez contiene un simple contador de 0 a 255 en saltos de 4. Esta funcion no debe ocupar mas que una parte no superior al 20 % del tiempo de procesador, ya que necesito el resto para otras rutinas de control y medida.
Espero haberlo explicado de forma inteligible, de todos modos si algo no entiendes, simplemente preguntame.
Saludos.
P.D.: Edito para comentar que estudiando el comportamiento del PIC18F4523 en cuanto al PWM se refiere, he visto que tiene un modo especificamente para controlar etapas de potencia en modo puente completo, ello significa que no necesitaria la salida adicional comentada antes para seleccionar los dos semiciclos, bastaria con utilizar dicho modo, con lo que el PIC acondiciona sus 4 salidas de PWM para excitar el puente completo.
AcoranTf- Participante Activo
- Mensajes : 44
Fecha de inscripción : 10/11/2009
Re: Ayuda con PWM
Entiendo, mira este post creo que es lo que nececitas:
Aquí
Por lo que leí, se puede cambiar el duty cicle es un periodo determinado, lo que te permitirá cambiar el valor con las interrupciones del reloj, por lo que vas a aprovechar mas el procesador, de hecho cambiar el ciclo requeriría de muy pocas instrucciones así que esa tarea hasta podrías considerarla despreciable.
Aquí
Por lo que leí, se puede cambiar el duty cicle es un periodo determinado, lo que te permitirá cambiar el valor con las interrupciones del reloj, por lo que vas a aprovechar mas el procesador, de hecho cambiar el ciclo requeriría de muy pocas instrucciones así que esa tarea hasta podrías considerarla despreciable.
carlostex- Participante
- Mensajes : 19
Fecha de inscripción : 30/10/2010
Re: Ayuda con PWM
Hace varias semanas estuve mirando precisamente ese articulo y no termine de entenderlo, pero como despues he estado estudiando un poco sobre el PIC, ahora me empieza a resultar mas comprensible.
En ese proyecto ha utilizado tan solo 20 muestras por ciclo y eso es muy poco para un buen resultado practico, pero eso no es el problema. Para mi lo dificil es calcular los valores momentaneos de los registros implicados y el mecanismo de las interrupciones para controlar la recarga de ellos, asi como relacionarlo todo con la frecuencia del reloj, (tendre que estudiarme a fondo las formulas). Pero volvere a repasar a fondo todo el articulo a ver si en esta ocasion, con mas info del PIC lo consigo.
Saludos.
En ese proyecto ha utilizado tan solo 20 muestras por ciclo y eso es muy poco para un buen resultado practico, pero eso no es el problema. Para mi lo dificil es calcular los valores momentaneos de los registros implicados y el mecanismo de las interrupciones para controlar la recarga de ellos, asi como relacionarlo todo con la frecuencia del reloj, (tendre que estudiarme a fondo las formulas). Pero volvere a repasar a fondo todo el articulo a ver si en esta ocasion, con mas info del PIC lo consigo.
Saludos.
AcoranTf- Participante Activo
- Mensajes : 44
Fecha de inscripción : 10/11/2009
Temas similares
» AYUDA CON RTOS
» Compilar un proyecto en Piklab con CCS [VIDEO]
» Compilador CCS con wine
» Ayuda con LCD LMG-162-STN
» master prog en linux??
» Compilar un proyecto en Piklab con CCS [VIDEO]
» Compilador CCS con wine
» Ayuda con LCD LMG-162-STN
» master prog en linux??
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.