Controlador de motor a pasos DRV8825

El DRV8825    proporciona una solución de  manejo de motores para impresoras, scanner, CNC entre otras aplicaciones.

 El dispositivo cuenta con  dos puentes H y un indexador microstepping y está destinado a accionar un motor paso a paso bipolar. La tarjeta cuenta con un potenciómetro que permite ajustar el uso de corriente para tener movimientos más suaves y a la vez proteger al motor de algún daño. Este controlador nos permite operar hasta 2.2 A por bobina y un voltaje máximo de hasta 45V.

Material:

  •         Arduino UNO
  •        Cables macho macho
  •        Protoboard
  •        Alimentación externa de 12v
  •        Motor a pasos
  •        Capacitor electrolítico 100uF a 25v
  •       Controlador de motor a pasos DRV8825

En la tienda virtual de HeTPro puedes encontrar todos los materiales www.hetpro-store.com

Los controladores y software Arduino lo puedes encontrar en: www.arduino.cc

Motor a pasos

Los motores paso a paso son ideales para la construcción de mecanismos en donde se requieren movimientos muy precisos.

La característica principal de estos motores es el hecho de poder moverlos un paso a la vez por cada pulso que se le aplique. Este paso puede variar desde 90° hasta pequeños movimientos de tan solo 1.8°, es decir, que se necesitarán 4 pasos en el primer caso (90°) y 200 para el segundo caso (1.8°), para completar un giro completo de 360°.

Estos motores poseen la habilidad de poder quedar enclavados en una posición o bien totalmente libres. Si una o más de sus bobinas están energizadas, el motor estará enclavado en la posición correspondiente y por el contrario quedará completamente libre si no circula corriente por ninguna de sus bobinas.

bobinas

Como identificar las bobinas de un motor paso a paso

Para identificar cuales son los cables que pertenecen a cada bobina y cual es el común es necesario un multímetro en modo continuidad.

Para los motores bipolares (4 cables) basta con escoger un cable al azar conectarle una punta del mulímetro y con la otra punta  conectarla con cada uno de los cables restantes. El cable que accione el pitido del multímetro indicara que esos dos cables son una bobina, y por ende los dos cables sobrantes sera la otra.

Para los motores unipolares (6 cables) tres cables tendrán continuidad entre si, lo que significa que dos son para la bobina y uno es el común, para determinar cual es el común de los tres, con el multímetro medimos resistencia y el par de cables que marquen la mayor resistencia estos serán la bobina, y cable sobrante sera el común que aproximadamente sera la mitad del valor de los cables principales.

Controlador de motor a pasos DRV8825

drv8825

 

 

Código de ejemplo:

Para el controlar la tarjeta del DRV8825 es necesario descargar la librería llamada “ AccelStepper.h”, ya que la descargues y se agregue a las librerías de Arduino ingresa el siguiente código:

Descargar libreria: AccelStepper.h

#include <AccelStepper.h>

AccelStepper stepper(1, 9, 8);//(define el tipo de control del motor,pin de paso,pin direccion)

int pos = 100;

void setup()
{
  stepper.setMaxSpeed(800); //velocidad maxima permitida
  stepper.setAcceleration(500);// relacion entre aceleracion/desaceleracion
}

void loop()
{
  if (stepper.distanceToGo() == 0)//distancia de la posicion actual y la destino

  {
    delay(500);
    pos = -pos;
    stepper.moveTo(pos);//establece la posicion de destino
  }
  stepper.run();
}

Detalles del programa

 

AccelStepper stepper(1, 9, 8);

El primer numero declarado que en este caso es el  “1”  indica que se utilizara un controlador de motores,el “9” corresponde al paso y el “8” a la dirección, que estos irán directo a la tarjeta del DRV8825

stepper.setMaxSpeed(800);
stepper.setAcceleration(500);

setMaxSpeed es la velocidad máxima permitida este valor debe ser mayor a 0. La velocidad máxima que alcance el motor dependerá del procesador y el oscilador del controlador, si se exceden las velocidades puede tener aceleraciones y desaceleraciones no lineales.

setAccelaration establece la relación de aceleración / desaceleracion y el valor debe ser mayor que cero.debes tener cuidado en no acelerar mas de lo necesario

if (stepper.distanceToGo() == 0)

distanceToGo es la desistancia de la posicion actual y la de destino, numero positivo es en sentido horario desde la posicion actual.

Fuente original del codigo: http://www.schmalzhaus.com/

Diagrama de Conexión

conexion

22 Comments

  1. josue Octubre 26, 2015
  2. josue Octubre 26, 2015
  3. Fernando Manjarrez Marzo 24, 2016
    • Hector Torres Marzo 26, 2016
      • Fernando Manjarrez Marzo 26, 2016
  4. james Abril 1, 2016
  5. james Abril 3, 2016
  6. Mantgartre Septiembre 13, 2016
    • Saul Jesus Septiembre 13, 2016
  7. Sofia Noviembre 9, 2016
    • Saul Jesus Noviembre 11, 2016
  8. Andres Abril 13, 2017
    • Hector Torres Abril 18, 2017
  9. Ernesto Mayo 9, 2017
    • Eduardo Lara Mayo 10, 2017
      • Ernesto Mayo 11, 2017
        • Eduardo Lara Mayo 11, 2017
  10. Cesar Julio 7, 2017
    • Hector Torres Julio 10, 2017

Leave a Reply