EasyDriver – controlador motor paso a paso (ref: 0161)

2,95 

Solo quedan 4 disponibles

SKU: 0161 Categorías: , Etiquetas: ,

Descripción

El controlador de motores paso a paso EasyDriver, basado en el chip A3967, está pensado para que conectar y manejar motores sea sencillo. Es compatible con cualquier microcontrolador de 5V (aunque se puede adaptar para trabajar con los de 3,3V).

Su alimentación debe estar comprendida en el rango 6-30V. Dispone de un regulador de tensión interno para la alimentación del circuito lógico, cuya tensión se puede ajustar a 5V ó 3,3V (soldar un punto de estaño cortocircutando jumper de la esquina inferior izquierda, marcado como «3/5V» para 3,3V; no hacer nada para 5V).

Es capaz de manera motores bipolares de 4 cables y, en general, motores conectados como bipolares. Es decir, motores paso a paso de 4, 6 y 8 cables.

Funcionamiento y conexionado:

  • Motor A: Salida del puente H número 2. Conectar en estos pines la bobina A del motor.
  • Motor B: Salida del puente H número 1. Conectar en estos pines la bobina B del motor.
  • PDF: Selección del modo de decaimiento de la corriente (decay mode).  Si la tensión en este pin supera el 60% de Vcc, se activa el modo «decaimiento lento»; si no alcanza el 21% de Vcc se activa el modo «rápido decaimiento»; para valores intermedios se obtienen comportamientos intermedios.
  • RST: Entrada. A nivel bajo ignora todos los comandos de STEP (paso). Debe conectarse a nivel alto para poder controlar el motor.
  • ENABLE: Entrada. A nivel alto desactiva la salida del driver. A nivel bajo se activan los puentes H de la salida y el motor se puede controlar.
  • MS1/MS2: Entradas para configuración de micropasos. LOW/LOW para pasos enteros. HIGH/LOW para medios pasos LOW/HIGH para cuartos de paso. HIGH/HIGH para octavos de paso.
  • GND: Masa
  • M+: Alimentación (6-30V), recomendado 2A.
  • 5V: SALIDA. Sirve para alimentar circuitería externa, gracias a su regulador de tensión interno. Capacidad de corriente 70mA.
  • SLP: entrada. A nivel bajo entra en modo sleep y el consumo de potencia se reduce a valores mínimos
  • STEP: entrada. Cada transición de LOW a HIGH es una petición para que el motor de un paso más. El tamaño del paso se ajustó mediante MS1 y MS2. Este pin es compatible con 3,3V y 5V, en función de si se ha soldado o no el puente de estaño en la esquina inferior izquierda.
  • DIR: entrada. Permite controlar la dirección de giro del motor. Este pin es compatible con 3,3V y 5V, en función de si se ha soldado o no el puente de estaño en la esquina inferior izquierda.
  • Puente de soldadura APWR: por defecto sin puentear. En caso de cortocircuitarlo con un punto de soldadura la salida 5V entregaría Vcc en vez de 5V. ¡Cuidado!
  • Potenciómetro: Permite ajustar el límite de corriente que se entregará al motor (150mA – 750mA).

Atención: No conectes o desconectes el motor mientras el driver esté alimentado, podría dañar el A3967.

Código de ejemplo:

// Conexión de pines Arduino-EasyDriver
#define stp 2 //STEP al pin D2
#define dir 3 // DIR al pin D3
#define MS1 4 // MS1 y MS2 a pines D4 y D5
#define MS2 5
#define EN 6 // ENABLE al pin D6
// Además, alimentar con 6-30V  entre M+ y GND
// Conectar motor en A y B

// Algunas variables
char user_input;
int x, y, state;
// ***  CONFIGURACIÓN ***
void setup() {
  pinMode(stp, OUTPUT); // Pines como salida
  pinMode(dir, OUTPUT);
  pinMode(MS1, OUTPUT);
  pinMode(MS2, OUTPUT);
  pinMode(EN, OUTPUT);
  resetEDPins(); //Paso, dirección, microstep y enable a valores por defecto
  Serial.begin(9600); //Puerto serie (monitor serie)
  Serial.println("Comenzando el control del motor...");
//Imprime un menú por pantalla
  Serial.println("Escoge opción:");
  Serial.println("1. Volver a micropasos por defecto.");
  Serial.println("2. Invertir dirección de giro.");
  Serial.println("3. Micropaso a 1/8.");
  Serial.println("4. Paso adelante y atrás.");
  Serial.println();
}
// *** CÓDIGO PRINCIPAL ***
void loop() {
  while(Serial.available()){
     user_input = Serial.read(); //Lee puerto serie (viene del monitor serie)
     digitalWrite(EN, LOW); //Pone enable a nivel bajo, para actuar sobre el motor
     // Se ejectuta la función corresponiente
     if (user_input =='1')  {  StepForwardDefault(); }
     else if(user_input =='2'){ReverseStepDefault(); }
     else if(user_input =='3'){SmallStepMode();}
     else if(user_input =='4'){ForwardBackwardStep();}
     else{ Serial.println("Opción inválida."); }
     resetEDPins();
  }
}
// *** FUNCIONES ***
void StepForwardDefault() {
  Serial.println("Paso por defecto. Adelante.");
  digitalWrite(dir, LOW); //DIR a LOW
  for(x= 0; x<1000; x++){ // 1000 pasos
     digitalWrite(stp,HIGH);   delay(1);
     digitalWrite(stp,LOW);    delay(1);
  }
  Serial.println("Escoge otra opción.");
  Serial.println();
}

void ReverseStepDefault(){
  Serial.println("Paso por defecto. Atrás.");
  digitalWrite(dir, HIGH); //DIR a HIGH
  for(x= 0; x<1000; x++){ // 1000 pasos
     digitalWrite(stp,HIGH); delay(1);
     digitalWrite(stp,LOW); delay(1);
  }
  Serial.println("Escoge otra opción.");
  Serial.println();
}

void SmallStepMode(){
  Serial.println("Micropasos 1/8 de paso.");
  digitalWrite(dir, LOW); //DIR adelante (LOW)
  digitalWrite(MS1, HIGH); //Ajuste MS1 y MS2
  digitalWrite(MS2, HIGH);
  for(x= 0; x<1000; x++){ //1000 pasos
    digitalWrite(stp,HIGH);  delay(1);
    digitalWrite(stp,LOW);   delay(1);
  }
  Serial.println("Escoge otra opción.");
  Serial.println();
}

void ForwardBackwardStep(){
  Serial.println("Inversión del sentido de giro.");
  for(x= 1; x<5; x++){ //5 repeticiones
    state=digitalRead(dir); // Invierte sentido de giro
    if(state == HIGH) {  digitalWrite(dir, LOW); }
    else if(state ==LOW){digitalWrite(dir,HIGH);}
    for(y=0; y<1000; y++){ // 1000 pasos
      digitalWrite(stp,HIGH); delay(1);
      digitalWrite(stp,LOW);  delay(1);
    }
  }
  Serial.println("Escoge otra opción.");
  Serial.println();
}
void resetEDPins() { // Pines EDP a valor por defecto
  digitalWrite(stp, LOW);
  digitalWrite(dir, LOW);
  digitalWrite(MS1, LOW);
  digitalWrite(MS2, LOW);
  digitalWrite(EN, HIGH);
}

Valoraciones

No hay valoraciones aún.

Solo los usuarios registrados que hayan comprado este producto pueden hacer una valoración.

También te recomendamos…