Autor Tema: Problema PIC + L298  (Leído 6618 veces)

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

Desconectado ProteusFan

  • PIC10
  • *
  • Mensajes: 20
Re: Problema PIC + L298
« Respuesta #15 en: 20 de Abril de 2011, 22:39:12 »
Si tenes razón, le pifié al pasarlo al foro, en el programa lo tengo bien, pero es como si me tomara que siempre es horario...
el programa es asi

#include <16F819.h>   
#use delay(clock=4000000)
#fuses NOWDT,NOPROTECT,LP,XT
int flag;
void main(){
   set_tris_a (0x00) ;
   set_tris_b (0xFF) ;
   port_b_pullups(true);
   flag = 0;
   output_a (0);
   while(1){
   If ((input(PIN_B0) ==0) && ( flag == 0)){
   output_a(0b0101);
   delay_ms(100);
   flag++;
   }
       If ((input(PIN_B0) ==0) && ( flag == 1)){
       output_a(0b1001);
   delay_ms(100);
   flag++;
   }
      If ((input(PIN_B0) ==0) && ( flag == 2)){
   output_a(0b1010);
   delay_ms(100);
   flag++;
   }
      If ((input(PIN_B0) ==0) && ( flag == 3)){
   output_a(0b0110);
   delay_ms(100);
   flag = 0;
   }
      If ((input(PIN_B1) ==0) && ( flag == 0)){
   output_a(0b0101);
   delay_ms(50);
   flag++;
   }
      If ((input(PIN_B1) ==0) && ( flag == 1)){
   output_a(0b0110);
   delay_ms(50);
   flag++;
   }
      If ((input(PIN_B1) ==0) && ( flag == 2)){
   output_a(0b1010);
   delay_ms(50);
   flag++;
   }
      If ((input(PIN_B1) ==0) && ( flag == 3)){
   output_a(0b1001);
   delay_ms(50);
   flag = 0;
   }

   }
}


Bien rudo y sin muchas vueltas, total la rutina hace solo eso...

No se en que le estaré errando, no tengo en claro la rutina antihoraria como es...

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Problema PIC + L298
« Respuesta #16 en: 20 de Abril de 2011, 23:06:22 »
Pues mira, acabo de analizar tu código y creo ya vi el problema:

La instrucción input() sirve para asignarle el valor de un pin a una variable:

var = input(PIN_A0);

En cambio, la instrucción que tu necesitas es input_state(), que sirve para observar el estado de un pin:

if(input_state(PIN_A0)==0) output_high(PIN_A1);

por lo que creo que tu programa nunca esta evaluando el pulsador, simplemente actua con el valor que se le quedo y es el único sentido que toma, prueba modificando eso y me dices como te fue.
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado ProteusFan

  • PIC10
  • *
  • Mensajes: 20
Re: Problema PIC + L298
« Respuesta #17 en: 21 de Abril de 2011, 03:46:25 »
Probé con eso y sigue en lo mismo, para saber si me tomaba el otro pulsador, le puse una velocidad a uno y otra a otro. El pulsador lo toma, o sea que diferencia las entradas el programa. Lo que me queda solo de pensar es que la secuencia de 0 y 1 en las bobinas sea diferente para el sentido antihorario, pero no encuentro nada en internet...

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Problema PIC + L298
« Respuesta #18 en: 27 de Abril de 2011, 05:26:53 »
Probé con eso y sigue en lo mismo, para saber si me tomaba el otro pulsador, le puse una velocidad a uno y otra a otro. El pulsador lo toma, o sea que diferencia las entradas el programa. Lo que me queda solo de pensar es que la secuencia de 0 y 1 en las bobinas sea diferente para el sentido antihorario, pero no encuentro nada en internet...

Hola, perdón por no contestar, pero acabo de regresar de vacaciones, espero que hayas dado con la solución a tu problema, ya que a mi me llego a pasar que no estaba correcta la secuencia de pasos, y la única forma era reducir la velocidad jugar con todas las combinaciones. Saludos!
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Problema PIC + L298
« Respuesta #19 en: 29 de Abril de 2011, 13:00:57 »
Veras no conteste antes porque de C no se casi nada, pero es posible que el problema este enesas tablas que pones.
En los PAP tienes 4 cables si son bipolares y 5 o 6 si son unipolares, constan de dos bobinas, que estan en cruz, esto lo sabes con un tester, ya que los cables te daran continuidad dos a dos, si a los extremos de una bobina les llamas A Y C, y vamos a suponer que A es el punto de inicio, en un reloj las 12, la secuencia seria asi para movimiento entre bobinas (tambien se puede mover de bobina a bobina, es el mas sencillo, y con la combinacion de ambos es a medios pasos, son los tres movimientos mas comunes aunque existen mas) pues si lo quieres entre bobinas, sentido horario es asi:

A B C D
1 1 0 0
0 1 1 0
0 0 1 1
1 0 0 1

Y antihorario asi:

A B C D
1 0 0 1
0 0 1 1
0 1 1 0
1 1 0 0
 

Puedes usar una sola tabla y haces andar en sentido ascendente o descendente para el sentido contrario


Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Problema PIC + L298
« Respuesta #20 en: 29 de Abril de 2011, 13:07:27 »
Me acorde de esta pagina que explica todo esto bastante bien


http://perso.wanadoo.es/luis_ju/ebasica2/mpp_01.html


 

anything