Pages Menu
TwitterFacebook



BANNER2_ALT

Posted by on Abr 11, 2015 in Arduino, Motores | 14 comments

Controlador de motor a pasos DRV8825

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

14 Comments

  1. Disculpa hay alguna manera de lograr esto sin ese controlador ??

    • Josue, siempre al usar un motor a pasos requieres un controlador.

  2. Disculpa hay alguna manera de hacer este control sin ese driver ??

  3. Tengo un CNC con Arduino Uno IDE y tarjeta CNC Shield 3.0 con 4 Drivers DVR8825, hay algun pricedimiento de diagnóstico para checar que estén bien en cuanto a sus limites de voltaje y corriente ?
    Me dice un técnico que se calientan porque no son los originales de Texas Instruments, son G Tech

    • Fernando, te recomiendo poner disipadores, originales o no, igual se calientan.

      • Si, Hector, estoy probando a qué temoeratura llegan los drivers ajustados a 250 mV por 1 Amp consumo de de corriente, se supone que no debe pasar de lis 60 grados C
        Estoy usando los minidisipadores que vienen de fábrica.
        Gracias por la ayuda
        Saludos

  4. Ok, Gracias

    La biblioteca AccelStepper es muy completa, sugiero crear una buena documentación en nuestro idioma y montar un circuito demostrativo ademas de usar un driver muy popular el Driver (DRV8825 Stepper Motor Driver) o similar para explorar las muchísimas funciones que trae la biblioteca y aplicarla en el circuito

    Quien se anima, yo seria uno de los principales colaboradores

    lista de funciones

     	AccelStepper (uint8_t interface=AccelStepper::FULL4WIRE, uint8_t pin1=2, uint8_t pin2=3, uint8_t pin3=4, uint8_t pin4=5, bool enable=true)
     
     	AccelStepper (void(*forward)(), void(*backward)())
     
    void 	moveTo (long absolute)
     
    void 	move (long relative)
     
    boolean 	run ()
     
    boolean 	runSpeed ()
     
    void 	setMaxSpeed (float speed)
     
    float 	maxSpeed ()
     
    void 	setAcceleration (float acceleration)
     
    void 	setSpeed (float speed)
     
    float 	speed ()
     
    long 	distanceToGo ()
     
    long 	targetPosition ()
     
    long 	currentPosition ()
     
    void 	setCurrentPosition (long position)
     
    void 	runToPosition ()
     
    boolean 	runSpeedToPosition ()
     
    void 	runToNewPosition (long position)
     
    void 	stop ()
     
    virtual void 	disableOutputs ()
     
    virtual void 	enableOutputs ()
     
    void 	setMinPulseWidth (unsigned int minWidth)
     
    void 	setEnablePin (uint8_t enablePin=0xff)
     
    void 	setPinsInverted (bool directionInvert=false, bool stepInvert=false, bool enableInvert=false)
     
    void 	setPinsInverted (bool pin1Invert, bool pin2Invert, bool pin3Invert, bool pin4Invert, bool enableInvert)
     
    bool 	isRunning ()
  5. Hola compañeros, disculpen la molestia y mi ignorancia, tengo 2 nema 23 que van a 2 [A] por fase , ¿que drivers necesito para estos motores? ¿puedo alimentar los motores con una fuente de 12 [V] a 1 [A]? Por favor alguien me pueda ayudar un saludo

    • hola buen dia podrias utilizar este controlador o bien alguno que tenemos en nuestra pagina siempre y cuando cumpla con las caracteristicas https://hetpro-store.com/controladores-de-motores/ y si quieres alimentar de manerda externa debes tener cuidado para el buen rendimiento de los motores

  6. Hola! es necesario poner el capacitor? no lo veo en el diagrama de conexiones. Gracias.

    • Hola es necesario ya que es de prevencion y no llegue el voltaje pico al motor

Trackbacks/Pingbacks

  1. Motores paso a paso (stepper motor) con Arduino y varios controladores | Carlini's Blog - […] Controlador de motor a pasos DRV8825 […]

Post a Reply

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *