Control preciso de motor paso a paso: 28BYJ-48 con Arduino UNO y joystick
Componentes y suministros
| Componente | Cantidad |
|---|---|
| Arduino UNO | 1 |
| Motor paso a paso 28BYJ-48 DC 5V | 1 |
| Controlador de motor paso a paso ULN2003 | 1 |
| Protoboard (genérica) | 1 |
| Cables puente (genéricos) | 1 |
| Joystick analógico (genérico) | 1 |
Sobre este proyecto
Hardware requerido
- Placa Arduino UNO
- Motor paso a paso 28BYJ-48 (con placa controladora ULN2003A)
- Joystick
- Fuente de alimentación 5V
- Protoboard
- Cables puente
Circuito de control del motor paso a paso con Arduino y joystick
El diagrama esquemático del circuito del proyecto se muestra a continuación (todos los terminales de tierra están conectados juntos).
La siguiente imagen muestra el circuito en Fritzing:
El motor paso a paso está conectado a la placa ULN2003A que se alimenta con una fuente de alimentación externa de 5V. Las líneas de control (IN1, IN2, IN3 e IN4) de esta placa se conectan al Arduino de la siguiente manera:
- IN1 al pin 11 de Arduino
- IN2 al pin 10 de Arduino
- IN3 al pin 9 de Arduino
- IN4 al pin 8 de Arduino
La placa del joystick tiene 5 pines: GND, +5V, VRX, VRY y SW, donde:
- GND y +5V son pines de alimentación
- VRX es la salida del potenciómetro del eje X
- VRY es la salida del potenciómetro del eje Y
- SW es el terminal del pulsador (el otro terminal está conectado a GND)
La salida del potenciómetro del eje X (VRX) se conecta al pin analógico A0 de Arduino; la salida del eje Y (VRY) también puede utilizarse. El pin del interruptor (SW) no se usa en este ejemplo. Usando los potenciómetros de los ejes X e Y podemos controlar dos motores paso a paso de forma independiente.
"Así que chicos, si os gusta el proyecto, no olvidéis seguirlo y darle a me gusta"
Código
CÓDIGO (C/C++)
Asegúrate de añadir todas las librerías que se incluyen en este código.
// Este proyecto ha sido hecho por BEASTIDREES62
// https://id.arduino.cc/?code=MTxqeHweG6vL2cur&state=amxEcTB2bnNiYjluTUxmRExWaWZnOXIzUk1BLWRqZTZYUGtJNGtxODB+dg==
// Incluir librería de motor paso a paso de Arduino
#include <Stepper.h>
// Definir número de pasos por revolución
#define STEPS 32
// Definir pines de control del motor paso a paso
#define IN1 11
#define IN2 10
#define IN3 9
#define IN4 8
// Inicializar librería stepper
Stepper stepper(STEPS, IN4, IN2, IN3, IN1);
// Salida del potenciómetro del joystick conectada a Arduino A0
#define joystick A0
void setup() {
}
void loop() {
// Leer valor analógico del potenciómetro
int val = analogRead(joystick);
// Si el joystick está en el centro => parar el motor
if ((val > 500) && (val < 523)) {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
} else {
// Mover el motor en la primera dirección
while (val >= 523) {
// Mapear la velocidad entre 5 y 500 rpm
int speed_ = map(val, 523, 1023, 5, 500);
// Establecer velocidad del motor
stepper.setSpeed(speed_);
// Mover el motor (1 paso)
stepper.step(1);
val = analogRead(joystick);
}
// Mover el motor en la otra dirección
while (val <= 500) {
// Mapear la velocidad entre 5 y 500 rpm
int speed_ = map(val, 500, 0, 5, 500);
// Establecer velocidad del motor
stepper.setSpeed(speed_);
// Mover el motor (1 paso)
stepper.step(-1);
val = analogRead(joystick);
}
}
}
Esquemas
Proceso de manufactura
- Sistema de control de acceso integrado con QR, RFID y verificación de temperatura
- Torreta Nerf autónoma DIY: construye una pistola Nerf inteligente con motores paso a paso, cámara y Arduino
- Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
- Librería Completa para Motor Paso a Paso Bipolar en Arduino
- Robot evasor de obstáculos con servo: Construcción con Arduino y HC-SR04
- Deslizador Automático para Tinder y Bumble con Arduino UNO y Motor Paso a Paso
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Circuitos avanzados de control de motor: retención, parada y técnicas de retardo
- Motores Paso a Paso: Tipos, Características y Aplicaciones Prácticas
- Millport SmartLathez 1740 CNC – Precisión y potencia
- Control orientado al campo: clave para rendimiento suave y eficiente de motores EV