viernes, 30 de marzo de 2018

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);
}
 

No hay comentarios:

Publicar un comentario