saludos de vuelta por aca en el tema, he hecho esto:
/*-----------------------------------------------------------------------------------------------*/
/* Programa para manipulacion de un motor paso a paso usando el ULN2003 como */
/* driver; el angulo por paso se lo da en la definicioón de ciclos en el */
/* do-while; RA0 a RA3 salidas para el motor; pulsadores en RB0 y RB1 que */
/* definirán en que sentido girará el motor paso a paso */
/* Programado por Cryn 13/sep/2006 */
/*-----------------------------------------------------------------------------------------------*/
#include<16f84a.h>
#fuses XT,NOWDT,PUT,NOPROTECT
#use delay(clock=4000000)
int x=0;
void delay()
{
delay_ms(50); // retardo entre paso
}
void derecha() // giro a la derecha
{
x=0;
do // 4 pasos por ciclo; 50 ciclos, total pasos=50x4=200
{
output_bit(pin_a0,1);
output_bit(pin_a1,1);
output_bit(pin_a2,0);
output_bit(pin_a3,0);
delay();
output_bit(pin_a0,0);
output_bit(pin_a1,1);
output_bit(pin_a2,1);
output_bit(pin_a3,0);
delay();
output_bit(pin_a0,0);
output_bit(pin_a1,0);
output_bit(pin_a2,1);
output_bit(pin_a3,1);
delay();
output_bit(pin_a0,1);
output_bit(pin_a1,0);
output_bit(pin_a2,0);
output_bit(pin_a3,1);
delay();
x=x+1;
} while (x!=50); // estableciendo cantidad de pasos
}
void izquierda() // giro a la izquierda
{
x=0;
do
{
output_bit(pin_a0,0);
output_bit(pin_a1,1);
output_bit(pin_a2,1);
output_bit(pin_a3,0);
delay();
output_bit(pin_a0,1);
output_bit(pin_a1,1);
output_bit(pin_a2,0);
output_bit(pin_a3,0);
delay();
output_bit(pin_a0,1);
output_bit(pin_a1,0);
output_bit(pin_a2,0);
output_bit(pin_a3,1);
delay();
output_bit(pin_a0,0);
output_bit(pin_a1,0);
output_bit(pin_a2,1);
output_bit(pin_a3,1);
delay();
x=x+1;
} while (x!=50);
}
void main()
{
while(true)
{
if(input(PIN_B0)) // si presiono pulsador en B0, motor gira a la derecha
derecha();
else
{
if(input(PIN_B1)) // si se presiono el otro pulsador, motor gira a la izquierda
izquierda();
}
}
}
que dicen esta bien?? aca les dejo la simulación que hice en proteus 6.9 sp4
he usado en simulacion un Stepper de 1.8º/paso, ya que poseo uno de esas características; tengo algunas preguntas:
1. la velocidad de giro esta lentísima, eso es debido a que es de 1.8º por paso, porque si modifico a 90º por paso, va mas rápido; parece muy logico.
2. hay alguna forma de incrementar la velocidad de giro, para este mi motor?, ya que la función delay que cree, hace un retardo de 50ms por paso, si se hace menor cantidad de tiempo el Motor no responde, si se hace mayor tardará mas.
3. en la simulación, si se fijaron, el giro a la derecha lo hace hasta 355º, faltan 5, el giro a la izquierda esta perfecto, algun motivo, o es por causa del simulador.
gracias, chao.