top of page

El Código

l

int PasosM0 = 4;                                             //   Pin 4 Habilitador de los pasos del Driver A4988 = M0
int PasosM1 = 3;                                             //   Pin 3 Habilitador de los pasos del Driver A4988 = M1
int PasosM2 = 2;                                             //   Pin 2 Habilitador de los pasos del Driver A4988 = M2
int Habilitador = 12;                                        //   Habilita Corriente con Enable.
int LedGiraIzquierda = 7;                                    //   1° Led Verde, Aviso de Giro a la Izquierda.
int LedGiraDerecha = 6;                                      //   2° Led Verde, Aviso de Giro a la Derecha.
int LedNoGira = 5;                                           //   Led Rojo, Aviso sin Movimiento.
const int PinDireccion = 8;                                  //   Pin Direcion
const int PinStep = 9;                                       //   Pin Step.
int TiempoStep ;                                              //   Variable Tiempo.
//------------------------------------------------------------------------------------------------------------------
void setup() {
  pinMode(PinDireccion, OUTPUT);
  pinMode(PinStep, OUTPUT);
  pinMode(Habilitador, OUTPUT);                              //   Habilita Como Salida Digital.
  pinMode(LedGiraIzquierda, OUTPUT);                         //   Habilita Como Salida Digital.
  pinMode(LedGiraDerecha, OUTPUT);                           //   Habilita Como Salida Digital.
  pinMode(LedNoGira, OUTPUT);                                //   Habilita Como Salida Digital.
  pinMode(PasosM0, OUTPUT);                                  //   Habilita Como Salida Digital.
  pinMode(PasosM1, OUTPUT);                                  //   Habilita Como Salida Digital.
  pinMode(PasosM2, OUTPUT);                                  //   Habilita Como Salida Digital.
  digitalWrite(Habilitador, LOW);                            //   Al Arranque pone en estado LOW. Habilita.
  digitalWrite(PasosM0, LOW);                                //   Al Arranque pone en estado LOW.
  digitalWrite(PasosM1, LOW);                                //   Al Arranque pone en estado LOW.
  digitalWrite(PasosM2, LOW);                                //   Al Arranque pone en estado LOW.
}
//------------------------------------------------------------------------------------------------------------------

void loop() {
  digitalWrite(Habilitador, LOW);                            
VelocidadMuyLento();
AvisoLedGiraIzquierda();
GiraIzquierdaLento();
  GiraIzquierdaAumenta();
  GiraIzquierdaRapido();
  GiraIzquierdaDisminuye();
  GiraIzquierdaLento();
AvisoLedNoGira();
  digitalWrite(Habilitador, HIGH);                            
delay(500);
  digitalWrite(Habilitador, LOW);                            
AvisoLedGiraDerecha();
  GiraDerechaLento();
  GiraDerechaAumenta();
  GiraDerechaRapido();
  GiraDerechaDisminuye();
  GiraDerechaLento();
AvisoLedNoGira();
  digitalWrite(Habilitador, HIGH);                            
  delay(500);
}
//...............................................................................................
void GiraIzquierdaLento() {
  digitalWrite(PinDireccion, HIGH);
  TiempoStep = 300;
  for (int x = 0; x < 4000; x++) {
    digitalWrite(PinStep, HIGH);
    delayMicroseconds(TiempoStep);
    digitalWrite(PinStep, LOW);
    delayMicroseconds(TiempoStep);
  }
}
//...............................................................................................
void GiraIzquierdaRapido() {
  digitalWrite(PinDireccion, HIGH);
  TiempoStep = 25;
  for (int x = 0; x < 30000; x++) {
    digitalWrite(PinStep, HIGH);
    delayMicroseconds(TiempoStep);
    digitalWrite(PinStep, LOW);
    delayMicroseconds(TiempoStep);
  }
}
//...............................................................................................
void GiraIzquierdaAumenta() {
  digitalWrite(PinDireccion, HIGH);
  for (int Y = 300; Y > 25; Y--) {
    TiempoStep = Y;
    for (int x = 0; x < 50; x++) {
      digitalWrite(PinStep, HIGH);
      delayMicroseconds(TiempoStep);
      digitalWrite(PinStep, LOW);
      delayMicroseconds(TiempoStep);
    }
  }
}
//...............................................................................................
void GiraIzquierdaDisminuye() {
  digitalWrite(PinDireccion, HIGH);
  for (int Y = 25; Y < 300; Y++) {
    TiempoStep = Y;
    for (int x = 0; x < 50; x++) {
      digitalWrite(PinStep, HIGH);
      delayMicroseconds(TiempoStep);
      digitalWrite(PinStep, LOW);
      delayMicroseconds(TiempoStep);
    }
  }
}
//...............................................................................................
void GiraDerechaLento() {
  digitalWrite(PinDireccion, LOW);
  TiempoStep = 300;
  for (int x = 0; x < 4000; x++) {
    digitalWrite(PinStep, HIGH);
    delayMicroseconds(TiempoStep);
    digitalWrite(PinStep, LOW);
    delayMicroseconds(TiempoStep);
  }
}
//...............................................................................................
void GiraDerechaRapido() {
  digitalWrite(PinDireccion, LOW);
  TiempoStep = 25;
  for (int x = 0; x < 30000; x++) {
    digitalWrite(PinStep, HIGH);
    delayMicroseconds(TiempoStep);
    digitalWrite(PinStep, LOW);
    delayMicroseconds(TiempoStep);
  }
}
//...............................................................................................
void GiraDerechaAumenta() {
  digitalWrite(PinDireccion, LOW);
  for (int Y = 300; Y > 25; Y--) {
    TiempoStep = Y;
    for (int x = 0; x < 50; x++) {
      digitalWrite(PinStep, HIGH);
      delayMicroseconds(TiempoStep);
      digitalWrite(PinStep, LOW);
      delayMicroseconds(TiempoStep);
    }
  }
}
//...............................................................................................
void GiraDerechaDisminuye() {
  digitalWrite(PinDireccion, LOW);
  for (int Y = 25; Y < 300; Y++) {
    TiempoStep = Y;
    for (int x = 0; x < 50; x++) {
      digitalWrite(PinStep, HIGH);
      delayMicroseconds(TiempoStep);
      digitalWrite(PinStep, LOW);
      delayMicroseconds(TiempoStep);
    }
  }
}
//------------------------------------------------------------------------------------------------------------------
void AvisoLedNoGira() {                   //   Accion Aviso con Led Rojo Sin Giro del Motor.
  digitalWrite(LedGiraIzquierda, LOW);    //   Apaga Led.
  digitalWrite(LedGiraDerecha, LOW);      //   Apaga Led.
  digitalWrite(LedNoGira, HIGH);          //   Enciende Led.
}
//------------------------------------------------------------------------------------------------------------------
void AvisoLedGiraIzquierda() {            //   Accion Aviso con Led Verde Giro Izquierda del Motor.
  digitalWrite(LedGiraDerecha, LOW);      //   Apaga Led.
  digitalWrite(LedNoGira, LOW);           //   Apaga Led.
  digitalWrite(LedGiraIzquierda, HIGH);   //   Enciende Led.
}
//------------------------------------------------------------------------------------------------------------------
void AvisoLedGiraDerecha() {              //   Accion Aviso con Led Verde Giro Derecha del Motor.
  digitalWrite(LedNoGira, LOW);           //   Apaga Led.
  digitalWrite(LedGiraIzquierda, LOW);    //   Apaga Led.
  digitalWrite(LedGiraDerecha, HIGH);     //   Enciende Led.
}
//------------------------------------------------------------------------------------------------------------------
void VelocidadMuyLento() {
  digitalWrite(PasosM0, HIGH);                               //   Pone en estado HIGH.
  digitalWrite(PasosM1, HIGH);                               //   Pone en estado HIGH.
  digitalWrite(PasosM2, HIGH);                               //   Pone en estado HIGH.
}
//------------------------------------------------------------------------------------------------------------------
void VelocidadLento() {
  digitalWrite(PasosM0, HIGH);                               //   Pone en estado HIGH.
  digitalWrite(PasosM1, HIGH);                               //   Pone en estado HIGH.
  digitalWrite(PasosM2, LOW);                                //   Pone en estado HIGH.
}
//------------------------------------------------------------------------------------------------------------------
void VelocidadNormal() {
  digitalWrite(PasosM0, LOW);                                //   Pone en estado HIGH.
  digitalWrite(PasosM1, HIGH);                               //   Pone en estado HIGH.
  digitalWrite(PasosM2, LOW);                                //   Pone en estado HIGH.
}
//------------------------------------------------------------------------------------------------------------------
void VelocidadRapido() {
  digitalWrite(PasosM0, HIGH);                               //   Pone en estado HIGH.
  digitalWrite(PasosM1, LOW);                                //   Pone en estado HIGH.
  digitalWrite(PasosM2, LOW);                                //   Pone en estado HIGH.
}
//------------------------------------------------------------------------------------------------------------------
void VelocidadMuyRapido() {
  digitalWrite(PasosM0, LOW);                                //   Pone en estado HIGH.
  digitalWrite(PasosM1, LOW);                                //   Pone en estado HIGH.
  digitalWrite(PasosM2, LOW);                                //   Pone en estado HIGH.
}
//------------------------------------------------------------------------------------------------------------------
 

Motor Paso a Paso Automático

Giro con velocidad de Aceleración y Desaceleración.

​

​

​

​

​

​

​

Manejo de un Motor Paso a Paso. Automatico.
Los Giros, Sentido Horario y Sentido AntiHorario, son con Aceleración y Desaceleración.
​
Materiales para el proyecto:
​
Arduino Uno.
Driver A4988
Motor Paso a Paso Nema 17.
1 Capacitor Electrolítico 1000uf 25V, Para La entrada de 12 Volts del A4988.
2 Resistencias de 470 ohms,  Para los Leds Verdes.
1 Resistencia de 1K ohm,  Para el Led Rojo.
2 Leds Verdes. Para Aviso de Giro.
1 Led Rojo. Para Aviso de Sin Giro.
Conexión:
​
Pin 12 del Arduino al Enable del A4988.
Pin 9 del Arduino al Step del A4988.
Pin 8 del Arduino al Dir del A4988.
Pin 7 del Arduino al Led Verde Aviso Giro Izquierda.
Pin 6 del Arduino al Led Verde Aviso Giro Derecha.
Pin 5 del Arduino al Led Rojo Aviso No Giro.
A4988 : Reset y Sleeep Conectar en puente entre si.
A4988 : M1, M2, M3 Responsables de Micro Pasos no usaremos, dejarlos desconectados.
A4988 : A1, A2, B1 y B2 Conectar el Motor Nema 17.
A4988 : Alimentacion 0 y 5 Volts, 0 y 12 Volts.
​
 
 
 
 
 
 
 
 
 
​
 
 
 
 
 
 
 
​
bottom of page