Está en la página 1de 9

Módulo – Driver L298N

¿QUÉ ES UN L298N?
El L298N es un controlador (driver) de motores, que permite encender y
controlar dos motores de corriente continua desde Arduino, variando tanto la
dirección como la velocidad de giro.

El L298N también puede controlar un único motor de paso a paso aunque, en


general, preferiremos usar dispositivos específicamente diseñados para motores paso
a paso.

La corriente máxima que el L298N puede suministrar a los motores es, en


teoría, 2A por salida (hasta 3A de pico) y una tensión de alimentación de 3V a 35V.

Sin embargo, el L298N tiene una eficiencia baja. La electrónica supone una caída
de tensión de unos 3V, es decir, la tensión que recibe el motor es unos 3V inferior a la
tensión de alimentación.

Estas pérdidas se disipan en forma de calor lo que se traduce en que, a efectos


prácticos, es difícil que podamos obtener más de 0.8-1A por fase sin exceder el rango
de temperatura de funcionamiento.

El L298N incorpora protecciones contra efectos que pueden producirse al manejar


motores de corriente continua. Dispone de protecciones contra sobre intensidad,
sobre temperatura, y diodos de protección contra corrientes inducidas (flyback).

El controlador L298N es ampliamente usado en proyectos electrónico y robótica,


por su sencillez de uso, bajo coste, y buena calidad precio.


¿CÓMO FUNCIONA UN L298N?
Básicamente un L298N consiste en dos puentes-H, uno para la salida A y otro
para la salida B.

Un puente-H es un
componente ampliamente
utilizado en electrónica para
alimentar una carga de forma
que podemos invertir el sentido
de la corrienteque le atraviesa.

Internamente un puente-H es
una formación de 4 transistores,
conectados entre Vcc y GND, con la carga a alimentar entre ellos. Dibujado en
esquema el conjunto tiene forma de “H”, de la que recibe su nombre su nombre.

Actuando sobre los 4 transistores, activando los transistores opuestos en diagonal


de cada rama, podemos variar el sentido en el que la corriente atraviesa la carga

Conectando simultáneamente los transistores superiores o inferiores, podemos


poner la carga Vcc o Gnd respectivamente, configuración que usaremos como freno.

Por último, nunca debemos encender ambos transistores de un mismo ramal


(izquierda o derecha), ya que estaremos provocando un cortocircuito entre Vcc y GND.

La placa L298N incorpora electrónica que simplifica la conexión al puente


H, agrupando las conexiones en 3 pines accesibles (por cada salida) y eliminando la
posibilidad de generar un cortorcuito.

Dos de estos pines, IN1 y IN2 (IN3 y IN4 para la salida B), controlan el encendido
de los transistores de cada una de las dos ramas, encendiendo el ramal superior o
inferior de la misma.

El tercer pin (ENA/ENB) desactiva simultáneamente todos los transistores del


puente-H, desconectando la carga por completo.
ESQUEMA MONTAJE

La placa de conexión del L298N incorpora una entrada de voltaje, una serie de
jumpers para configurar el módulo, dos salidas A y B, y los pines de entrada que
regulan la velocidad y el sentido de giro.

La entrada de tensión proporciona el voltaje que alimentará a los motores. El rango


de entrada admisible es de 3V a 35V y se suministra mediante los 2 terminales
izquierdos de la clema de conexión entrada.

El tercer terminal de la clema de conexión, Vlógico, está conectado con la electrónica


del L298N y es necesario que tenga un valor entre 4.5 y 5.5V para que la placa
funcione correctamente.

Para ello el módulo incorpora un regulador de voltaje que suministra la tensión


necesaria en Vlógico. Este regulador puede desactivarse quitando el jumper de la
placa. Desactivaremos el regulador cuando la tensión de alimentación sea inferior a 5V
o superior a 15V.
Por tanto:

 Si el regulador está activado (jumper cerrado) Vlógico es una salida de 5V que


podemos emplear para alimentar otros dispositivos.

 Si el regulador está desactivado (jumper abierto), Vlógico es una entrada a la


que tendremos que proporcionar un voltaje de 4.5 a 5.5V.

No debemos introducir corriente en Vlógico con el regulador activado(jumper


conectado) o podemos dañar el módulo.

Por otro lado, tenemos las dos clemas de conexión A y B que suministran la salida
a los motores.

Por último, tenemos los pines de entrada que controlan la dirección y velocidad


de giro.

 Los pines ENA, IN1 e IN2 controlan la salida A.

 Los pines ENB, IN3 e IN4 controlan la salida B.

Los pines IN1, IN2, y IN3 e IN4, controlan la dirección de giro, respectivamente, de
la salida A y B.

Los pines ENA y ENB desactivan la salida. Podemos conectarlos permanentemente


mediante el uso de un jumper, o conectar una señal PWM para controlar la velocidad
de giro.

En el caso de querer usar ambas fases, y poder elegir tanto el sentido de giro
como la velocidad, y alimentar desde una fuente de 12V, el esquema de conexión a
Arduino sería el siguiente.
Esquema Electrónico Montaje al Arduino

PIN OUT
La alimentación de Arduino en este caso podría realizarse desde la fuente de 12V al pin
Vin de Arduino (usando el regulador de voltaje de Arduino), o desde el pin Vlogico del
L298N al pin 5V de Arduino (usando el regulador del L298N).

Siempre que se use más de una fuente de tensión recordar poner en común todos los
GND incluido el de Arduino. De lo contrario se puede dañar un componente.

EJEMPLOS DE CÓDIGO
Para controlar los dos motores, debemos activar correctamente las salidas
digitales conectadas a los pines IN1 y IN2 (salida A), o los pines IN3 e IN4 (salida B).

Las posibles combinaciones son:

Adelante Atrás Freno

IN1 (o IN3) HIGH LOW LOW

IN2 (o IN4) LOW HIGH LOW

Respecto a los pines ENA y ENB, usaremos una salida PWM para controlar la
velocidad de giro.

CÓDIGO DE EJEMPLO
Movimiento del motor en dos direcciones a máxima velocidad

const int pinIN1 = 7; // Conexión al IN1


const int pinIN2 = 8; // Conexión al IN2

void setup()
{
pinMode(pinIN1, OUTPUT); // Declaración de Salida
pinMode(pinIN2, OUTPUT);

void loop()
{
// Giro hacia adelante por 5 Segundos
digitalWrite(pinIN1, HIGH);
digitalWrite(pinIN2, LOW);
delay(5000);

// Parada de motor
digitalWrite(pinIN1, LOW);
digitalWrite(pinIN2, LOW);
delay(1000);

// Giro hacia atras por 5 Segundos


digitalWrite(pinIN1, LOW);
digitalWrite(pinIN2, HIGH);
delay(5000);

// Parada de motor
digitalWrite(pinIN1, LOW);
digitalWrite(pinIN2, LOW);
delay(1000);
}

Movimiento del motor con control de velocidad

const int pinENA = 6; // Control de Velocidad Pin ENA


const int pinIN1 = 7; // Conexión al IN1
const int pinIN2 = 8; // Conexión al IN2
const int speed = 80; //velocidad de giro 80% (200/255) el Valor varia de 0 a 255

void setup()
{
pinMode(pinIN1, OUTPUT);
pinMode(pinIN2, OUTPUT);
pinMode(pinENA, OUTPUT);
}

void loop()
{
// Giro hacia adelante por 5 Segundos
digitalWrite(pinIN1, HIGH);
digitalWrite(pinIN2, LOW);
analogWrite(pinENA, speed); // Control de Velocidad X
delay(5000);

// Parada de motor
digitalWrite(pinIN1, LOW);
digitalWrite(pinIN2, LOW);
analogWrite(pinENA, speed);
delay(1000);
// Giro hacia atras por 5 Segundos
digitalWrite(pinIN1, LOW);
digitalWrite(pinIN2, HIGH);
analogWrite(pinENA, speed);
delay(5000);

// Parada de motor
digitalWrite(pinIN1, LOW);
digitalWrite(pinIN2, LOW);
analogWrite(pinENA, speed);
delay(1000);
}

Practica
 Controle la velocidad del motor utilizando un potenciómetro
 Controle la velocidad del motor utilizando un Joystick

También podría gustarte