Autor Tema: Problema control motor con PWM  (Leído 1676 veces)

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

Desconectado Mc_bimi

  • PIC10
  • *
  • Mensajes: 2
Problema control motor con PWM
« en: 16 de Noviembre de 2010, 07:11:40 »
Hola a todos,
Tengo un pequeño gran problema que me está volviendo loco. Quiero controlar un motor con la salida CCP1 y el PWM. El motor debe estar funcionando hasta que se pulsa un botón y para. El caso es que a veces me funciona y el motor para correctamente, y otras la salida se me queda a '1' constante y el motor gira a maxima velocidad.

Este es mi programa:

#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT 
#use delay(clock=8000000)              
#use standard_io(b)
#use standard_io(d)
#use standard_io(a)
#use standard_io(c)
#use standard_io(e)

#define BOTON   PIN_B1

void main (void)
{

enable_interrupts(GLOBAL);   /*Habilita interrupción global*/
enable_interrupts(INT_RTCC); /*Habilita interrupción del TIMERO*/
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);   
setup_timer_2(T2_DIV_BY_16,125,1);
setup_ccp1(CCP_PWM);

set_PWM1_duty(0);

while (BOTON)==0)
{   
set_pwm1_duty(125);             
}

set_pwm1_duty(0);

}

Que puede ser?? Alguna idea?
por favooorrr ayudaaaa!!! llevo ya bastantes días probando y no consigo dar con el problema!!!
Muchas gracias de antemano

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problema control motor con PWM
« Respuesta #1 en: 16 de Noviembre de 2010, 07:16:53 »
Esto no funciona en CCS tal y como has definido BOTON
while (BOTON)==0)

ya que lo has definido así
#define BOTON   PIN_B1


Prueba a definirlo así:
#define BOTON  input(PIN_B1)

Además, tal y como está tu programa, sólo se enterará de la pulsación del botón si estaba pulsado antes de ejecutarse, ya que de no estarlo sale del bucle y el programa finaliza.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Problema control motor con PWM
« Respuesta #2 en: 16 de Noviembre de 2010, 11:34:43 »
Ademas estan mal puestos los parentesis, fijate
while (BOTON)==0)

abris un parentesis y cerras dos.
saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Mc_bimi

  • PIC10
  • *
  • Mensajes: 2
Re: Problema control motor con PWM
« Respuesta #3 en: 18 de Noviembre de 2010, 04:38:49 »
Gracias por vuestras respuestas chic@s. Lo del paréntesis es un error que cometí al escribirlo aquí pero gracias de todas formas. Y la definición de BOTON ya lo cambié aunque seguí ocn el mismo problema.
Pero al final encontré la solución:

El caso era que al salir del bucle iba a otra instrucción que se llamaba 'sleep();' y debía permanecer asi hasta que pulsase otro botón.
while (ON==0)
{
          sleep();
}

y la salida CCP1 a veces se quedaba en '1' y a veces si que paraba.

Al final quité esa función y deje ese bucle vacío y ya me funciona.

Un saludo.
Mc_bimi

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: Problema control motor con PWM
« Respuesta #4 en: 18 de Noviembre de 2010, 09:12:21 »
Es que si envías al pic a Sleep(), si el pin no tiene asignada una interrupción, no despertara jamas, por eso no te funciona.
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.