Uso de un controlador de motor L298N para controlar un motor paso a paso de 4 hilos
En este tutorial, exploraremos cómo controlar un motor paso a paso de 4 cables usando el controlador de motor L298N junto con un Arduino. El L298N es un versátil controlador de doble puente en H que nos permite controlar la dirección y la velocidad de los motores paso a paso de manera efectiva. Al final de esta guía, tendrás una configuración funcional que podrá girar el motor paso a paso en ambas direcciones y controlar su velocidad mediante un potenciómetro.


Para ayudarte a entender mejor el proceso, te recomiendo ver el vídeo asociado, que proporciona una demostración visual del cableado y la programación (en el vídeo en 01:30).
Hardware explicado
El controlador de motor L298N está diseñado para controlar motores, permitiendo accionarlos tanto hacia adelante como en sentido inverso. Utiliza una configuración en puente H, lo que significa que puede cambiar la polaridad de la tensión aplicada al motor, invirtiendo así su sentido de giro. Este controlador puede manejar una tensión de alimentación de hasta 46 V y una corriente continua de 2 A por canal, lo que lo hace adecuado para muchas aplicaciones.
En nuestra configuración, utilizaremos cuatro pines de control para gestionar el motor paso a paso. Los pines clave sonENAyENB, que deben configurarse en HIGH (5V) para habilitar el controlador. Los pinesIN1,IN2,IN3, yIN4Controlará los estados de los devanados del motor, permitiéndole dar un paso en la dirección deseada.
Detalles de la hoja de datos
| Fabricante | STMicroelectronics |
|---|---|
| Número de pieza | L298N |
| Voltaje de lógica/E/S | 5 V |
| Tensión de alimentación | 5-46 V (VS) |
| Corriente de salida (por canal) | 2 A máx./canal (continuo) |
| Corriente de pico (por canal) | 3 A máx. |
| Guía de frecuencia PWM | 1 kHz a 20 kHz |
| Umbrales lógicos de entrada | 0.8 V (bajo), 2.0 V (alto) |
| Caída de tensión / RDrenador-Fuente (en conducción)/ saturación | 1.5 V máx. |
| Límites térmicos | 150 °C máx. |
| Paquete | DIP-15 |
| Notas / variantes | También disponible en versiones planas (L298P) |
- Asegurar
ENAyENBestán conectados a 5 V para su correcto funcionamiento. - Utilice disipadores de calor adecuados en aplicaciones de alta corriente para evitar el sobrecalentamiento.
- Mantén la masa común entre el Arduino y el controlador del motor.
- Tenga cuidado con la polaridad del cableado para evitar dañar el motor o el controlador.
- Instale condensadores de desacoplo cerca de los pines de alimentación para filtrar el ruido.
- Ajuste la frecuencia PWM según las especificaciones del motor para un rendimiento óptimo.
Instrucciones de cableado

Para cablear el controlador de motor L298N al Arduino y al motor paso a paso, comience conectando la fuente de alimentación. Conecte elVINpin del L298N a tu fuente de alimentación de 12V. A continuación, conecta elGNDConecta el pin del L298N a la masa de tu fuente de alimentación y también a la masa del Arduino.
Ahora, para los pines de control, conecteENAal pin 2 del Arduino yENBal pin 3. A continuación, conectaIN1al pin 8,IN2al pin 9,IN3al pin 10, yIN4al pin 11 del Arduino. Finalmente, conecte los cables del motor paso a paso a los terminales de salida del L298N. Asegúrese de que los dos pares de cables del motor estén conectados correctamente a las salidas.
Ejemplos de código y guía paso a paso
En el código, primero incluimos elStepper.hUna biblioteca para simplificar el control del motor paso a paso. Definimos el número total de pasos por revolución, lo cual es crucial para un movimiento preciso. Los identificadores clave en el código incluyenstepsPerRevolution, que establece el número de pasos necesarios para una rotación completa, ymyStepper, que inicializa el objeto stepper con los pines especificados.
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // initialize the stepper libraryEste fragmento inicializa el motor paso a paso con los pines apropiados. En elsetup()En la función, establecemos la velocidad del motor y habilitamos el controlador poniendo los pines 2 y 3 en HIGH.
void setup() {
myStepper.setSpeed(300); // set the speed at 60 rpm
pinMode(2,OUTPUT); // for EN1
digitalWrite(2,HIGH); // enable EN1
pinMode(3,OUTPUT); // for EN2
digitalWrite(3,HIGH); // enable EN2
}En elloop()En esta función, el motor da una revolución tanto en sentido horario como en sentido antihorario, con una pausa entre ambas. Esto le permite observar el funcionamiento del motor.
void loop() {
myStepper.step(stepsPerRevolution); // step one revolution in one direction
delay(500); // wait half a second
myStepper.step(-stepsPerRevolution); // step one revolution in the other direction
delay(500); // wait half a second
}Este extracto demuestra cómo controlar el motor para que gire en ambas direcciones. El código completo se encuentra debajo del artículo para su referencia.
Demostración / Qué esperar
Una vez que todo esté cableado correctamente y el código cargado, deberías ver el motor paso a paso girar una revolución completa en una dirección, seguida de una revolución completa en la dirección opuesta. Además, si incorporas el potenciómetro para el control de velocidad, ajustarlo cambiará la velocidad de rotación del motor. Ten en cuenta la corriente del motor; al aumentar la velocidad, el motor puede consumir más corriente, lo que puede provocar sobrecalentamiento si no se gestiona adecuadamente (en el video a las 09:45).
Si el motor no gira como se espera, compruebe el cableado para asegurarse de que todas las conexiones estén firmes y correctamente orientadas. Además, verifique que el voltaje de la fuente de alimentación sea apropiado para su motor paso a paso.
Marcas de tiempo del vídeo
- 00:00- Introducción
- 01:30- Explicación del cableado
- 05:00- Resumen del código
- 09:45- Demostración del control motor
Cosas que podrías necesitar
-
Amazonas
-
Amazonas
Recursos y referencias
Aún no hay recursos.
Archivos📁
No hay archivos disponibles.