Motores paso a paso (stepper motor) con Arduino y varios controladores

Para un proyecto que tengo entre manos, construir un arpa láser, quiero explorar el funcionamiento de los motores paso a paso (steppers) con Arduino. Tengo varios motores y también varios controladores, por lo que haré diversas pruebas con todos ellos.

Esta entrada es más bien una recopilación de datos, enlaces y apuntes míos, pocas explicaciones por el momento, me temo.

Busco conseguir la máxima velocidad del motor, sin requerir un gran par, simplemente para mover un espejo que está pegado a su eje y que he de poder girar a diversas posiciones muy rápido. Al apuntar un láser al espejo, y encenderlo y apagarlo de forma sincronizada con los cambios de posición del motor, quiero conseguir la ilusión de tener varios haces de laser, por persistencia de la visión.

Para hacer funcionar un stepper no basta con enchufarles una corriente continua y listo. Constan de una serie de bobinas que hay que ir accionando consecutivamente para conseguir el movimiento del motor, paso a paso. Además, accionando a la vez varias de las bobinas en secuencias determinadas podemos conseguir micropasos. Para realizar esto empleamos controladores (drivers) que se encargan de todo el proceso.

Motores

Tengo los siguientes motores:

28BYJ-48

Motor paso a paso (stepper) 28BYJ-48

Ya he escrito sobre el uso de este motorcito en esta entrada. Es el motor que viene en todos los kits de Arduino. Se suele controlar con el ULN2003. Compré uno junto con su controlador aquí, por poco más de 2€.

GZGW09

gzgw09

Comprado aquí.

Características:

  • Step angle: 1.8 degree
  • Rated voltage: DC 4.83V
  • Rated current: 0.84A
  • Phase impedance: 5.75 Ohm + / – 10 degree centigrade
  • Phase inductance: 9.3 mH + / – 20 degree centigrade (1kHz 1V RMA)
  • Holding torque: 0.48Nm Min
  • Shaft diameter: 5mm / 0.188 (3/16)
  • Shaft length: 20mm
  • Motor height: 34mm
  • Number of lead wire: 4 wires
  • Driven X-axis and Y-axis movement, sprinkler wire wheel to scroll
  • Great for DIY project
  • Dimensions: 5.8 cm x 4.2 cm x 4.2 cm
  • Weight: 220 g

Motor NEMA 17 JK42HS40-1704 13A

Comprado aquí por 12.50 €.

Características:

  • Número de parte: JK42HS40-1704 13A
  • Tamaño de marco: NEMA17
  • Ángulo del paso: 1,8 grados
  • Voltaje: 3.4V
  • Corriente: 1,7 A/phase
  • Resistencia: 2,0 ohmios/fase
  • Inductancia: 3,0 mH/phase
  • Llevar a cabo el esfuerzo de torsión: 4000g-cm 58.30 OZ-IN
  • Inercia del rotor: 54 g-cm2
  • Esfuerzo de torsión de la muesca: 0,22 kilogramo-cm
  • Número de ventajas de alambre: 4
  • Peso: 0,24 kilogramos
  • Longitud: 40m m
  • Eje del motor: 5mm
  • Longitud del árbol delantero: 20 mm
  • Certificación: CE, ROHS, ISO9001

MITSUMI M35SP-9

Lo saqué de una vieja impresora. Venía con etiqueta, así que puede investigar el modelo y características, ahorrándome mucho trabajo. Es un MITSUMI M35SP-9, y por lo visto es (era) muy típico en impresoras, escáneres, faxes, etc. Es un motor paso a paso (stepper) unipolar.

La ficha puede consultarse aquí, de donde he sacado las siguientes tablas y figuras:

mitusmicuadro

mitsumigrafico

Y aquí hay un vídeo italiano empleando el motor con Arduino UNO y un controlador ULN2003A:

https://youtu.be/oLaTRkZNtNE

Motor de Adafruit

El motor que finalmente empleé fue este de Adafruit, comprado aquí.

adafruit

Drivers

Y tengo los siguientes controladores:

ULN2003

Muy simplón.

L2930

A4988

 

En esta entrada explico cómo usar un motor con este controlador.

DRV8825

Es una versión mejorada del driver A4988.

0j42241200

Características principales:

  • Para motores bipolares
  • Permite microstepping de hasta 1/32
  • 1.5  por fase o 2.2A si se dispone de ventilación forzada de aire o disipadores
  • Interfaz casi idéntica al A4988
  • 45 V máximo
  • Control de corriente máxima con un potenciómetro

Puede consultarse sus características e información adicional en la página de Pololu.

0j4232-1200

En esta entrada explico cómo utilizarlo con Arduino, y en esa otra con una Raspberry Pi.

Esta página compara y explica en mucho detalle los drivers DRV8825 y el A4988, muy recomendable.

Para controlar los motores con este driver, se puede emplear la librería StepperDriver.

http://www.hobbytronics.co.uk/drv8825-stepper-motor-driver

Uno de los motores que voy a emplear con este driver tiene una corriente de 1.7 A por fase, por lo que le colocaré un disipador al driver.

Ajustar la corriente:

A3967 Easydriver

El que yo compré es la versión v4.4 (aunque hay una versión más reciente, la 4.5). Sirve para controlar motores bipolares, y permite micropasos hasta 1/16.

Se puede consultar las especificaciones técnicas del chip A3967 aquí, y del propio modulo EasyDriver aquí.

Lo compré aquí, por poco más de 4€.

  • The EasyDriver is a simple to use stepper motor driver,
    compatible with anything that can output a digital 0 to 5V pulse (or 0 to 3.3V pulse if you solder SJ2 closed on the EasyDriver)
  • EasyDriver requires a 7V to 30V supply to power the motor and can power any voltage of stepper motor.
  • The EasyDriver has an on board voltage regulator for the digital interface that can be set to 5V or 3.3V.
  • Connect a 4-wire stepper motor and a micro controller and got precision motor control!
  • EasyDriver drives bi-polar motors, and motors wired as bi-polar. I.e. 4,6, or 8 wire stepper motors.
  • MS1 and MS2 pins broken out to change micro stepping resolution to full, half, quarter and eighth steps (defaults to eighth)
  • Compatible with 4, 6, and 8 wire stepper motors of any voltage
  • Adjustable current control from 150mA/phase to 750mA/phase
  • Power supply range from 7V to 30V. The higher the voltage, the higher the torque at high speeds
  • Board size: 47 x 20mm
  • Pin header size: 51 x11mm
  • Net weight: 7g

Ejemplos de uso:

Arduino Tutorial: Stepper Motor with EasyDriver

https://www.sparkfun.com/tutorials/400

 

Con el motor GZGW09, la conexión al EasyDriver es:

  • A1: rojo (morado)
  • A2: gris (gris)
  • B1: amarillo (blanco)
  • B2: verde (negro)

Con el motor de Adafruit 200 pasos 12 V 350mA, la conexión al EasyDriver es:

  • A1: rojo
  • A2: amarillo
  • B1: verde
  • B2: gris

Motor JK42HS40-1704, la conexión al EasyDriver es:

  • A1: azul (azul)
  • A2: rojo (morado)
  • B1: verde (verde)
  • B2: negro (gris)

 

Referencias

Stepper Motor on Wikipedia

About Steppers on Adafruit Learn

Stepper motor page on RepRap wiki

http://www.orientalmotor.com/technology/articles/stepper-motor-basics.html

https://www.sparkfun.com/tutorials/400

http://bildr.org/2011/06/easydriver/

http://www.instructables.com/id/Stepper-Motor-Easy-Driver/?ALLSTEPS

http://www.instructables.com/id/Drive-a-Stepper-Motor-with-an-Arduino-and-a-A4988-/

 

2 pensamientos en “Motores paso a paso (stepper motor) con Arduino y varios controladores

  1. Pingback: Diseño y construcción de un arpa láser | Carlini's Blog

  2. Pingback: Manejar un motor stepper con un driver DRV8825 y Arduino | Carlini's Blog

Deja un comentario

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