top of page

El Código

const int LedVelocidad = 5;                                  //   Pin 13 Aviso Velocidad con PWM
int Habilitador = 12;                                        //   Habilita Corriente con Enable.
int StepTiempo = 1.8;                                        //   Delay Tiempo del Step.
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 = 13;                                          //   Led Rojo, Aviso sin Movimiento.
const int Step = 9;                                          //   Pin del Step.
const int Direccion = 8;                                     //   Pin del Dir.
const int PotVelocidad = A0;                                 //   Pin A0, Lectura del Poteciometro para Cambio de Velocidad.
int ValorPot;                                                //   Variable que almacena la lectura analógica.
int PosicionPot;                                             //   Posicion del potenciometro.
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
//------------------------------------------------------------------------------------------------------------------
void setup() {
  pinMode(LedVelocidad, OUTPUT);                             //   Habilita Como Salida Digital.
  pinMode(Habilitador, OUTPUT);                              //   Habilita Como Salida Digital.
  pinMode(Step, OUTPUT);                                     //   Habilita Como Salida Digital.
  pinMode(Direccion, 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.
  digitalWrite(Habilitador, LOW);                            //   Al Arranque pone en estado LOW. Habilita.
  pinMode(PasosM0, OUTPUT);                                  //   Habilita Como Salida Digital.
  pinMode(PasosM1, OUTPUT);                                  //   Habilita Como Salida Digital.
  pinMode(PasosM2, OUTPUT);                                  //   Habilita Como Salida Digital.
  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() {                                                //   Bucle Principal.
  ValorPot = analogRead(PotVelocidad);                       // realizar la lectura analógica raw
  PosicionPot = map(ValorPot, 0, 1023, 1, 11);               // convertir a porcentaje
  if (PosicionPot == 1 ) {                                   //   Verifica SI: ValorVelocidad = X.
    VelocidadMuyRapido();                                    //   Accion Cambio Velocidad. Puede elejir entre 5 velocidades
    AvisoLedGiraIzquierda();                                 //   Accion Aviso con Led Verde Giro Izquierda del Motor.
    digitalWrite(Habilitador, LOW);                          //   Habilita el Enable.
    GiraIzquierda();                                         //   Accion Giro Determinado.
    analogWrite(LedVelocidad, 255);                          //   Accion Aviso de Velocidad, Intensidad.
  }
  if (PosicionPot == 2 ) {                                   //   Verifica SI: ValorVelocidad = X.
    VelocidadRapido();                                       //   Accion Cambio Velocidad. Puede elejir entre 5 velocidades
    AvisoLedGiraIzquierda();                                 //   Accion Aviso con Led Verde Giro Izquierda del Motor.
    digitalWrite(Habilitador, LOW);                          //   Habilita el Enable.
    GiraIzquierda();                                         //   Accion Giro Determinado.
    analogWrite(LedVelocidad, 200);                          //   Accion Aviso de Velocidad, Intensidad.
  }
  if (PosicionPot == 3 ) {                                   //   Verifica SI: ValorVelocidad = X.
    VelocidadNormal();                                       //   Accion Cambio Velocidad. Puede elejir entre 5 velocidades
    AvisoLedGiraIzquierda();                                 //   Accion Aviso con Led Verde Giro Izquierda del Motor.
    digitalWrite(Habilitador, LOW);                          //   Habilita el Enable.
    GiraIzquierda();                                         //   Accion Giro Determinado.
    analogWrite(LedVelocidad, 150);                          //   Accion Aviso de Velocidad, Intensidad.
  }
  if (PosicionPot == 4 ) {                                   //   Verifica SI: ValorVelocidad = X.
    VelocidadLento();                                        //   Accion Cambio Velocidad. Puede elejir entre 5 velocidades
    AvisoLedGiraIzquierda();                                 //   Accion Aviso con Led Verde Giro Izquierda del Motor.
    digitalWrite(Habilitador, LOW);                          //   Habilita el Enable.
    GiraIzquierda();                                         //   Accion Giro Determinado.
    analogWrite(LedVelocidad, 100);                          //   Accion Aviso de Velocidad, Intensidad.
  }
  if (PosicionPot == 5 ) {                                   //   Verifica SI: ValorVelocidad = X.
    VelocidadLento();                                        //   Accion Cambio Velocidad. Puede elejir entre 5 velocidades
    AvisoLedGiraIzquierda();                                 //   Accion Aviso con Led Verde Giro Izquierda del Motor.
    digitalWrite(Habilitador, LOW);                          //   Habilita el Enable.
    GiraIzquierda();                                         //   Accion Giro Determinado.
    analogWrite(LedVelocidad, 50);                           //   Accion Aviso de Velocidad, Intensidad.
  }
  if (PosicionPot == 6 ) {                                   //   Verifica SI: ValorVelocidad = X.
    AvisoLedNoGira();
    digitalWrite(Habilitador, HIGH);                         //   Habilita el Enable.
    analogWrite(LedVelocidad, 0);                            //   Accion Aviso de Velocidad, Intensidad.
  }
  if (PosicionPot == 7 ) {                                   //   Verifica SI: ValorVelocidad = X.
    VelocidadLento();                                        //   Accion Cambio Velocidad. Puede elejir entre 5 velocidades
    AvisoLedGiraDerecha();                                   //   Accion Aviso con Led Verde Giro Derecha del Motor.
    digitalWrite(Habilitador, LOW);                          //   Habilita el Enable.
    GiraDerecha();                                           //   Accion Giro Determinado.
    analogWrite(LedVelocidad, 50);                           //   Accion Aviso de Velocidad, Intensidad.
  }
  if (PosicionPot == 8 ) {                                   //   Verifica SI: ValorVelocidad = X.
    VelocidadLento();                                        //   Accion Cambio Velocidad. Puede elejir entre 5 velocidades
    AvisoLedGiraDerecha();                                   //   Accion Aviso con Led Verde Giro Derecha del Motor.
    digitalWrite(Habilitador, LOW);                          //   Habilita el Enable.
    GiraDerecha();                                           //   Accion Giro Determinado.
    analogWrite(LedVelocidad, 100);                          //   Accion Aviso de Velocidad, Intensidad.
  }
  if (PosicionPot == 9 ) {                                   //   Verifica SI: ValorVelocidad = X.
    VelocidadNormal();                                       //   Accion Cambio Velocidad. Puede elejir entre 5 velocidades
    AvisoLedGiraDerecha();                                   //   Accion Aviso con Led Verde Giro Derecha del Motor.
    digitalWrite(Habilitador, LOW);                          //   Habilita el Enable.
    GiraDerecha();                                           //   Accion Giro Determinado.
    analogWrite(LedVelocidad, 150);                          //   Accion Aviso de Velocidad, Intensidad.
  }
  if (PosicionPot == 10 ) {                                  //   Verifica SI: ValorVelocidad = X.
    VelocidadRapido();                                       //   Accion Cambio Velocidad. Puede elejir entre 5 velocidades
    AvisoLedGiraDerecha();                                   //   Accion Aviso con Led Verde Giro Derecha del Motor.
    digitalWrite(Habilitador, LOW);                          //   Habilita el Enable.
    GiraDerecha();                                           //   Accion Giro Determinado.
    analogWrite(LedVelocidad, 200);                          //   Accion Aviso de Velocidad, Intensidad.
  }
  if (PosicionPot == 11 ) {                                  //   Verifica SI: ValorVelocidad = X.
    VelocidadMuyRapido();                                    //   Accion Cambio Velocidad. Puede elejir entre 5 velocidades
    AvisoLedGiraDerecha();                                   //   Accion Aviso con Led Verde Giro Derecha del Motor.
    digitalWrite(Habilitador, LOW);                          //   Habilita el Enable.
    GiraDerecha();                                           //   Accion Giro Determinado.
    analogWrite(LedVelocidad, 255);                          //   Accion Aviso de Velocidad, Intensidad.
  }
}
//------------------------------------------------------------------------------------------------------------------
void GiraIzquierda() {                                       //   Accion para girar a la Izquierda.
  digitalWrite(Direccion, HIGH);                             //   Selecciona la Direccion de Giro.
  for (uint32_t i = 0; i < 1 ; i++) {                        //   Ciclor for en este caso solo cuenta 1.
    digitalWrite(Step, HIGH);                                //   Cambia estado del Step para exitar la bobina.
    delay(StepTiempo * 1 );                                  //   Retardo.
    digitalWrite(Step, LOW);                                 //   Cambia estado del Step para exitar la bobina.
    delay(StepTiempo * 1 );                                  //   Retardo.
  }
}
//------------------------------------------------------------------------------------------------------------------
void GiraDerecha() {                                         //   Accion para girar a la Derecha
  digitalWrite(Direccion, LOW);                              //   Selecciona la Direccion de Giro.
  for (uint32_t i = 0; i < 1 ; i++) {                        //   Ciclor for en este caso solo cuenta 1.
    digitalWrite(Step, HIGH);                                //   Cambia estado del Step para exitar la bobina.
    delay(StepTiempo * 1 );                                  //   Retardo.
    digitalWrite(Step, LOW);                                 //   Cambia estado del Step para exitar la bobina.
    delay(StepTiempo * 1 );                                  //   Retardo.
  }
}
//------------------------------------------------------------------------------------------------------------------
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, Giro Horario y Giro AntiHorario Manual 5 Velocidades con

Potenciometro

​

​

​

​

​

​

​

​

Manejo de un Motor Paso a Paso, mediante 1 Potenciometro. Manual.
2 Giros, Sentido Horario y Sentido AntiHorario.
El Potenciómetro cambia 5 velocidad.
Muy Lento, Lento, Normal, Rápido y Muy Rápido.
Desde la posición central es Nulo, APAGADO.
Luego a mas se aleja del centro mas rápido gira.
​
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 ohm. 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.
1 Led Azul. Para Aviso de Velocidades.
2 Resistencias de 1K ohm. Para el Led de Velocidad.
1 Potenciómetro de 20K ohm. Para el cambio de Velocidad.
​
Conexión:
​
Pin 13 del arduino al Led Azul Aviso Velocidad.
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 13 del arduino al Led Rojo Aviso No Giro.
A4988 : Reset y Sleeep Conectar en puente entre si.
Pin 4 del arduino al M0 del A4988.
Pin 3 del arduino al M1 del A4988.
Pin 2 del arduino al M2 del A4988.
A4988 : A1, A2, B1 y B2 Conectar el Motor Nema 17.
A4988 : Alimentacion 0 y 5 Volts, 0 y 12 Volts.
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
bottom of page