Código de búsqueda

Uso de un controlador de motor L298N para controlar un motor paso a paso de 4 hilos

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.

L298N motor driver (yellow connector)

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

FabricanteSTMicroelectronics
Número de piezaL298N
Voltaje de lógica/E/S5 V
Tensión de alimentación5-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 PWM1 kHz a 20 kHz
Umbrales lógicos de entrada0.8 V (bajo), 2.0 V (alto)
Caída de tensión / RDrenador-Fuente (en conducción)/ saturación1.5 V máx.
Límites térmicos150 °C máx.
PaqueteDIP-15
Notas / variantesTambién disponible en versiones planas (L298P)

  • AsegurarENAyENBestá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

L298N motor driver (yellow connector)
L298N motor driver (yellow connector)

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 library

Este 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

Imágenes

L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
Nema17_stpper_motor-1
Nema17_stpper_motor-1
Nema17_stpper_motor-2
Nema17_stpper_motor-2
94-Code for One Revolution
Idioma: C++
/*
 Stepper Motor Control - one revolution

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 - 11 of the Arduino.

 The motor should revolve one revolution in one direction, then
 one revolution in the other direction.


 Created 11 Mar. 2007
 Modified 30 Nov. 2009
 by Tom Igoe

 Modified by Ahmad S. for Robojax.com
 on May 19, 2018 at 19:31, in Ajax, Ontario, Canada

 */

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(300);
  // initialize the serial port:
  Serial.begin(9600);
  // L298N for Robojax.com 
  pinMode(2,OUTPUT);// for EN1
  digitalWrite(2,HIGH);// enable EN1
  pinMode(3,OUTPUT);// for EN1
  digitalWrite(3,HIGH); // enable EN2
}

void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

// L298N for Robojax.com 
  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}
95-Code for rotating a stepper motor one step at a time
Idioma: C++
/*
 Stepper Motor Control - one step at a time

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 - 11 of the Arduino.

 The motor will step one step at a time, very slowly. You can use this to
 test that you've got the four wires of your stepper wired to the correct
 pins. If wired correctly, all steps should be in the same direction.

 Use this also to count the number of steps per revolution of your motor,
 if you don't know it. Then plug that number into the oneRevolution
 example to see if you got it right.

 Created 30 Nov. 2009
 by Tom Igoe

 Modified by Ahmad S. for Robojax.com
 on May 19, 2018 at 19:31, in Ajax, Ontario, Canada
 */

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;         // number of steps the motor has taken

void setup() {
  // initialize the serial port:
  Serial.begin(9600);

  // L298N for Robojax.com 
  pinMode(2,OUTPUT);// for EN1
  digitalWrite(2,HIGH);// enable EN1
  pinMode(3,OUTPUT);// for EN1
  digitalWrite(3,HIGH); // enable EN2
}  


void loop() {
  // step one step:
    // L298N for Robojax.com 
  myStepper.step(-1);
  Serial.print("steps:");
  Serial.println(stepCount);
  stepCount++;
  delay(200);
}

Cosas que podrías necesitar

Recursos y referencias

Aún no hay recursos.

Archivos📁

No hay archivos disponibles.