Autor Tema: Problemas con el PWM  (Leído 4878 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado edutd

  • PIC10
  • *
  • Mensajes: 27
Problemas con el PWM
« en: 10 de Abril de 2006, 08:09:10 »
Hola, estoy intentando configurar el módulo ECCP en modo Half-bridge, estoy siguiendo el Data Sheet pero no me aclaro, llevo hechas ya 1000 pruebas y nada..., tengo el código para PWM normal:

TRISC = 0X00;
OpenTimer2( TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);
pr = 24;    //200 KHZ a 100 KHZ
dc = 50;
while (pr <=49)         
   {   
                                OpenPWM1(pr);
      SetDCPWM1(dc);
      pr=pr+1;
      dc =dc+2;
   }

¿¿ Alguien sabe que modificaciones debo hacer o tiene algun ejemplo para ver como se utiliza ??, llevo ya una semana y media probando y buscando no encuentro nada  :? , estoy utilizando un pic 18F4550 .

Muchas gracias por la ayuda, un saludo.



adbensi

  • Visitante
Re: Problemas con el PWM
« Respuesta #1 en: 10 de Abril de 2006, 08:41:27 »
Hola!

 nocturno66 revelou que as funções para PWM estão no cabeçalho do arquivo 18F452.H

 Estou utilizando o mesmo PIC 18F4550, e seguindo o manual também não consegui usar PWM, chegando em casa vou tentar implementar com os conselhos do nocturno66

 Veja a mensagem na integra:
 http://www.todopic.com.ar/foros/index.php?topic=11414.0

 Qualquer novidade, posta pra gente :)
Abraços,
Alexandre.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problemas con el PWM
« Respuesta #2 en: 10 de Abril de 2006, 10:13:16 »
Hola, estoy intentando configurar el módulo ECCP en modo Half-bridge, estoy siguiendo el Data Sheet pero no me aclaro, llevo hechas ya 1000 pruebas y nada..., tengo el código para PWM normal:

TRISC = 0X00;
OpenTimer2( TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);
pr = 24;    //200 KHZ a 100 KHZ
dc = 50;
while (pr <=49)         
   {   
                                OpenPWM1(pr);
      SetDCPWM1(dc);
      pr=pr+1;
      dc =dc+2;
   }

¿¿ Alguien sabe que modificaciones debo hacer o tiene algun ejemplo para ver como se utiliza ??, llevo ya una semana y media probando y buscando no encuentro nada  :? , estoy utilizando un pic 18F4550 .

Muchas gracias por la ayuda, un saludo.




No entiendo bien tu código pero acaso quieres cambiar el PR2 constantemente?

No he usado el ECCP pero si el CCP y creo que salvo las diferentes salidas funcionan muy parecido. 

Observa que si cambias el PR2 todo el tiempo, no estarías logrando nada.  Al menos deja que termine alguna vez el ciclo el PWM.

Que es lo que quieres hacer con tu código exactamente?

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado edutd

  • PIC10
  • *
  • Mensajes: 27
Re: Problemas con el PWM
« Respuesta #3 en: 10 de Abril de 2006, 11:24:18 »
Mira te explico, quiero conseguir dos señales inversas pero que no conmuten a la vez, tiene que haber un pequeño tiempo de conmutación, y eso se consigue con el ECCP, a ver si con este dibujo lo aclaro.

El tema de variar el PR2 es para ir variando la frecuencia de la señal, de manera que varíe de 200 khz a 100khz, pondré un Delay dentro del while para que este funcionando un pequeño tiempo en cada frecuencia, probablemente este cometiendo algún error, si es así me corriges.

Respecto al tema del ECCP, mirando el Data Sheet parece que hay que modificar el CCP1CON para que funcione en Half-bridge , y para el pequeño tiempo de espera al inicio de las señales hay que utilizar el ECCP1DEL, pero yo he estado probando y no he logrado nada.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problemas con el PWM
« Respuesta #4 en: 10 de Abril de 2006, 11:35:26 »
Mira te explico, quiero conseguir dos señales inversas pero que no conmuten a la vez, tiene que haber un pequeño tiempo de conmutación, y eso se consigue con el ECCP, a ver si con este dibujo lo aclaro.

El tema de variar el PR2 es para ir variando la frecuencia de la señal, de manera que varíe de 200 khz a 100khz, pondré un Delay dentro del while para que este funcionando un pequeño tiempo en cada frecuencia, probablemente este cometiendo algún error, si es así me corriges.

Respecto al tema del ECCP, mirando el Data Sheet parece que hay que modificar el CCP1CON para que funcione en Half-bridge , y para el pequeño tiempo de espera al inicio de las señales hay que utilizar el ECCP1DEL, pero yo he estado probando y no he logrado nada.


Yo que tu iría probando por partes.  Primero haría funcionar bien el PWM, después vería de hacer funcionar el ECCP en Halfbridge.

Lo del delay es novedoso para mi, pero si hay que cambiar un registro, de seguro en C tienes una función para realizarlo.

Respecto al bucle de código, sí, debes poner un delay en el bucle porque sino, estarías cambiando todo el tiempo del PR2 y puede pasar cualquier cosa menos una onda estable.

Otra cuestión, la función open timer, configura el time2 o también lo arranca?  Si no arranca el timer2 no tendrás pwm funcionando :)

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problemas con el PWM
« Respuesta #5 en: 10 de Abril de 2006, 11:36:03 »
No entiendo porqué haces un bucle; en teoría el PWM sale andando con sólo configurarlo.

Para hacer el delay entre el flanco de bajada del pin A y el de subida del pin B, y viceversa, debes habilitar los 7 bits más bajos del registro ECCP1DEL, lo que provocará un retardo de:
Delay = 4 * Tosc * (ECCP1DEL <6:0>)

Este registro se encuentra en la posición de memoria: FB7h

Desconectado edutd

  • PIC10
  • *
  • Mensajes: 27
Re: Problemas con el PWM
« Respuesta #6 en: 10 de Abril de 2006, 13:13:25 »
El PWM consigo que funcione, el bucle es para que la señal del PWM comience funcionando en 200 khz (PR2 = 24) y vaya variando a medida que varía el PR2 hasta los 100 khz (PR2 = 49), ya he incluido un delay dentro del bucle para que este un pequeño tiempo en cada valor del PR2, esto funciona bien.

La idea en esta primera parte es encender un balastro con un inversor de puente completo, entonces claro, necesito un pequeño delay al inicio de las señales para evitar problemas en la conmutación, y ahi es donde tengo el problema.

Nocturno66 esa fórmula la vi en el Data Sheet, he calculado el ECCP1DEL y escribi el siguiente codigo pensando que seria sufuciente:

TRISC = 0X00;
TRISD = 0x00;
OpenTimer2( TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);
CCP1CON = 0XAC;
ECCP1DEL = 0x02;
pr = 24;  //200 KHZ a 100 KHZ
dc = 50;
while (pr <=49)         
   {   
        OpenPWM1(pr);
      SetDCPWM1(dc);
      Delay10TCYx(10);
      pr=pr+1;
      dc =dc+2;
   }

Con la instrucción CCP1CON = 0xAC, lo que pretendo es habilitar el modo Half-bridge ( CCP1CON <7:6> = 10 ), y P1A, P1B como active-high.

Con la instrucción ECCP1DEL = 0x02, simplemente introducir el valor obtenido en la formula,en este caso 2 puesto que el tiempo de espera es muy pequeño (0,5 microsegundos).

La cosa es que no consigo nada, el pin RC2 sigue funcionando como si estas instrucciones no estarian, y por el pin RD5 que deberia de P1B no sale nada, ¿cual puede ser el problema?, he intentado buscar un ejemplo en internet para ver como funciona pero no he coseguido encontrar nada.

Gracias por la ayuda, me viene muy bien porque acabo de empezar en el mundo de los pic, un saludo.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problemas con el PWM
« Respuesta #7 en: 10 de Abril de 2006, 15:14:44 »
La cosa es que no consigo nada, el pin RC2 sigue funcionando como si estas instrucciones no estarian, y por el pin RD5 que deberia de P1B no sale nada, ¿cual puede ser el problema?, he intentado buscar un ejemplo en internet para ver como funciona pero no he coseguido encontrar nada.

Gracias por la ayuda, me viene muy bien porque acabo de empezar en el mundo de los pic, un saludo.

El Paralell Slave Port está activado? Fijate que si lo tienes activado lo debieras desactivar.  Tal vez ahí este el inconveniente con el pin RD5.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado edutd

  • PIC10
  • *
  • Mensajes: 27
Re: Problemas con el PWM
« Respuesta #8 en: 10 de Abril de 2006, 22:14:27 »
Problema solucionado   :D :D.

Cometia varios errores, teniais razon en que no era necesario inicializar en cada pasada del bucle el PWM, gran error..., otro error era configurar el CCP1CON y ECCP1DEL antes de inicializar el PWM.

Bueno aqui dejo el código por si a alguien le interesa :

TRISC = 0X00;
TRISD = 0x00;
PORTC = 0X00;
PORTD = 0x00;
I = 1;
PR2 = 24;
CCPR1L = 50;
OpenTimer2( TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);
OpenPWM1(24);
SetDCPWM1(50);
CCP1CON = 0xAC;
ECCP1DEL = 0x02;
while (PR2 <=49)
   {
      Delay10TCYx(10);
      PR2 = PR2+1;
      if (I == 2)
         {
            CCPR1L = CCPR1L+1;
            I = 0;
         }
      I = I+1;
   }

Aqui configuro el módulo ECCP en modo Half-bridge para hacer funcionar el PWM para generar dos señales, P1A (RC2) y P1B (RD5) que son dos señales inversas con un tiempo de conmutación de 0,5 microsegundos y que varian en frecuencia de 200 a 100 khz, Duty Cycle del 50 % ( esta claro que no exactamente, puesto que hay que restarle cuando esta alto los 0,5 microsegundos que le quitamos para la conmutación).

Bueno a seguir avanzando, espero que no surgan muchos problemas.

Gracias por la ayuda, un saludo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problemas con el PWM
« Respuesta #9 en: 11 de Abril de 2006, 01:48:55 »
Felicidades