En proyectos de robótica y automatización industrial, el control de la posición y la velocidad es crucial. A diferencia de un motor de corriente continua, el motor paso a paso arduino l298n nos permite girar el eje un número exacto de grados de forma discreta sin necesidad de sensores externos de retroalimentación. En mi trabajo como especialista en hardware en Ecuador, he visto que muchos integradores novatos dañan sus placas por ignorar las corrientes de retorno y las conexiones correctas del puente H. En este tutorial te enseñaré a dominar un motor paso a paso bipolar utilizando el driver L298N.
¿Qué es un motor paso a paso y cuándo usarlo?
Un motor paso a paso (stepper motor) es un motor eléctrico que convierte pulsos eléctricos en movimientos angulares discretos. Esto significa que gira un ángulo determinado (paso) por cada pulso que recibe de control. Por ejemplo, un motor NEMA 17 común tiene un ángulo de paso de 1.8 grados, completando una revolución de 360 grados en 200 pasos. Esta precisión geométrica lo convierte en el componente ideal para impresoras 3D, máquinas CNC, cortadoras láser y brazos robóticos.
Deberías elegir un motor paso a paso cuando requieras posicionamiento angular preciso y par de retención. A diferencia de los servomotores, los motores paso a paso proporcionan un torque alto a bajas velocidades y mantienen su posición firmemente cuando están detenidos. Sin embargo, consumen corriente constante incluso en reposo, lo que genera disipación térmica y requiere un puente H o driver dedicado para manejar la potencia de las bobinas de forma segura.
Diferencia entre motor unipolar y bipolar
Es indispensable identificar la naturaleza del motor paso a paso antes de conectarlo al controlador. Los motores unipolares cuentan con dos bobinas por fase, cada una con una toma central. Físicamente presentan 5 o 6 cables de salida. Son más sencillos de controlar porque no requieren cambiar la polaridad de las bobinas; basta con energizarlas en el orden correcto. Sin embargo, tienen menor par de fuerza en comparación con los bipolares.
Los motores paso a paso bipolares poseen solo una bobina por fase y tienen 4 cables de salida. Para hacerlos girar, el driver debe ser capaz de revertir la dirección de la corriente en las bobinas secuencialmente. Esto requiere un circuito puente H completo (como el L298N) que administre la inversión de voltaje. En mi experiencia, los motores bipolares (ej. NEMA 17) son los más utilizados actualmente en el sector de la impresión 3D debido a su excelente relación tamaño/torque.
Módulo L298N: pinout y características
El L298N es un circuito integrado de doble puente H capaz de manejar cargas inductivas como relés, solenoides y motores de corriente continua o paso a paso. Soporta un voltaje de operación de hasta 46V y una corriente de hasta 2A por canal. El módulo cuenta con un disipador de aluminio para disipar el calor generado por la conmutación interna y un regulador de voltaje LM7805 de 5V integrado.
El pinout del módulo es estructurado: tiene entradas de control (IN1, IN2, IN3, IN4), salidas de potencia hacia las bobinas del motor (OUT1, OUT2, OUT3, OUT4), pines de habilitación (ENA y ENB) que deben tener sus respectivos jumpers colocados para habilitar el puente H, y borneras de conexión para la alimentación externa (+12V, GND y una salida de +5V que provee el regulador interno para alimentar el Arduino si se desea).
Esquema de conexión con Arduino UNO
El conexionado físico de un motor paso a paso bipolar NEMA 17 con Arduino Uno a través del driver L298N requiere conectar los pines lógicos y de potencia de forma separada. Primero, desconecta toda fuente de alimentación externa. Conecta las entradas lógicas IN1, IN2, IN3 e IN4 de la placa L298N a los pines digitales de Arduino Uno 8, 9, 10 y 11 respectivamente. Retira los jumpers de ENA y ENB si deseas controlar la corriente, o déjalos conectados para máxima velocidad.
Para la parte de potencia del motor, identifica las dos fases utilizando un multímetro en modo continuidad. Conecta los dos cables de la Fase A a los terminales OUT1 y OUT2 del driver L298N. Conecta los dos cables de la Fase B a OUT3 y OUT4. Alimenta el driver L298N a través de su bornera de +12V con una fuente de alimentación externa que corresponda a las especificaciones del motor, y conecta el pin GND de la fuente tanto al GND del L298N como al pin GND del Arduino. Esto último es fundamental para compartir la referencia de masa común.
Control de velocidad y dirección
Para programar el motor, la librería nativa Stepper.h es la más utilizada en Arduino. Esta librería gestiona de forma transparente la conmutación de los transistores del L298N. La dirección de rotación se define indicando valores positivos o negativos en la función step() (por ejemplo, myStepper.step(200) gira a la derecha, mientras que myStepper.step(-200) gira a la izquierda).
La velocidad de rotación se configura en RPM con la función setSpeed(RPM). En mi práctica técnica, recomiendo no exceder las 150 RPM en motores paso a paso de imán permanente utilizando el L298N, ya que a altas velocidades la inductancia de las bobinas impide que la corriente suba lo suficientemente rápido, reduciendo el par motor considerablemente y provocando que pierda pasos (stalling).
Código completo para Arduino
A continuación se detalla el firmware necesario para controlar el motor paso a paso. El código simula un ciclo completo de una revolución horario y antihorario:
// Incluimos la libreria estandar para motores paso a paso
#include
// Definimos el numero de pasos por revolucion de nuestro motor (1.8 grados por paso = 200 pasos)
const int pasosPorRevolucion = 200;
// Inicializamos la libreria. Nota importante sobre el orden de pines:
// El orden correcto para puente H de 4 bobinas es IN1, IN3, IN2, IN4
// Esto mapea a los pines de Arduino: 8, 10, 9, 11
Stepper miMotor(pasosPorRevolucion, 8, 10, 9, 11);
void setup() {
// Configura la velocidad del motor en 60 revoluciones por minuto
miMotor.setSpeed(60);
// Inicializamos el puerto serie para diagnosticos
Serial.begin(9600);
Serial.println("Controlador de Motor Paso a Paso Inicializado.");
}
void loop() {
// Girar 1 revolucion completa (200 pasos) en sentido horario
Serial.println("Girando sentido horario...");
miMotor.step(pasosPorRevolucion);
delay(1000); // Esperar 1 segundo detenido
// Girar 1 revolucion completa (-200 pasos) en sentido antihorario
Serial.println("Girando sentido antihorario...");
miMotor.step(-pasosPorRevolucion);
delay(1000); // Esperar 1 segundo detenido
}
Este firmware utiliza la secuencia clásica de 4 pasos para excitar de forma alterna las bobinas lógicas mediante señales en los pines 8, 9, 10 y 11 de Arduino.
Errores comunes y cómo solucionarlos
El error más desastroso en este montaje es confundir los pines lógicos del puente H y cortocircuitar la alimentación. Si el motor solo vibra de adelante hacia atrás o zumba sin llegar a girar, se debe casi con total seguridad a una secuencia de pines incorrecta en la inicialización (Stepper miMotor(200, 8, 9, 10, 11)) o a un cruce entre los cables de las fases A y B. Verifica la resistencia entre cables con un multímetro para asegurar la correcta correspondencia de fases.
Otro fallo común es alimentar el L298N directamente del pin de 5V de la placa Arduino. Los motores paso a paso consumen picos de corriente que exceden los 500mA de salida del puerto USB de la computadora. Esto provocará que el regulador del Arduino se caliente, se active su protección térmica y la placa se reinicie constantemente. Utiliza siempre una fuente externa regulada para la bornera de alimentación del L298N.
Conclusión
El uso del driver L298N con Arduino es la mejor manera de aprender el funcionamiento interno de las secuencias de pasos de los motores paso a paso bipolares. Para implementaciones profesionales o industriales que requieran mayor velocidad o micropasos de alta precisión, te sugiero transicionar a drivers de corriente constante como el A4988 o el TMC2208.
¿Necesitas implementar esto en un proyecto real? Revisa mis servicios de desarrollo o contáctame directamente.