22. Motor paso a paso: posicionador angular
Controla la posición exacta de un motor 28BYJ-48 con un potenciómetro. La base de impresoras 3D, CNC y robots de precisión.
🧰 Lista de materiales
🎯 Qué vas a aprender
La diferencia entre un motor DC (gira, sin saber dónde) y un motor paso a paso (gira en incrementos exactos y conoce su posición). Usarás el driver ULN2003 y mapearás un potenciómetro a un ángulo concreto.
📚 Teoría: pasos y driver ULN2003
Un stepper avanza en pasos discretos energizando sus bobinas en secuencia. El 28BYJ-48 da 2048 medios-pasos por vuelta (con su reductora), o sea ~0,176° por paso: muy preciso. El ULN2003 es un array de transistores que amplifica las señales del Arduino para mover las bobinas (que piden más corriente de la que da un pin).
🔌 Conexiones
| ULN2003 | Conexión |
|---|---|
| IN1–IN4 | D8, D9, D10, D11 |
| VCC motor | Pack 5 V (+) |
| GND | Pack (−) + GND Arduino |
| Motor | conector blanco del 28BYJ-48 |
| Potenciómetro cursor | A0 |
💻 Código completo
// Posicionador con stepper 28BYJ-48 y potenciómetro
#include
const int PASOS_VUELTA = 2048; // 28BYJ-48 con reductora
// orden IN1, IN3, IN2, IN4 (cruzado, típico de esta placa)
Stepper motor(PASOS_VUELTA, 8, 10, 9, 11);
const int PIN_POT = A0;
int posActual = 0;
void setup() {
motor.setSpeed(10); // rpm
}
void loop() {
int lectura = analogRead(PIN_POT);
int objetivo = map(lectura, 0, 1023, 0, PASOS_VUELTA); // posición deseada
int diff = objetivo - posActual;
if (abs(diff) > 5) { // zona muerta para no vibrar
motor.step(diff > 0 ? 1 : -1);
posActual += (diff > 0 ? 1 : -1);
}
} 🛠️ Montaje paso a paso
- Enchufa el motor al conector del ULN2003.
- Cablea IN1–IN4 a D8–D11.
- Alimenta el driver con el pack de 5 V (GND común).
- Conecta el potenciómetro a A0 y sube el sketch.
- Gira el potenciómetro: el eje sigue la posición.
🧩 Resolución de problemas
| Síntoma | Causa | Solución |
|---|---|---|
| Vibra sin girar | Orden de bobinas erróneo | Cambia el orden de pines |
| Gira a tirones | Velocidad alta | Baja setSpeed |
| No se mueve | Sin alimentación de motor | Revisa el pack y el LED del driver |
🚀 Para ir más lejos
- Construye un reloj de agujas o un slider de cámara.
- Controla la posición desde un menú en la OLED.