Motor a Pasos para control de Chapas
//Declaramos las bobinas del motor a pasos.
const int bobina1 = 8; // 28BYJ48 In1
const int bobina2 = 9; // 28BYJ48 In2
const int bobina3 = 10; // 28BYJ48 In3
const int bobina4 = 11; // 28BYJ48 In4
//definicion variables
int velocidad_Motor = 2500; //variable para fijar la velocidad
int contador_Pasos = 0; // contador para los pasos
int pasos_Por_Vuelta = 2050; // pasos para una vuelta completa
//tablas con la secuencia de encendido (descomentar la que necesiteis)
//secuencia 1-fase
const int num_Pasos = 4;
const int pasos_Salida[4] = { B1000, B0100, B0010, B0001 };
//secuencia 2-fases //Mayor torque, pero más potencia requerida.
//const int num_Pasos = 4;
//const int pasos_Salida[4] = { B1001, B1100, B0110, B0011 };
void sentido_Horario()
{
contador_Pasos++;
if (contador_Pasos >= num_Pasos){
contador_Pasos = 0;
}
digitalWrite(bobina1, bitRead(pasos_Salida[contador_Pasos], 0));
digitalWrite(bobina2, bitRead(pasos_Salida[contador_Pasos], 1));
digitalWrite(bobina3, bitRead(pasos_Salida[contador_Pasos], 2));
digitalWrite(bobina4, bitRead(pasos_Salida[contador_Pasos], 3));
}
/*
void sentido_AntiHorario()
{
contador_Pasos--;
if (contador_Pasos < 0) {
contador_Pasos = num_Pasos - 1;
}
digitalWrite(bobina1, bitRead(pasos_Salida[contador_Pasos], 0));
digitalWrite(bobina2, bitRead(pasos_Salida[contador_Pasos], 1));
digitalWrite(bobina3, bitRead(pasos_Salida[contador_Pasos], 2));
digitalWrite(bobina4, bitRead(pasos_Salida[contador_Pasos], 3));
}
*/
void setup()
{
//declarar pines como salida
pinMode(bobina1, OUTPUT);
pinMode(bobina2, OUTPUT);
pinMode(bobina3, OUTPUT);
pinMode(bobina4, OUTPUT);
}
void loop()
{
for (int i = 0; i < pasos_Por_Vuelta; i++)
{
sentido_Horario();
delayMicroseconds(velocidad_Motor);
}
delay(1000);
}