Librería Completa para Motor Paso a Paso Bipolar en Arduino
Componentes y materiales
| Arduino UNO | × | 1 |
| Driver de motor Dual H-Bridge L293D (Texas Instruments) | × | 1 |
Aplicaciones y servicios en línea
| Arduino IDE |
Sobre el proyecto
Anteriormente, proporcioné una librería de Arduino para motores paso a paso unipolares. Controla perfectamente la velocidad, dirección, número de revoluciones, ángulo del motor, etc., todos los parámetros de motores paso a paso unipolares. Pero solo era para motores unipolares. Como sabemos, el motor paso a paso también puede ser bipolar. Esa librería no puede controlar motores bipolares. Así que decidí desarrollar otra librería de Arduino para controlar motores paso a paso bipolares.
Así que aquí presento la librería para motor paso a paso bipolar en Arduino para todos los motores bipolares. La librería tiene 9 funciones diferentes que se pueden usar para rotar y controlar el motor según los requisitos. La librería está diseñada según los requisitos de control de movimiento industrial. Aquí algunas de sus características:
- Controla cualquier motor paso a paso bipolar.
- Controla la dirección de rotación del motor.
- Controla con precisión el número de revoluciones del motor (1, 2, 3, 4...).
- Controla con precisión la velocidad del motor en RPM con 95% de precisión.
- Rota el motor al ángulo deseado entre 0–360° con 80–100% de precisión.
- Compatible con todas las placas Arduino.
Las breves descripciones de todas las funciones de la librería se dan a continuación. Después se dan algunos ejemplos que explican cómo se controla el motor usando esta librería. También se incluye un vídeo que muestra la demostración de estos ejemplos. Al final, se sugiere el circuito que usa el chip L293D, ampliamente usado como driver H-bridge para motores DC y también para motores paso a paso bipolares.
Para usar esta librería en tu sketch de Arduino, solo copia la carpeta bi_polar_Stepper en el directorio raíz de la carpeta de librerías de Arduino, como C:\arduino-1.6.7\libraries.
Descripción de las funciones de la librería:
bi_polar_Stepper(int pin1, int pin2, int pin3, int pin4)– Crea una instancia debi_polar_Stepperen el sketch de Arduino con los pines del driver del motor paso a paso. Especifica los pines de la placa Arduino que se usan para controlar el motor.set_step_per_rev(int steps)– Establece el número de pasos requeridos por el motor para completar 1 revolución. Es decir, establece el ángulo de paso (resolución de paso) del motor. Se debe ingresar el ángulo de paso del motor para un control preciso.set_RPM(int rpm)– Establece la velocidad del motor en RPM y el motor girará a la velocidad seleccionada con hasta 95% de precisión.rotate_CW()– Inicia la rotación del motor en sentido horario. Para rotar continuamente en sentido horario, se debe usar esta función en un bucle continuo.rotate_CCW()– Inicia la rotación del motor en sentido antihorario. Para rotar continuamente en sentido antihorario, se debe usar esta función en un bucle continuo.rotate(int dir)– Rota el motor según la dirección seleccionada. Si la dirección es 1, el motor gira en sentido horario; si es 0, en sentido antihorario.rotate_one_rev(int dir)– Rota el motor exactamente 1 revolución en la dirección seleccionada.rotate_n_rev(int dir, int num)– Rota el motor el número requerido de revoluciones en la dirección seleccionada.rotate_x_deg(int deg)– Rota el motor al ángulo deseado de 0–360° en cualquier dirección con 80–100% de precisión en el ángulo.
Ejemplos:
1) Rotar motor continuamente en una dirección a 60 RPM
/* Este programa rota continuamente un motor paso a paso bipolar
* con ángulo de paso 1.8° (200 pasos/rev) a 60 RPM
* creado por Ashutosh Bhatt el 12/12/16
*/
#include <bi_polar_Stepper.h>
#define steps 200 // cambia estos pasos según tu motor
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 60;
void setup() {
Serial.begin(9600);
Serial.println("bipolar stepper motor library test program");
my_step_motor.set_step_per_rev(steps);
my_step_motor.set_RPM(rpm);
Serial.println("motor rotates clockwise");
}
void loop() {
my_step_motor.rotate_CW();
}
2) Rotar motor una revolución en sentido horario y una en antihorario continuamente
/* Este programa rota un motor paso a paso bipolar
* con ángulo de paso 1.8° (200 pasos/rev)
* 1 revolución en sentido horario (CW) y una en antihorario (CCW) a 30 RPM continuamente
* creado por Ashutosh Bhatt el 12/12/16
*/
#include <bi_polar_Stepper.h>
#define steps 200
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 30;
void setup() {
Serial.begin(9600);
Serial.println("bipolar stepper motor library test program created by Ashutosh Bhatt");
my_step_motor.set_step_per_rev(steps);
my_step_motor.set_RPM(rpm);
}
void loop() {
Serial.println("motor rotates clockwise");
my_step_motor.rotate_one_rev(1);
delay(1000);
Serial.println("motor rotates anti-clockwise");
my_step_motor.rotate_one_rev(0);
delay(1000);
}
3) Rotar motor en horario a 100 RPM y antihorario a 50 RPM continuamente
/* Este programa rota primero un motor paso a paso bipolar
* con ángulo de paso 1.8° (200 pasos/rev)
* en sentido horario (CW) por 2 revoluciones a 100 RPM y luego
* en antihorario (CCW) por 2 revoluciones a 50 RPM continuamente
* creado por Ashutosh Bhatt el 12/12/16
*/
#include <bi_polar_Stepper.h>
#define steps 200
bi_polar_Stepper my_step_motor(2, 3, 4, 5);
int i;
void setup() {
Serial.begin(9600);
Serial.println("Bipolar stepper motor library test program created by Ashutosh Bhatt");
my_step_motor.set_step_per_rev(steps);
}
void loop() {
my_step_motor.set_RPM(100);
for(i=0; i<100; i++) my_step_motor.rotate(1);
delay(2000);
my_step_motor.set_RPM(50);
for(i=0; i<100; i++) my_step_motor.rotate(0);
delay(2000);
}
4) Rotar motor 4 revoluciones en horario a 20 RPM y 2 en antihorario a 10 RPM continuamente
/* Este programa rota un motor paso a paso bipolar
* con ángulo de paso 1.8° (200 pasos/rev)
* 4 revoluciones en horario (CW) a 20 RPM y luego
* 2 revoluciones en antihorario (CCW) a 10 RPM continuamente
* creado por Ashutosh Bhatt el 12/12/16
*/
#include <bi_polar_Stepper.h>
#define steps 200
bi_polar_Stepper my_step_motor(2, 3, 4, 5);
int i;
void setup() {
Serial.begin(9600);
Serial.println("Unipolar stepper motor library test program created by Ashutosh Bhatt");
my_step_motor.set_step_per_rev(steps);
}
void loop() {
my_step_motor.set_RPM(20);
my_step_motor.rotate_n_rev(1, 4);
delay(2000);
my_step_motor.set_RPM(10);
my_step_motor.rotate_n_rev(0, 2);
delay(2000);
}
5) Rotar motor 90° en horario y 90° en antihorario continuamente a 30 RPM
/* Este programa rota un motor bipolar
* con ángulo de paso 1.8° (200 pasos/rev) a 30 RPM a
* 90° CW y 90° CCW continuamente
* creado por Ashutosh Bhatt el 22/10/16
*/
#include <bi_polar_Stepper.h>
#define motor_steps 200
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 30;
void setup() {
Serial.begin(9600);
Serial.println("bipolar stepper motor library test program");
my_step_motor.set_step_per_rev(motor_steps);
my_step_motor.set_RPM(rpm);
Serial.println("motor rotates 90 deg back and forth");
}
void loop() {
my_step_motor.rotate_x_deg(90);
delay(2000);
my_step_motor.rotate_x_deg(270); // 270° equivale a -90°
delay(2000);
}
Nota: Si el motor paso a paso tiene mayores corrientes y tensiones nominales, en lugar del chip L293D se puede usar el chip L298 o un conjunto de 4 transistores Darlington separados como TIP122, TIP142, etc., para controlar los motores paso a paso.
La librería y los programas de ejemplo junto con el circuito anterior han sido probados con los siguientes motores paso a paso:
- Motor bipolar de 2 fases con 5V, 100 RPM (MÁX), 200 pasos/rev (ángulo de paso 1.8°)
- Motor bipolar de 2 fases con 5V, 60 RPM (MÁX), 200 pasos/rev (ángulo de paso 1.8°)
Código
- Librería Arduino para Motor Paso a Paso Bipolar
Librería Arduino para Motor Paso a Paso Bipolar C/C++
La librería controla RPM, dirección, revoluciones, ángulo de rotación de todo tipo de motores paso a paso bipolares con 95% de precisión.
No hay vista previa (solo descarga).
Esquemáticos
Este circuito controla y gestiona RPM, dirección, ángulo de rotación, número de revoluciones de motor paso a paso bipolar.
Proceso de manufactura
- Sensor Telemetry 2.0.1 – Monitorización Avanzada de Temperatura con Azure IoT Hub
- Raspoulette: Sistema autónomo de puerta de gallinero alimentado por energía solar – Prototipo
- Torreta Nerf autónoma DIY: construye una pistola Nerf inteligente con motores paso a paso, cámara y Arduino
- Deslizador Automático para Tinder y Bumble con Arduino UNO y Motor Paso a Paso
- SmartWay: Kit Integral para Monitorización Infantil GPS, Vibración, RGB y Sigfox (Arduino MKR Fox 1200)
- Entendiendo los Motores Lineales: De Energía Eléctrica a Movimiento Lineal Preciso
- Motores servo: funcionamiento, tipos y por qué son importantes
- Servo vs. Motores Paso a Paso: Aclarando la Zona Gris Moderna
- Motores de Relectancia Variable: Tipos, Funcionamiento y Aplicaciones
- Motores Paso a Paso: Tipos, Características y Aplicaciones Prácticas
- Drivers integrados simplifican diseño de motores paso a paso de alta potencia