Autor Tema: generar 3 señales pwm desfasadas 120 grados pic 184431  (Leído 3621 veces)

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

Desconectado diego20david

  • PIC10
  • *
  • Mensajes: 5
generar 3 señales pwm desfasadas 120 grados pic 184431
« en: 05 de Agosto de 2016, 14:13:31 »
estoy utilizando el pic18f4431, para generar señales pwm en el modo complementado, pero no logro que se desfasen 120 grados entre ellas, si alguien conoce sobre esta programacion en mikroC codigo C, o que registro es el que necesito configurar ,estaria muy agradecido,

las señeles deberian ser asi 120 grados de diferencia entre ella
             ________
            |               |
______|               |__________   fase A
                 ________
                |               |
________|               |__________   fase B

                     ________
                    |               |
__________|               |__________   fase C

ya el micro permite realizar las señales complementarias de las fases


int TABLAA[257] =
{480,479,479,479,480,481,481,481,480,479,479,479,
   480,   481,   481,   481,   480,   479,   479,   479,   480,   481,   481,   481,
   480,  479,   479,   479,   480,   481,   481,   481,   480,   479,   479,   479,
   480, 481,   481,   481,   480,   479,   479,   479,   480,   481,   481,   481,
   480,479,   479,   479,   480,   481,   481,   481,   480,   479,   479,   479,
   480,   481,   481,   481,   480,   479,   479,   479,   480,   481,   481,   481,
   480,   479,   479,   479,   480,   481,   481,   481,   480,   479,   479,   479,
   480,   481,   481,   481,   480,   479,   479,   479,   480,   481,   481,   481,
   480,   479,   479,   479,   480,   481,   481,   481,   480,   479,   479,   479,
   480,  481,   481,   481,   480,   479,   479,   479,   480,   481,   481,   481,
   480,   479,   479,   479,   480,   481,   481,   481,   480,   479,   479,   479,
   480,   481,   481,   481,   480,   479,   479,   479,   480,   481,   481,   481,
   480,   479,   479,   479,   480,   481,   481,   481,   480,   479,   479,   479,
   480,   481,   481,   481,   480,   479,   479,   479,   480,   481,   481,   481,
   480,   479,   479,   479,   480,   481,   481,   481,   480,   479,   479,   479,
   480,   481,   481,   481,   480,   479,   479,   479,   480,   481,   481,   481,
   480,   479,   479,   479,   480,   481,   481,   481,   480,   479,   479,   479,
   480,   481,   481,   481,   480,   479,   479,   479,   480,   481,   481,   481,
   480,   479,   479,   479,   480,   481,   481,   481,   480,   479,   479,   479,
   480,   481,   481,   481,   480,   479,   479,   479,   480,   481,   481,   481,
   480,   479,   479,   479,   480,   481,   481,   481,   480,   479,   479,   479,
   480,   481,   481,   481,
   };

   void pwm_config(void)
{
PTCON0=0b00000010;//countinuous UP/Down Count mode
PTCON1=0;
PWMCON0=0b01010000;
PWMCON1=0;
DTCON=0b01111111;

OVDCOND=255;
OVDCONS=255;

FLTCONFIG=0;
//Frequencia



PTPERL= 0xFF;  //0x1F4;
PTPERH=0;

}
void pwm_start(void)
{
PTCON1.PTEN=1;
}
void adc_config(void)
{
ADCON0=0b00010001;
ADCON1=0b00010000;
ADCON2=0b11000010;
ADCON3=0b11000000;
ADCHS=0b00000000;
ANSEL0=0b00000011;
ANSEL1=0b00000000;
}
void adc_start(void)
{
ADCON0.GO=1;
}
void main(void)
{
int y=0;
pwm_config();
pwm_start();
adc_config();
TRISA.TRISA0=1;
LATA.LATA0=1;
while(1)
{
while(PTCON1.PTDIR==1)
{}
PWMCON1.UDIS=0;
PDC0H=TABLAA[y]/256;
PDC0L=TABLAA[y];

PDC1H=TABLAA[y]/256;
PDC1L=TABLAA[y];

PDC2H=TABLAA[y]/256;
PDC2L=TABLAA[y];

PWMCON1.UDIS=0;
while(PTCON1.PTDIR==0)
{}
y++;
if(y==257){y=0;}
}
}

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:generar 3 señales pwm desfasadas 120 grados pic 184431
« Respuesta #1 en: 05 de Agosto de 2016, 15:19:39 »
Trata de mantenerte en un solo hilo, no es necesario abrir otro mas y creo que va en contra de las reglas ya que se trata del mismo "asunto", ahi te respondi en el anterior.

Desconectado fjld93

  • PIC10
  • *
  • Mensajes: 4
Re:generar 3 señales pwm desfasadas 120 grados pic 184431
« Respuesta #2 en: 14 de Agosto de 2016, 17:12:19 »
Yo tu utilizaría una interrupción por timer.
Configura el timer para que genere una interrupción luego de transcurrido el tiempo en el que la señal se haya desfasado 120 grados. por ejemplo, si tu frecuencia es de 50 Hz, tendrás un periodo de 20ms, necesitas una interrupción cuando haya transcurrido 20/3 ms, unos 667 us.

Luego, dentro de la interrupción, activas tu segunda señal pwm.

Debes hacer todo esto, sincronizado con tu primera señal, por lo que puedes activar el timer contador, inmediatamente luego de que se haya activado la primera señal pwm. Generalmente, los pics trabajan los pwm con Timer2/4/6, pero muchos tienen solo timer 2. suponiendo que usas sólo timer 2, puedes activar su interrupción (o verificar el estado de la bandera, aunque ésta, creo que lo hará menos precisa).

Dentro de la interrupcion del timer 2, activar el timer contador, por ejemplo timer 1, configurado para que su interrupción se active justamente pasados 667 us (al desfasarse 120 grados si tu señal es de 50 Hz), y después hacer todo lo que te dije más arriba.

Espero que haya ayudado. Saludos!

Desconectado DANI9405

  • PIC10
  • *
  • Mensajes: 1
Re:generar 3 señales pwm desfasadas 120 grados pic 184431
« Respuesta #3 en: 26 de Noviembre de 2016, 12:14:13 »
Hola quería saber si logro el desfase entre las señales?? y si fue asi porque lado lo logro? porque yo he intentado y no me ha dado. Gracias por la repsuesta

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:generar 3 señales pwm desfasadas 120 grados pic 184431
« Respuesta #4 en: 26 de Noviembre de 2016, 13:27:15 »
Hola quería saber si logro el desfase entre las señales?? y si fue asi porque lado lo logro? porque yo he intentado y no me ha dado. Gracias por la repsuesta

Te dirijo al otro post que hizo el usuario, con el mismo problema.

http://www.todopic.com.ar/foros/index.php?topic=46621.msg389658#msg389658


 

anything