Interfaz del módulo controlador de motor CC L298N con Arduino

¿Estás interesado en aprender cómo controlar motores de corriente continua utilizando un módulo L298N y Arduino? En este artículo, te guiaremos a través de la interfaz del módulo controlador L298N con Arduino, enseñándote paso a paso cómo configurar y programar esta potente combinación para controlar tus motores de forma efectiva. ¡Sigue leyendo para descubrir todo lo que necesitas saber para empezar a crear tus propios proyectos de robótica y automatización!

Si bien eventualmente necesitarás aprender a controlar motores de CC para construir tu propio robot, probablemente necesitarás algo un poco más simple para comenzar, y ahí es donde entra en juego el controlador de motor L298N. Puede controlar la velocidad y la dirección de rotación de dos motores de CC.

Además, puede controlar un motor paso a paso bipolar como el NEMA 17. Si quieres obtener más información al respecto, consulta este tutorial.

Interfaz del módulo controlador de motor CC L298N con Arduino
Controle el motor paso a paso con el controlador de motor L298N y Arduino
Si planea ensamblar su nuevo robot, es posible que desee aprender a controlar motores paso a paso. La forma más fácil y económica…

Controlar un motor de corriente continua

Sólo podemos controlar completamente un motor de CC si podemos controlar su velocidad y dirección de rotación. Esto es posible combinando estas dos técnicas.

  • PWM – para controlar la velocidad
  • puente H – para controlar la dirección de giro

Obtenga más información sobre estas técnicas.

PWM – para control de velocidad

La velocidad de un motor de CC se puede controlar cambiando su voltaje de entrada. Una técnica ampliamente utilizada para lograr esto es la modulación de ancho de pulso (PWM).

PWM es una técnica que ajusta el valor promedio del voltaje de entrada enviando una serie de pulsos ON-OFF. Este voltaje promedio es proporcional al ancho de los pulsos, lo que se llama tasa de ocupación.

Cuanto mayor sea el ciclo de trabajo, mayor será el voltaje promedio aplicado al motor de CC, lo que dará como resultado un aumento en la velocidad del motor. Cuanto más corto sea el ciclo de trabajo, menor será el voltaje promedio aplicado al motor de CC, lo que resultará en una reducción en la velocidad del motor.

La siguiente imagen muestra la tecnología PWM con diferentes ciclos de trabajo y voltajes promedio.

Interfaz del módulo controlador de motor CC L298N con Arduino
Tecnología de modulación de ancho de pulso (PWM).

Puente H: para controlar la dirección de giro

La dirección de rotación de un motor de CC se puede controlar cambiando la polaridad de su voltaje de entrada. Una técnica muy utilizada para conseguirlo es utilizar un puente en H.

Un circuito de puente H consta de cuatro interruptores dispuestos en forma de H con el motor en el medio.

Cerrar dos interruptores específicos al mismo tiempo invierte la polaridad del voltaje aplicado al motor. Esto cambia la dirección de rotación del motor.

La siguiente animación muestra cómo funciona el circuito del puente H.

Interfaz del módulo controlador de motor CC L298N con Arduino
Cómo funciona el puente H

Chip controlador de motor L298N

En el medio del módulo hay un chip grande y negro con un disipador de calor grueso: el L298N.

Interfaz del módulo controlador de motor CC L298N con Arduino

El chip L298N contiene dos puentes H estándar que pueden accionar un par de motores de CC, lo que lo hace ideal para construir una plataforma robótica de dos ruedas.

El controlador de motor L298N tiene un rango de suministro de 5 V a 35 V y es capaz de entregar 2 A de corriente continua por canal, por lo que funciona muy bien con la mayoría de nuestros motores de CC.

Especificaciones técnicas

Aquí están las especificaciones:

Tensión de salida del motor 5V – 35V
Voltaje de salida del motor (recomendado) 7V – 12V
Tensión de entrada lógica 5V – 7V
Corriente continua por canal 2A
Pérdida de potencia máxima 25W

Consulte la siguiente hoja de datos para obtener más detalles.

Distribución de pines del módulo controlador de motor L298N

El módulo L298N tiene 11 pines que le permiten comunicarse con el mundo exterior. La asignación de pines es la siguiente:

Interfaz del módulo controlador de motor CC L298N con Arduino

Conozcamos cada pin individualmente.

Pines de alimentación

El módulo controlador de motor L298N se alimenta a través de un terminal de tornillo de 3 pines con paso de 3,5 mm.

Interfaz del módulo controlador de motor CC L298N con Arduino

El controlador de motor L298N tiene dos conexiones de alimentación de entrada: VS y VSS.

contra El pin suministra energía al puente H interno del IC, que impulsa los motores. Este pin acepta voltajes de entrada que van de 5 a 12 V.

VSS se utiliza para alimentar el circuito lógico en el IC L298N y puede estar entre 5 V y 7 V.

Tierra es el pin de tierra común.

pines de salida

Los canales de salida del controlador del motor L298N, OUT1 y OUT2 para el motor A y OUT3 y OUT4 para el motor B se separan con dos terminales de tornillo en un paso de 3,5 mm hasta el borde del módulo. Puede conectar dos motores de 5-12 V CC a estos terminales.

Interfaz del módulo controlador de motor CC L298N con Arduino

Cada canal del módulo puede suministrar hasta 2A al motor DC. Sin embargo, la cantidad de energía suministrada al motor depende de la capacidad de la fuente de alimentación del motor.

Pasadores de control direccional

Los pasadores de control direccional le permiten controlar si el motor gira hacia adelante o hacia atrás. Estos pines en realidad controlan los interruptores del circuito H-Bridge en el chip L298N.

Interfaz del módulo controlador de motor CC L298N con Arduino

El módulo tiene dos pines de control direccional. El EN1 y EN2 Los pasadores controlan la dirección de rotación del motor A; Mientras IN3 y IN4 Controlar la dirección de rotación del motor B.

La dirección de rotación del motor se puede controlar aplicando lógica ALTA (5 V) o lógica BAJA (tierra) a estas entradas. La siguiente tabla muestra varias combinaciones y sus resultados.

Entrada1 Entrada2 dirección de giro
Bajo(0) Bajo(0) Motor apagado
Alto(1) Bajo(0) Adelante
Bajo(0) Alto(1) Hacia atrás
Alto(1) Alto(1) Motor apagado

Pasadores de control de velocidad

Los pasadores de control de velocidad ENA Y ENB Se utilizan para encender/apagar los motores y controlar su velocidad.

Interfaz del módulo controlador de motor CC L298N con Arduino

Tirar de estos pasadores a ALTO hará que los motores giren, mientras que tirarlos a BAJO los detendrá. Sin embargo, la velocidad de los motores se puede controlar mediante modulación de ancho de pulso (PWM).

El módulo suele venir con un puente para estos pines. Cuando este puente esté en su lugar, el motor girará a máxima velocidad. Si desea controlar la velocidad de los motores mediante programación, retire los puentes y conéctelos a los pines habilitados para PWM del Arduino.

Regulador y puente integrados de 5 V.

El módulo contiene un regulador de 5V 78M05, que se puede activar o desactivar mediante un puente.

Interfaz del módulo controlador de motor CC L298N con Arduino

Cuando este puente está en su lugar, el regulador de 5 V está habilitado y la fuente de alimentación lógica (VSS) se deriva de la fuente de alimentación del motor (VS). En este caso, el puerto de entrada de 5 V actúa como un pin de salida y suministra 5 V 0,5 A. Puede usarlo para alimentar un Arduino u otros circuitos que requieran alimentación de 5 V.

Al quitar el jumper el regulador de 5V queda deshabilitado y tenemos que suministrar 5V por separado a través del pin VSS.

Advertencia:

Si la alimentación del motor es inferior a 12V, puede dejar el puente en su lugar. Si el voltaje es superior a 12 V, se debe quitar el puente para evitar daños al regulador integrado de 5 V.

Además, no suministre energía a los pines VSS y VS mientras el puente esté en su lugar.

Caída de voltaje de L298N

El L298N tiene una caída de voltaje de aproximadamente 2 V. Esto se debe al hecho de que los transistores de conmutación internos tienen una caída de voltaje de aproximadamente 1 V cuando están polarizados en directa. Como la corriente tiene que fluir a través de dos transistores en un puente H, la caída de voltaje total es de 2 V.

Entonces, si conecta 12 V al terminal de alimentación del motor, los motores recibirán aproximadamente 10 V. Esto significa que un motor de 12 V CC nunca girará a máxima velocidad.

Interfaz del módulo controlador de motor CC L298N con Arduino

Para que el motor funcione a máxima velocidad, la fuente de alimentación del motor debe tener un voltaje ligeramente mayor (+2 V) que el voltaje real requerido por el motor.

Considerando una caída de voltaje de 2 V, cuando se utilizan motores de 5 V, es necesario proporcionar 7 V en el terminal de alimentación del motor. Si tiene motores de 12 V, el voltaje de suministro del motor debe ser de 14 V.

Esta caída excesiva de voltaje resulta en una pérdida significativa de energía en forma de calor. Por este motivo, los controladores de motor basados ​​en L298N requieren un disipador de calor grande.

Cableado de un módulo controlador de motor L298N a un Arduino

Ahora que sabemos todo sobre el módulo, ¡podemos empezar a conectarlo a nuestro Arduino!

Comencemos conectando la fuente de alimentación del motor. En nuestro experimento, utilizamos motores con engranajes de CC, también llamados motores «TT», que se encuentran comúnmente en robots con tracción en dos ruedas. Están diseñados para 3 a 12 V. Por tanto, conectaremos una fuente de alimentación externa de 12V al puerto VS. Dado que el L298N tiene una caída de voltaje de aproximadamente 2 V, los motores reciben 10 V y giran a una velocidad ligeramente menor. Pero eso esta bien.

A continuación, necesitamos suministrar 5 V al circuito lógico del L298N. Usamos el regulador de 5V integrado para obtener 5V de la fuente de alimentación del motor. Así que deje el puente 5V EN en su lugar.

Ahora conecte los pines de entrada y habilitación del módulo L298N (ENA, IN1, IN2, IN3, IN4 y ENB) a los seis pines de salida digital de Arduino (9, 8, 7, 5, 4 y 3). Tenga en cuenta que los pines de salida 9 y 3 de Arduino son compatibles con PWM.

Finalmente, conecte un motor al terminal A (OUT1 y OUT2) y el otro al terminal B (OUT3 y OUT4). Puede reemplazar las conexiones de su motor. Técnicamente no existe una forma correcta o incorrecta.

Interfaz del módulo controlador de motor CC L298N con Arduino

código de ejemplo de arduino

El siguiente esquema muestra cómo controlar la velocidad y la dirección de rotación de un motor de CC utilizando el controlador de motor L298N y puede servir como base para futuros experimentos y proyectos prácticos.

El boceto mueve el motor en una dirección durante una revolución y luego en la dirección opuesta. También hay algo de aceleración y desaceleración.

Puede producirse un zumbido al acelerar o desacelerar el motor, especialmente con valores de PWM más bajos. Eso es normal; No hay motivo para preocuparse. Esto se debe a que el motor de CC requiere un voltaje mínimo para funcionar.

// Motor A connections
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;

void setup() {
	// Set all the motor control pins to outputs
	pinMode(enA, OUTPUT);
	pinMode(enB, OUTPUT);
	pinMode(in1, OUTPUT);
	pinMode(in2, OUTPUT);
	pinMode(in3, OUTPUT);
	pinMode(in4, OUTPUT);
	
	// Turn off motors - Initial state
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

void loop() {
	directionControl();
	delay(1000);
	speedControl();
	delay(1000);
}

// This function lets you control spinning direction of motors
void directionControl() {
	// Set motors to maximum speed
	// For PWM maximum possible values are 0 to 255
	analogWrite(enA, 255);
	analogWrite(enB, 255);

	// Turn on motor A & B
	digitalWrite(in1, HIGH);
	digitalWrite(in2, LOW);
	digitalWrite(in3, HIGH);
	digitalWrite(in4, LOW);
	delay(2000);
	
	// Now change motor directions
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	delay(2000);
	
	// Turn off motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

// This function lets you control speed of the motors
void speedControl() {
	// Turn on motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, HIGH);
	digitalWrite(in3, LOW);
	digitalWrite(in4, HIGH);
	
	// Accelerate from zero to maximum speed
	for (int i = 0; i < 256; i++) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Decelerate from maximum speed to zero
	for (int i = 255; i >= 0; --i) {
		analogWrite(enA, i);
		analogWrite(enB, i);
		delay(20);
	}
	
	// Now turn off motors
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

Explicación del código:

El código Arduino es bastante simple. No se requieren bibliotecas para su funcionamiento. El boceto comienza declarando los pines de Arduino conectados a los pines de control del L298N.

// Motor A connections
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;

En la sección de configuración del código, todos los pines de control del motor, incluidos los pines de control de dirección y velocidad, están configurados como SALIDA digital. Y los pasadores de control de dirección se bajan para desactivar inicialmente ambos motores.

void setup() {
	// Set all the motor control pins to outputs
	pinMode(enA, OUTPUT);
	pinMode(enB, OUTPUT);
	pinMode(in1, OUTPUT);
	pinMode(in2, OUTPUT);
	pinMode(in3, OUTPUT);
	pinMode(in4, OUTPUT);
	
	// Turn off motors - Initial state
	digitalWrite(in1, LOW);
	digitalWrite(in2, LOW);
	digitalWrite(in3, LOW);
	digitalWrite(in4, LOW);
}

En la sección de bucle del código, llamamos a dos funciones definidas por el usuario con un retraso de un segundo.

void loop() {
	directionControl();
	delay(1000);
	speedControl();
	delay(1000);
}

Estas funciones son:

  • directionControl() – Esta característica hace que ambos motores giren a máxima velocidad durante dos segundos. Luego invierte el sentido de rotación de los motores y gira durante dos segundos. Al final para los motores.

    void directionControl() {
    	// Set motors to maximum speed
    	// For PWM maximum possible values are 0 to 255
    	analogWrite(enA, 255);
    	analogWrite(enB, 255);
    
    	// Turn on motor A & B
    	digitalWrite(in1, HIGH);
    	digitalWrite(in2, LOW);
    	digitalWrite(in3, HIGH);
    	digitalWrite(in4, LOW);
    	delay(2000);
    	
    	// Now change motor directions
    	digitalWrite(in1, LOW);
    	digitalWrite(in2, HIGH);
    	digitalWrite(in3, LOW);
    	digitalWrite(in4, HIGH);
    	delay(2000);
    	
    	// Turn off motors
    	digitalWrite(in1, LOW);
    	digitalWrite(in2, LOW);
    	digitalWrite(in3, LOW);
    	digitalWrite(in4, LOW);
    }
  • speedControl() – Esta función utiliza el escritura analógica() Función para generar una señal PWM que acelera ambos motores desde cero a la velocidad máxima antes de desacelerar de nuevo a cero. Al final para los motores.

    void speedControl() {
    	// Turn on motors
    	digitalWrite(in1, LOW);
    	digitalWrite(in2, HIGH);
    	digitalWrite(in3, LOW);
    	digitalWrite(in4, HIGH);
    	
    	// Accelerate from zero to maximum speed
    	for (int i = 0; i < 256; i++) {
    		analogWrite(enA, i);
    		analogWrite(enB, i);
    		delay(20);
    	}
    	
    	// Decelerate from maximum speed to zero
    	for (int i = 255; i >= 0; --i) {
    		analogWrite(enA, i);
    		analogWrite(enB, i);
    		delay(20);
    	}
    	
    	// Now turn off motors
    	digitalWrite(in1, LOW);
    	digitalWrite(in2, LOW);
    	digitalWrite(in3, LOW);
    	digitalWrite(in4, LOW);
    }
Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Interfaz del módulo controlador de motor CC L298N con Arduino

Si estás pensando en ensamblar tu nuevo robot, eventualmente querrás aprender a controlar motores paso a paso. Sin embargo, para empezar, probablemente necesites algo un poco más fácil, que es donde entra en juego el controlador de motor L298N. Este módulo puede controlar la velocidad y dirección de giro de dos motores de corriente continua.

Control de Motor DC

Solo podemos tener control total sobre un motor DC si podemos controlar su velocidad y dirección de giro. Esto es posible combinando estas dos técnicas.

  1. PWM – para controlar la velocidad
  2. Puente H – para controlar la dirección de giro

PWM – para controlar la velocidad

La velocidad de un motor DC se puede controlar cambiando su voltaje de entrada. Una técnica ampliamente utilizada para lograr esto es la Modulación por Ancho de Pulso (PWM).

La PWM es una técnica en la que el valor promedio del voltaje de entrada se ajusta enviando una serie de pulsos ON-OFF. Este voltaje promedio es proporcional al ancho de los pulsos, que se conoce como Ciclo de Trabajo.

Cuanto mayor sea el ciclo de trabajo, mayor será el voltaje promedio aplicado al motor DC, lo que resultará en un aumento de la velocidad del motor. Cuanto menor sea el ciclo de trabajo, menor será el voltaje promedio aplicado al motor DC, lo que resultará en una disminución de la velocidad del motor.

Puente H – para controlar la dirección de giro

La dirección de giro de un motor DC se puede controlar cambiando la polaridad de su voltaje de entrada. Una técnica ampliamente utilizada para lograr esto es utilizar un Puente H.

Chip controlador de motor L298N

En el centro del módulo se encuentra un gran chip negro con un disipador de calor robusto: el L298N.

El chip L298N contiene dos puentes H estándar capaces de manejar un par de motores DC, lo que lo hace ideal para construir una plataforma robótica de dos ruedas.

Tiene un rango de suministro de 5V a 35V y es capaz de 2A de corriente continua por canal, por lo que funciona muy bien con la mayoría de nuestros motores DC.

Especificaciones Técnicas

  • Voltaje de salida del motor: 5V – 35V
  • Voltaje de salida del motor (Recomendado): 7V – 12V
  • Voltaje de entrada de la lógica: 5V – 7V
  • Corriente continua por canal: 2A
  • Potencia máxima: 25W

Esquema de Pinout del Módulo L298N

El módulo L298N tiene 11 pines que permiten la comunicación con el mundo exterior.

Veamos cada pin uno por uno:

  • Pines de Alimentación: El módulo L298N recibe alimentación de un terminal de tornillo de 3 pines.
    • VS: Potencia el H-Bridge interno del IC, que dirige los motores. Acepta voltajes de entrada que van desde 5V hasta 12V.
    • VSS: Se utiliza para alimentar la lógica dentro del IC L298N, y puede variar entre 5V y 7V.
    • GND: Pin de tierra común.
  • Pines de Salida: Los canales de salida del controlador de motor L298N, OUT1 y OUT2 para el motor A y OUT3 y OUT4 para el motor B, se conectan a dos terminales de tornillo de 3.5mm. Puedes conectar dos motores DC de 5-12V a estos terminales.
    • Cada canal del módulo puede suministrar hasta 2A al motor DC. La cantidad de corriente suministrada al motor, sin embargo, depende de la capacidad de la fuente de alimentación del motor.
  • Pines de Control de Dirección: Los pines de control de dirección te permiten controlar si el motor gira hacia adelante o hacia atrás.
    • El módulo tiene dos pines de control de dirección. Los pines IN1 e IN2 controlan la dirección de giro del motor A; mientras que IN3 e IN4 controlan la dirección de giro del motor B.
  • Pines de Control de Velocidad: Los pines ENA y ENB se utilizan para encender/apagar los motores y controlar su velocidad.
    • Al alimentar estos pines con un nivel lógico ALTO (5V), los motores girarán, mientras que si se les da un nivel lógico BAJO, se detendrán. Sin embargo, con la modulación por ancho de pulso (PWM), la velocidad de los motores puede ser controlada.

Regulador de 5V y Jumper

El módulo incluye un regulador de 5V 78M05 que puede ser habilitado o deshabilitado a través de un jumper.

Ten en cuenta que si la fuente de alimentación del motor es menor a 12V, puedes dejar el jumper en su lugar. Si es mayor a 12V, el jumper debe ser removido para prevenir daños en el regulador de 5V a bordo.

Pérdida de Voltaje del L298N

El L298N tiene una pérdida de voltaje de aproximadamente 2V debido a que los transistores conmutadores internos tienen una pérdida de voltaje de aproximadamente 1V cuando están polarizados hacia adelante, y debido a que un puente H requiere que la corriente pase a través de dos transistores, la pérdida total de voltaje es de 2V.

Por lo tanto, si conectas 12V al terminal de suministro de energía del motor, los motores recibirán aproximadamente 10V. Esto significa que un motor DC de 12V nunca girará a máxima velocidad.

Conexión de un Módulo Controlador L298N a un Arduino

Ahora que conocemos todo sobre el módulo, ¡podemos comenzar a conectarlo a nuestro Arduino!

1 comentario en «Interfaz del módulo controlador de motor CC L298N con Arduino»

Deja un comentario