Programar fácil con Arduino

Programar fácil con Arduino, entiende cómo funciona el mundo.

  • Inicio
  • Cursos
  • Blog
  • Podcast
  • ¿Quién soy?
  • Contactar
  • Acceder
Usted está aquí: Inicio / Blog / Motor paso a paso 28BYJ-48 con Arduino

Motor paso a paso 28BYJ-48 con Arduino

Comentarios(12)
Luis del Valle Hernández

En este artículo vamos a ver el motor paso a paso 28BYJ-48 con Arduino. Este tipo de motores se utiliza en una gran cantidad de proyectos. Desde impresoras 3D a robots. En este artículo vamos a dar un repaso por los conceptos más importantes del motor paso a paso.

Motor paso a paso

Lo primero que hay que destacar es su precio, lo podemos encontrar por unos 3€. Aunque parezca un componente complejo, resulta sencillo su manejo una vez entendamos cómo funciona. En este artículo voy a centrarme, sobre todo, en cómo debemos programar el motor paso a paso.

Indice de contenidos

  • 1 Resumen de las características principales del motor paso a paso 28BYJ-48
  • 2 Motor paso a paso conectado a Arduino
  • 3 Programando el motor paso a paso
  • 4 Conclusión

Resumen de las características principales del motor paso a paso 28BYJ-48

Ya hablé de este tipo de motores en el podcast 73, te recomiendo que lo escuches. El él hacía un análisis pormenorizado de sus características. A continuación te hago un resumen.

  • Motor paso a paso con 5 cables (unipolar 4 bobinas)
  • Voltaje de funcionamiento 5V o 12V
  • Viene con un circuito integrado
    • 4 LEDs que indican cuando se excita una bobina
    • 4 resistencias para proteger los LEDs
    • Chip ULN2003 que contiene 3 transistores Darlington
    • 4 entradas para el controlador, por donde entran los pulsos.
    • Jumpers para seleccionar el voltaje de funcionamiento (5V o 12V)
    • Hay que puentear el voltaje que no se utiliza
  • Cada paso avanza 5,625º
  • Caja reductora mediante engranajes 1/64
    • Se consigue un paso de 5,625/64 = 0,088º
  • Resistencia del bobinado de 50 Ω
  • Torque de 34 Newton Metro más o menos 35 gramos por cm
  • Frecuencia máxima 100Hz que equivale a un delay de 10 ms
Motor paso a paso 28BYJ-48

Si quieres profundizar más puedes ver las hojas de características técnicas. Yo he encontrado dos, pero seguro que hay muchas más.

  • 1ª Hoja de características técnicas motor paso a paso
  • 2ª Hoja de características técnicas motor paso a paso

Motor paso a paso conectado a Arduino

Antes de ver las conexiones, hay que aclarar que este tipo de motores lleva un driver o etapa de potencia. Este componente nos permite suministrar la energía suficiente al motor paso a paso para que se mueva.

Para conectarlo puedes seguir el siguiente esquema eléctrico.

Conexión motor 28byj-48 Arduino

Alimentación con 5V del motor 28BYJ-48

Ten mucho cuidado con los jumpers de alimentación. Para alimentar el motor 28BYJ-48 desde una placa de Arduino, tenemos que puentear las conexiones con un jumper. Estos jumpers nos permiten seleccionar una alimentación de 5V o de 12V. Recuerda que el Arduino UNO trabaja con 5V cómo máximo.

Yo he utilizado un cable hembra. Conectas un extremo al pin 3 y el otro al pin 4. En las siguiente imagen te muestro el resultado final.

Alimentación motor 28BYJ-48

Programando el motor paso a paso

Existen dos formas de programar un motor paso a paso. De forma manual y a través de una librería. En este artículo vamos a ver las dos maneras que tenemos de hacerlo Pero antes debemos de conocer cómo funciona este tipo de motores.

Funcionamiento del motor unipolar de 4 bobinas

Debido a que el 28BYJ-48 es un motor unipolar (4 bobinas), lo podemos mover de tres maneras diferentes, movimiento normal, movimiento por ola o paso completo y movimiento de medio paso. Veamos como funcionan cada uno de estos movimientos.

Movimiento normal (par máximo)

Consiste en excitar, administrar corriente, a dos bobinas a la vez en cada paso. Se consigue el máximo par pero también es el máximo consumo.

PASOBOBINA ABOBINA BBOBINA CBOBINA D 
1HIGHHIGHLOWLOW
2LOWHIGHHIGHLOW
3LOWLOWHIGHHIGH
4HIGHLOWLOWHIGH

Movimiento por ola o paso completo (par menor)

Consiste en excitar una bobina cada vez. El consumo se reduce pero también el par, por lo tanto es un consumo y par moderados.

PASOBOBINA ABOBINA BBOBINA CBOBINA D 
1HIGHLOWLOWLOW
2LOWHIGHLOWLOW
3LOWLOWHIGHLOW
4LOWLOWLOWHIGH

Movimiento de medio paso

Se consigue un movimiento lento y suave con un par y consumo entre medias de los otros dos movimientos.

PASOBOBINA ABOBINA BBOBINA CBOBINA D 
1HIGHLOWLOWLOW
2HIGHHIGHLOWLOW
3LOWHIGHLOWLOW
4LOWHIGHHIGHLOW
5LOWLOWHIGHLOW
6LOWLOWHIGHHIGH
7LOWLOWLOWHIGH
8HIGHLOWLOWHIGH

Asignando las bobinas a los pines

Las tablas anteriores nos van a indicar que valor tenemos que tener en las salidas digitales de Arduino. Según el esquema visto anteriormente, tenemos las siguientes conexiones.

ARDUINO891011
BOBINAABCD

Programación manual del motor paso a paso

La primera manera de programar nuestro motor es de forma manual. Es un poco artesanal, pero nos permitirá utilizar el movimiento más adecuado en nuestro proyecto. A continuación te dejo el código de los tres tipos de movimiento.

Movimiento normal (par máximo)

Arduino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
  Creado: Luis del Valle ([email protected]
  Movimiento normal motor  28BYJ-48
  https://programarfacil.com
*/
 
// Definimos los pines donde tenemos conectadas las bobinas
#define IN1  8
#define IN2  9
#define IN3  10
#define IN4  11
 
// Secuencia de pasos (par máximo)
int paso [4][4] =
{
  {1, 1, 0, 0},
  {0, 1, 1, 0},
  {0, 0, 1, 1},
  {1, 0, 0, 1}
};
 
void setup()
{
  // Todos los pines en modo salida
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}
 
 
 
void loop()
{
    for (int i = 0; i < 4; i++)
    {
      digitalWrite(IN1, paso[i][0]);
      digitalWrite(IN2, paso[i][1]);
      digitalWrite(IN3, paso[i][2]);
      digitalWrite(IN4, paso[i][3]);
      delay(10);
    }
}

Movimiento por ola (par menor)

Arduino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
  Creado: Luis del Valle ([email protected]
  Movimiento por ola motor 28BYJ-48
  https://programarfacil.com
*/
 
// Definimos los pines donde tenemos conectadas las bobinas
#define IN1  8
#define IN2  9
#define IN3  10
#define IN4  11
 
// Secuencia de pasos (par máximo)
int paso [4][4] =
{
  {1, 0, 0, 0},
  {0, 1, 0, 0},
  {0, 0, 1, 0},
  {0, 0, 0, 1}
};
 
void setup()
{
  // Todos los pines en modo salida
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}
 
 
 
void loop()
{
    for (int i = 0; i < 4; i++)
    {
      digitalWrite(IN1, paso[i][0]);
      digitalWrite(IN2, paso[i][1]);
      digitalWrite(IN3, paso[i][2]);
      digitalWrite(IN4, paso[i][3]);
      delay(10);
    }
}

Movimiento de medio paso

Arduino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
  Creado: Luis del Valle ([email protected]
  Movimiento por ola motor 28BYJ-48
  https://programarfacil.com
*/
 
// Definimos los pines donde tenemos conectadas las bobinas
#define IN1  8
#define IN2  9
#define IN3  10
#define IN4  11
 
// Secuencia de pasos (par máximo)
int paso [8][4] =
{
  {1, 0, 0, 0},
  {1, 1, 0, 0},
  {0, 1, 0, 0},
  {0, 1, 1, 0},
  {0, 0, 1, 0},
  {0, 0, 1, 1},
  {0, 0, 0, 1},
  {1, 0, 0, 1}
};
 
void setup()
{
  // Todos los pines en modo salida
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}
 
 
 
void loop()
{
    for (int i = 0; i < 8; i++)
    {
      digitalWrite(IN1, paso[i][0]);
      digitalWrite(IN2, paso[i][1]);
      digitalWrite(IN3, paso[i][2]);
      digitalWrite(IN4, paso[i][3]);
      delay(10);
    }
}

Programación del motor paso a paso a través de una librería

La otra manera de programar un motor 28BYJ-48 no es tan artesanal y reduce el código bastante. Se trata de utilizar la librería Steper que viene incluida con el entorno de desarrollo oficial de Arduino. Esta librería nos facilita el uso de este tipo de motores y viene adaptada para motores bipolares.

Arduino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
  Creado: Luis del Valle ([email protected]
  Utilización librería Steper con motor 28BYJ-48
  https://programarfacil.com
*/
 
// Incluímos la librería para poder utilizarla
#include <Stepper.h>
 
// Esto es el número de pasos por revolución
#define STEPS 4096
// Número de pasos que queremos que de
#define NUMSTEPS 100
 
// Constructor, pasamos STEPS y los pines donde tengamos conectado el motor
Stepper stepper(STEPS, 8, 9, 10, 11);
 
void setup() {
  // Asignamos la velocidad en RPM (Revoluciones por Minuto)
  stepper.setSpeed(5);
}
 
void loop() {
  // Movemos el motor un número determinado de pasos
  stepper.step(NUMSTEPS);
  delay(2000);
}

Conclusión

Los motores 28BYJ-48 son muy útiles en proyectos de poca envergadura. Si lo que necesitamos es más precisión y fuerza (par motor), debemos irnos a otro tipo de motores. Existen shields para Arduino que nos facilitan la tarea de alimentación de motores paso a paso. Uno de los más conocidos el Adafruit Motor Shield. Un componente excepcional para nuestros proyectos robóticos.

Si te ha gustado el artículo lo puedes compartir, cualquier duda o sugerencia en los comentarios, gracias :)

Gracias a Shutterstock por ceder los derechos de la imagen

curso programacion de arduino desde cero

Tutoriales de Arduino


Curso de Arduino
Proyectos con Arduino
Arduino UNO R3
Arduino MEGA 2560
Servomotor con Arduino
Sensor de temperatura DHT11
Sensor temperatura Arduino
Tutorial pulsadores
Tutorial RTC reloj Arduino
Tutorial potenciómetro Arduino
Tutorial display 7 Arduino
Tutorial motor paso a paso Arduino
Tutorial librerías Arduino
Tutorial ultrasonidos Arduino
Tutorial I2C Arduino
Tutorial consumo Arduino
Tutorial weareable Arduino
Tutorial interrupciones Arduino
Tutorial ADS1115 ADC Arduino
Tutorial pilas Arduino
Tutorial riego Arduino
Arduino Shield EchidnaShield
Tutorial if else Arduino

Tutoriales ESP8266


Introducción ESP8266
Tutorial NodeMCU
IDE Arduino NodeMCU
Tutorial ESP-01
Relé WiFi Sonoff

Tutoriales IoT


Proyectos IoT con Arduino
MQTT ESP8266 Raspberry Pi
Redes LPWAN Arduino
IFTTT Arduino
Geolocalización Arduino
Arduino MKRFOX1200 Sigfox
Tutorial Node-RED

Tutoriales Visión Artificial


Instalación OpenCV y Python
Introducción Vision Artificial
Detección movimiento OpenCV
Introducción OpenCV
Qué es Machine Learning
Sensor Kinect
Realidad Aumentada
Detector Canny OpenCV
Big Data Visión Artificial
Kinect y Processing
Deep Learning

Tutoriales Raspberry Pi


Tutorial Raspberry Pi
Proyectos Raspberry Pi
Vídeo Raspberry Pi
Servidor web Raspberry Pi
Servidor Raspberry Pi
Flask Raspberry Pi
Monitor bebé Raspberry Pi

Podcast


Entrevista Obijuan
Entrevista BricoGeek
Entrevista David Cuartielles
Entrevista Rinconingenieril
Entrevista Staticboards
Entrevista La Hora Maker
Entrevista OSHWDem
Entrevista Colepower
Entrevista Aprendiendoarduino
Entrevista BitFab
Protocolo i2c imagen destacada

Comunicación I2C con Arduino lo mejor de dos mundos

El protocolo de comunicación I2C con Arduino es ampliamente utilizado en multitud de sensores y actuadores. Esto se debe principalmente a dos … [+ info...]

Introducion-a-git-y-git-hub-github tutorial paso a paso

Git y GitHub tutorial paso a paso

¿Qué es Git y GitHub? En este artículo vas a entender cómo utilizar Git y GitHub, la famosa red social del código basada en Git, orientada a … [+ info...]

Arduino IDE entorno de desarrollo oficial

El entorno de desarrollo integrado Arduino IDE representa el software básico ideal para principiantes y expertos. Cuando decides implementar un … [+ info...]

Copyright © 2021 · Programar Fácil · Aviso legal

Utilizamos cookies propios y de terceros para mejorar nuestros servicios y experiencia de usuario. Si continua navegando, consideramos que acepta su uso.Aceptar Política de privacidad y cookies
Política de cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necesarias
Siempre activado

Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.

No necesarias

Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.

close

Te ayudo a dar los primeros pasos con Arduino

Si quieres aprender programación de electrónica con Arduino utilizando un método serio, prueba el curso que te ofrezco.


Es muy sencillo, te apuntas en este formulario y accedes a los 3 primeros módulos.


Que te gusta, sigues con el curso completo.


Que no te gusta, sin problema, te das de baja y tan amigos.


Solo para gente seria que esté cansada de copiar y pegar código sin saber lo que hace.

x