Introducción
El L298N es uno de los controladores de motores más populares y versátiles en el mundo de la electrónica y la robótica. Este módulo permite controlar la velocidad y dirección de motores DC y motores paso a paso, siendo una solución ideal para proyectos con Arduino, Raspberry Pi y otros microcontroladores.
Este artículo proporciona una guía exhaustiva sobre el módulo L298N, cubriendo desde sus especificaciones técnicas hasta aplicaciones prácticas, diagramas de conexión y consejos de implementación para maximizar su rendimiento.
Índice
- ¿Qué es el L298N?
- Especificaciones Técnicas
- Características Principales
- Pinout y Diagrama de Conexiones
- Funcionamiento del Puente H
- Control de Motor DC
- Control de Motor Paso a Paso
- Gestión Térmica
- Protecciones y Diodos
- Ventajas y Desventajas
- Aplicaciones Prácticas
- Conexión con Arduino
- Ejemplos de Código
- Consideraciones de Seguridad
- Solución de Problemas
- Comparativa con Otros Controladores
- Conclusión
¿Qué es el L298N?
El L298N es un circuito integrado de controlador de puente H dual de alta tensión y alta corriente, fabricado por STMicroelectronics. Pertenece a la familia de controladores de motores diseñados para manejar cargas inductivas como relés, solenoides, motores DC y motores paso a paso.
Historia y Evolución
Desarrollado en los años 80, el L298N ha permanecido como un estándar de la industria debido a su robustez, facilidad de uso y amplio soporte en la comunidad de electrónica. Aunque existen controladores más modernos y eficientes, el L298N sigue siendo ampliamente utilizado en proyectos educativos, prototipos y aplicaciones industriales de baja a media potencia.
Arquitectura Interna
El L298N contiene dos puentes H completos en un solo chip, lo que permite controlar independientemente dos motores DC o un motor paso a paso bipolar. Cada puente H está compuesto por cuatro transistores bipolares que permiten dirigir la corriente a través de la carga en ambas direcciones.
Especificaciones Técnicas
Parámetros Eléctricos Principales
| Parámetro | Valor | Unidad |
|---|---|---|
| Tensión de Alimentación (Vs) | 5 V - 46 V | V |
| Tensión de Lógica (Vss) | 4.5 V - 7 V | V |
| Corriente de Salida por Canal (CC) | 2 A | A |
| Corriente de Pico por Canal | 3 A (100 ms) | A |
| Corriente Repetitiva por Canal | 2.5 A (80 % on - 20 % off) | A |
| Tensión de Saturación (Vsat) | 1.5 V - 2.5 V | V |
| Temperatura de Operación | -25 °C a +130 °C | °C |
| Temperatura de Almacenamiento | -40 °C a +150 °C | °C |
| Disipación de Potencia Máxima | 25 W (a 75 °C) | W |
Rango de Tensión de Operación
Tensión de Motor (Vs): 5 V ──────────────── 46 V
│ │
└── Mínimo recomendado: 7 V para motores CC
Tensión de Lógica (Vss): 4.5 V ─────────────── 7 V
│ │
└── El módulo incluye regulador de tensión interno de 5 V
Características del Chip L298N
| Característica | Descripción |
|---|---|
| Tipo de Circuito | Puente H dual completo |
| Tecnología | Transistores bipolares (BJT) |
| Nivel Lógico | TTL compatible (5V) |
| Protecciones | Diodos de protección internos, limitación térmica |
| Empaquetado | Multiwatt15 (TH), PowerSO20 (SMD) |
Variantes del L298
| Variante | Empaquetado | Características |
|---|---|---|
| L298N | Multiwatt15 | Through-hole, disipador externo |
| L298 | PowerSO20 | Surface-mount, disipación por PCB |
| L298D | PowerSO20 | Con diodos de rueda libre internos |
Características Principales
Puente H Dual
El L298N integra dos puentes H completos, permitiendo:
- Control independiente de dos motores DC
- Control de un motor paso a paso bipolar
- Posibilidad de conectar puentes en paralelo para mayor corriente
Control de Dirección y Velocidad
- Dirección: Controlada mediante señales TTL en las entradas IN1-IN4
- Velocidad: Controlada mediante PWM en los pines Enable (ENA, ENB)
- Frenado: Posibilidad de frenado activo conectando ambas entradas al mismo nivel
Regulador de Voltaje Integrado
El módulo L298N incluye un regulador de tensión de 5 V que puede:
- Alimentar la lógica interna del chip
- Alimentar microcontroladores externos (Arduino, etc.)
- Desactivarse mediante jumper para usar alimentación externa de lógica
Indicadores LED
El módulo incluye LEDs de indicación para:
- Estado de alimentación (Power LED)
- Estado de cada canal de salida
- Facilitar diagnóstico y depuración
Diodos de Protección
Aunque el chip L298N tiene diodos de protección básicos, el módulo incluye diodos adicionales para proteger contra:
- Picos de tensión inversa (back-EMF)
- Transientes de conmutación
- Inversión accidental de polaridad
Pinout y Diagrama de Conexiones
Pinout del Chip L298N (Multiwatt15)
Vista Frontal
┌─────────────────────┐
│ L298N │
│ │
1 │ OUT1 OUT4 15│
2 │ OUT2 OUT3 14│
3 │ OUT5 OUT6 13 │
4 │ OUT7 OUT8 12 │
5 │ IN1 IN4 11 │
6 │ IN2 IN3 10 │
7 │ IN5 IN8 9 │
8 │ IN6 IN7 8 │
│ │
│ GND Vs Vss │
│ 15 14 13 │ (Reordenado para claridad)
└─────────────────────┘
Pinout del Módulo L298N
┌────────────────────────────────────────────────────────┐
│ Módulo L298N │
│ │
│ ┌─────────────┐ │
│ │ Disipador │ │
│ │ de Calor │ │
│ └──────┬──────┘ │
│ │ │
│ ┌──────┴──────┐ │
│ │ L298N │ │
│ │ Chip │ │
│ └─────────────┘ │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Motor1 │ │ Motor2 │ │ 5V Out │ │
│ │ Term. │ │ Term. │ │ Term. │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ [ENA] [IN1] [IN2] [IN3] [IN4] [ENB] │
│ │
│ [VCC] [GND] [5V] │
│ │
└────────────────────────────────────────────────────────┘
Terminales del Módulo
| Terminal | Descripción | Conexión |
|---|---|---|
| Motor 1 (+/-) | Salida para Motor DC 1 | Conectar motor al bloque de terminales |
| Motor 2 (+/-) | Salida para Motor DC 2 | Conectar motor al bloque de terminales |
| VCC | Tensión de alimentación del motor | 7 V - 35 V CC (recomendado 12 V) |
| GND | Tierra común | Tierra de fuente y microcontrolador |
| 5V | Salida del regulador de 5 V | Alimentar lógica/microcontrolador (si jumper está puesto) |
| ENA | Enable Motor 1 | PWM para velocidad Motor 1 |
| IN1, IN2 | Input Motor 1 | Control dirección Motor 1 |
| IN3, IN4 | Input Motor 2 | Control dirección Motor 2 |
| ENB | Enable Motor 2 | PWM para velocidad Motor 2 |
Diagrama de Conexiones Completo
┌─────────────────────────────────────────────────────────────────┐
│ Fuente de Alimentación │
│ │
│ ┌──────────────────────┐ │
│ │ Adaptador de 12 V CC │ │
│ │ 2 A mínimo │ │
│ └──────────┬───────────┘ │
│ │ │
└─────────────────────────┼───────────────────────────────────────┘
│
┌─────────┴─────────┐
│ │
┌┴┐ ┌┴┐
│ │ Cable Rojo │ │ Cable Negro
└┬┘ (+) └┬┘ (-)
│ │
┌───────────────┼───────────┬───────┼─────────────────────────────┐
│ │ │ │ Módulo L298N │
│ │ │ │ │
│ ┌────┴─────┐ │ │ ┌─────────────────────┐ │
│ │ VCC │ │ │ │ │ │
│ │ Terminal│ │ │ │ [ENA][IN1][IN2] │ │
│ └──────────┘ │ │ │ [IN3][IN4][ENB] │ │
│ │ │ │ │ │
│ ┌──────┴───────┴───┤ GND 5V VCC │ │
│ │ │ │ │
│ ┌────┴─────┐ │ │ │
│ │ GND │ │ [Motor1] [Motor2] │ │
│ │ Terminal│ │ │ │
│ └──────────┘ └─────────────────────┘ │
│ │ │
└───────────────────┼────────────────────────────────────────────┘
│
┌───────────────────┼────────────────────────────────────────────┐
│ │ Arduino/Microcontrolador │
│ ┌────┴─────┐ │
│ │ 5V │ (Alimentación desde L298N o fuente) │
│ │ Terminal│ │
│ └──────────┘ │
│ │ │
│ ┌────┴─────┐ │
│ │ GND │ (Tierra común con L298N) │
│ │ Terminal│ │
│ └──────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Conexiones de Control │ │
│ │ │ │
│ │ Arduino Pin 10 ─────────────────── ENA (PWM) │ │
│ │ Arduino Pin 7 ─────────────────── IN1 │ │
│ │ Arduino Pin 8 ─────────────────── IN2 │ │
│ │ Arduino Pin 9 ─────────────────── IN3 │ │
│ │ Arduino Pin 6 ─────────────────── IN4 │ │
│ │ Arduino Pin 11 ─────────────────── ENB (PWM) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└───────────────────────────────────────────────────────────────┘
Funcionamiento del Puente H
¿Qué es un Puente H?
Un puente H es un circuito electrónico que permite controlar la dirección de corriente a través de una carga, típicamente un motor. El nombre proviene de la configuración de cuatro interruptores (transistores) dispuestos en forma de "H", con la carga en el centro.
Vs (Tensión de Alimentación)
│
┌────┴────┐
│ │
S1 S3
│ │
┌────┼──Carga──┼────┐
│ │ │ │
│ Motor │ │
│ │ │ │
└────┼───┬─────┼────┘
│ │ │
S2 │ S4
│ │ │
└───┴─────┘
│
GND
Estados del Puente H
| Estado | S1 | S2 | S3 | S4 | Resultado |
|---|---|---|---|---|---|
| Adelante | ON | OFF | OFF | ON | Motor gira hacia adelante |
| Atrás | OFF | ON | ON | OFF | Motor gira hacia atrás |
| Frenado | ON | ON | OFF | OFF | Frenado activo |
| Libre | OFF | OFF | OFF | OFF | Motor en libre |
| Invalid | ON | OFF | ON | OFF | ¡CORTOCIRCUITO! |
Control del L298N
Para el L298N, el control se realiza mediante las entradas lógicas:
Motor 1 (Bridge A):
- IN1 = HIGH, IN2 = LOW → Adelante
- IN1 = LOW, IN2 = HIGH → Atrás
- IN1 = HIGH, IN2 = HIGH → Frenado
- IN1 = LOW, IN2 = LOW → Libre
Motor 2 (Bridge B):
- IN3 = HIGH, IN4 = LOW → Adelante
- IN3 = LOW, IN4 = HIGH → Atrás
- IN3 = HIGH, IN4 = HIGH → Frenado
- IN3 = LOW, IN4 = LOW → Libre
Control de Motor DC
Tabla de Control de Dirección
| IN1 | IN2 | Estado del Motor |
|---|---|---|
| 0 | 0 | Libre |
| 0 | 1 | Atrás |
| 1 | 0 | Adelante |
| 1 | 1 | Frenado |
Control de Velocidad con PWM
La velocidad del motor se controla mediante PWM (Pulse Width Modulation) en los pines Enable:
ENA/ENB = PWM (0-255 en Arduino)
0 = Motor detenido
127 = 50% velocidad
255 = 100% velocidad máxima
Ejemplo de Secuencia de Control
// Forward a 50% velocidad
ENA = PWM(127);
IN1 = HIGH;
IN2 = LOW;
// Reverse a 75% velocidad
ENA = PWM(191);
IN1 = LOW;
IN2 = HIGH;
// Frenado
ENA = PWM(0);
IN1 = HIGH;
IN2 = HIGH;
// Detener (Coast)
ENA = PWM(0);
IN1 = LOW;
IN2 = LOW;
Consideraciones de Velocidad
La velocidad real del motor depende de:
- Duty cycle del PWM (0-100%)
- Tensión de alimentación (Vs)
- Carga mecánica del motor
- Caída de tensión del L298N (~2 V)
Nota: Debido a la caída de tensión interna del L298N (1.5 V - 2.5 V), la tensión efectiva en el motor será menor que la tensión de alimentación.
Control de Motor Paso a Paso
Motor Paso a Paso Bipolar
El L298N puede controlar un motor paso a paso bipolar utilizando ambos puentes H. Un motor paso a paso bipolar tiene dos bobinas que deben ser excitadas en secuencia.
Secuencias de Control
Wave Drive (Onda Simple)
| Paso | IN1 | IN2 | IN3 | IN4 | Bobina Activada |
|---|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 0 | A+ |
| 2 | 0 | 0 | 1 | 0 | B+ |
| 3 | 0 | 1 | 0 | 0 | A- |
| 4 | 0 | 0 | 0 | 1 | B- |
Full Step (Paso Completo)
| Paso | IN1 | IN2 | IN3 | IN4 | Bobinas Activadas |
|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 0 | A+, B+ |
| 2 | 0 | 1 | 1 | 0 | A-, B+ |
| 3 | 0 | 1 | 0 | 1 | A-, B- |
| 4 | 1 | 0 | 0 | 1 | A+, B- |
Half Step (Medio Paso)
| Paso | IN1 | IN2 | IN3 | IN4 | Ángulo |
|---|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 0 | 0° |
| 2 | 1 | 0 | 1 | 0 | 45° |
| 3 | 0 | 0 | 1 | 0 | 90° |
| 4 | 0 | 1 | 1 | 0 | 135° |
| 5 | 0 | 1 | 0 | 0 | 180° |
| 6 | 0 | 1 | 0 | 1 | 225° |
| 7 | 0 | 0 | 0 | 1 | 270° |
| 8 | 1 | 0 | 0 | 1 | 315° |
Conexión del Motor Paso a Paso
Motor Paso a Paso Bipolar
┌─────────────────────────┐
│ │
│ Bobina A: ────┬──── │
│ │ │
│ Bobina B: ────┼──── │
│ │ │
└──────────────────┼──────┘
│
┌─────────────┼─────────────┐
│ │ │
OUT1 │ │ OUT2 │
├──── Motor A ├──── │
OUT3 │ │ OUT4 │
├──── Motor B ├──── │
│ │ │
└─────────────┴─────────────┘
Módulo L298N
Gestión Térmica
Disipación de Calor
El L298N genera calor significativo durante la operación, especialmente a corrientes altas. La disipación de potencia se calcula como:
Pdisipada = Vsat × Imotor
Donde:
Vsat = Tensión de saturación (1.5 V - 2.5 V típico)
Imotor = Corriente del motor
Ejemplo:
Imotor = 1.5 A
Vsat = 2 V
Pdisipada = 2 V × 1.5 A = 3 W por canal
Requisitos del Disipador
| Corriente | Disipador Requerido |
|---|---|
| < 0.5A | Opcional |
| 0.5A - 1A | Pequeño disipador |
| 1A - 2A | Disipador mediano |
| > 2A | Disipador grande + ventilación |
Temperatura de Operación
Tj = Ta + (Pdisipada × RθJA)
Donde:
Tj = Temperatura de unión
Ta = Temperatura ambiente
RθJA = Resistencia térmica (aprox. 30°C/W con disipador)
Ejemplo:
Ta = 25°C
Pdisipada = 3W
RθJA = 30°C/W
Tj = 25°C + (3W × 30°C/W) = 115°C
Mejores Prácticas de Enfriamiento
- Use el disipador incluido: El módulo viene con disipador, úselo siempre
- Asegure buen contacto: Use pasta térmica entre chip y disipador
- Ventilación activa: Agregue ventilador para corrientes >1A
- Espacio de aire: Deje espacio alrededor del disipador
- Monitoree temperatura: Use sensor térmico en aplicaciones críticas
Señales de Sobrecalentamiento
- Reducción de velocidad: El chip reduce rendimiento para protegerse
- Parada repentina: Protección térmica activa
- Olor a quemado: ¡Desconecte inmediatamente!
- Color cambiado: El disipador puede oscurecerse
Protecciones y Diodos
Diodos de Rueda Libre (Freewheeling)
Los motores CC y paso a paso son cargas inductivas que generan picos de tensión inversa (back-EMF) cuando se detienen o cambian de dirección. Estos picos pueden dañar el controlador.
Motor (Carga Inductiva)
┌───────┐
│ │
─────┤ Motor ├─────
│ │
└───────┘
│
│ Cuando el motor se detiene:
│ Genera alto voltaje inverso
▼
Diodos Internos vs Externos
| Característica | L298N | L298D |
|---|---|---|
| Diodos Internos | Básicos | Completos |
| Protección | Limitada | Mejor |
| Recomendación | Agregar externos | Opcional |
Diodos Recomendados para Protección
| Diodo | Corriente | Tensión | Uso |
|---|---|---|---|
| 1N5819 | 1 A | 40 V | Protección básica |
| 1N5822 | 3 A | 40 V | Protección estándar |
| SR340 | 3 A | 40 V | Schottky rápido |
| 1N4007 | 1 A | 1000 V | Protección general |
Configuración de Diodos Externos
Para cada salida del motor:
┌─────────┐
OUT ─┤ ├── Motor
│ L298N │
OUT ─┤ ├── Motor
└─────────┘
│
┌────┴────┐
│ Diodo │ (8 diodos total)
│Schottky │
└─────────┘
Protección contra Inversión de Polaridad
Agregue un diodo en serie con la entrada de alimentación:
Fuente ──┬───[Diodo]─── VCC L298N
│
┌┴┐
│ │ 1N5408 (3A/1000V)
└┬┘
│
GND
Fusibles de Protección
| Ubicación | Valor | Tipo |
|---|---|---|
| Entrada de alimentación | 3A | Lento |
| Salida de cada motor | 2A | Rápido |
| Salida 5V | 1A | Rápido |
Ventajas y Desventajas
Ventajas del L298N
| Ventaja | Descripción |
|---|---|
| Simplicidad | Fácil de usar, control directo con TTL |
| Disponibilidad | Ampliamente disponible, bajo costo |
| Versatilidad | Controla 2 motores DC o 1 paso a paso |
| Robustez | Diseñado para aplicaciones industriales |
| Regulador 5V | Incluye regulador para lógica |
| Documentación | Amplia documentación y ejemplos disponibles |
| Comunidad | Gran soporte en comunidades de electrónica |
Desventajas del L298N
| Desventaja | Descripción |
|---|---|
| Eficiencia | Baja eficiencia debido a transistores bipolares |
| Caída de tensión | 1.5 V - 2.5 V de caída reduce la tensión al motor |
| Calor | Genera mucho calor a corrientes altas |
| Velocidad | Frecuencia de conmutación limitada |
| Tamaño | Módulo relativamente grande |
| Corriente | Limitado a 2A por canal (realmente ~1.5A continuo) |
| Tecnología | Diseño antiguo comparado con drivers MOSFET |
Comparación de Eficiencia
L298N (Transistores BJT):
Eficiencia ≈ (Vmotor / Vs) × 100%
Ejemplo: Vs = 12 V, Vmotor = 10 V
Eficiencia ≈ (10/12) × 100 % = 83 %
Driver MOSFET moderno:
Eficiencia ≈ 95% - 98%
Aplicaciones Prácticas
1. Robot de Ruedas
Propósito: Control de movimiento de robot
Configuración: 2 motores DC en ruedas
Tensión: 12 V para motores, 5 V para Arduino
Corriente: ~500 mA por motor
2. Brazo Robótico
Propósito: Control de actuadores lineales
Configuración: Múltiples motores CC
Tensión: 9 V - 12 V
Corriente: ~1 A por actuador
3. CNC Simple
Propósito: Máquina de control numérico
Configuración: 3 motores paso a paso
Tensión: 12 V - 24 V
Corriente: ~1 A por eje
4. Carrito Seguidor de Línea
Propósito: Robot autónomo
Configuración: 2 motores CC con encoder
Tensión: 7 V - 12 V
Corriente: ~300 mA por motor
5. Sistema de Apertura/Cierre
Propósito: Control de persianas, puertas
Configuración: 1-2 motores CC
Tensión: 12 V
Corriente: ~2 A en carga máxima
6. Plataforma Pan-Tilt
Propósito: Soporte para cámara/sensor
Configuración: 2 motores CC o servos
Tensión: 5 V - 9 V
Corriente: ~200 mA por motor
Conexión con Arduino
Esquema de Conexiones
| L298N | Arduino |
|---|---|
| ENA | Pin 10 (PWM) |
| IN1 | Pin 7 |
| IN2 | Pin 8 |
| IN3 | Pin 9 |
| IN4 | Pin 6 |
| ENB | Pin 11 (PWM) |
| VCC | Fuente externa de 7 V - 35 V |
| GND | GND Arduino + Fuente |
| 5V | 5 V Arduino (opcional) |
Diagrama de Conexiones Arduino
┌─────────────────────────────────────────────────────────┐
│ Arduino Uno │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Pines de Control │ │
│ │ │ │
│ │ 7 ───────────────────── IN1 │ │
│ │ 8 ───────────────────── IN2 │ │
│ │ 9 ───────────────────── IN3 │ │
│ │ 6 ───────────────────── IN4 │ │
│ │ 10 ──────────────────── ENA (PWM) │ │
│ │ 11 ──────────────────── ENB (PWM) │ │
│ │ │ │
│ │ GND ─────────────────── GND (común) │ │
│ │ 5V ─────────────────── 5V (opcional) │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
Configuración del Jumper 5V
Jumper PUESTO:
- El regulador 5V del L298N está activo
- Puede alimentar Arduino desde el terminal 5V
- Use si su fuente es > 7 V
Jumper QUITADO:
- El regulador 5V está desactivado
- Debe alimentar lógica externamente
- Use si su fuente es < 7 V o ya tiene un regulador de 5 V
Ejemplos de Código
Ejemplo 1: Control Básico de Motor DC
// Definición de pines
const int ENA = 10; // PWM velocidad motor 1
const int IN1 = 7; // Dirección motor 1
const int IN2 = 8; // Dirección motor 1
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
}
void loop() {
// Motor adelante a 50% velocidad
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, 127);
delay(2000);
// Detener
analogWrite(ENA, 0);
delay(1000);
// Motor atrás a 50% velocidad
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 127);
delay(2000);
// Detener
analogWrite(ENA, 0);
delay(1000);
}
Ejemplo 2: Control de Dos Motores (Robot)
// Pines Motor 1 (Izquierda)
const int ENA = 10;
const int IN1 = 7;
const int IN2 = 8;
// Pines Motor 2 (Derecha)
const int ENB = 11;
const int IN3 = 9;
const int IN4 = 6;
void setup() {
// Configurar todos los pines como salida
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void adelante(int velocidad) {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, velocidad);
analogWrite(ENB, velocidad);
}
void atras(int velocidad) {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENA, velocidad);
analogWrite(ENB, velocidad);
}
void girarDerecha(int velocidad) {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH); // Motor 1 atrás
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW); // Motor 2 adelante
analogWrite(ENA, velocidad);
analogWrite(ENB, velocidad);
}
void girarIzquierda(int velocidad) {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW); // Motor 1 adelante
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH); // Motor 2 atrás
analogWrite(ENA, velocidad);
analogWrite(ENB, velocidad);
}
void detener() {
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}
void loop() {
adelante(150);
delay(2000);
detener();
delay(500);
girarDerecha(100);
delay(500);
detener();
delay(500);
atras(150);
delay(1000);
detener();
delay(1000);
}
Ejemplo 3: Control de Motor Paso a Paso
// Pines para motor paso a paso
const int IN1 = 7;
const int IN2 = 8;
const int IN3 = 9;
const int IN4 = 6;
// Secuencia full step
int secuencia[4][4] = {
{1, 0, 1, 0}, // Paso 1
{0, 1, 1, 0}, // Paso 2
{0, 1, 0, 1}, // Paso 3
{1, 0, 0, 1} // Paso 4
};
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void step(int direccion) {
for (int i = 0; i < 4; i++) {
int paso = (direccion > 0) ? i : (3 - i);
digitalWrite(IN1, secuencia[paso][0]);
digitalWrite(IN2, secuencia[paso][1]);
digitalWrite(IN3, secuencia[paso][2]);
digitalWrite(IN4, secuencia[paso][3]);
delay(2); // Velocidad de pasos
}
}
void loop() {
// Girar 100 pasos adelante
for (int i = 0; i < 100; i++) {
step(1);
}
delay(1000);
// Girar 100 pasos atrás
for (int i = 0; i < 100; i++) {
step(-1);
}
delay(1000);
}
Consideraciones de Seguridad
Protección de Alimentación
- Verifique polaridad: Siempre confirme + y - antes de conectar
- Use fusible: Proteja contra cortocircuitos
- Tensión adecuada: No exceda los 35 V para una operación segura
- Corriente suficiente: Fuente debe entregar corriente total requerida
Protección de Motores
- Verifique corriente: No exceda 2A por motor
- Use disipador: Siempre con corrientes >0.5A
- Diodos de protección: Agregue diodos Schottky externos
- Monitoree temperatura: Detenga si hay sobrecalentamiento
Protección del Microcontrolador
- Tierra común: Conecte GND de Arduino con GND del L298N
- Aislamiento: Use optoacopladores en aplicaciones industriales
- Voltaje lógico: Verifique 5V TTL compatible
- Corriente de pines: No exceda 40mA por pin de Arduino
Consideraciones Ambientales
- Temperatura: No opere por encima de 85°C ambiente
- Humedad: Use conformal coating en ambientes húmedos
- Vibración: Fije conexiones en aplicaciones móviles
- Polvo: Limpie regularmente en ambientes polvorientos
Solución de Problemas
Problema: Motor no gira
Causas posibles:
- Alimentación incorrecta o invertida
- Jumper 5V en posición incorrecta
- Pines de control mal configurados
- Motor dañado o conectado incorrectamente
Solución:
1. Verifique la tensión en VCC (debe ser de 7 V - 35 V)
2. Verifique polaridad de alimentación
3. Verifique conexión de GND común
4. Verifique estado de pines IN1-IN4
5. Pruebe motor directamente con fuente
Problema: Motor gira lento
Causas posibles:
- Tensión de alimentación baja
- PWM configurado a bajo valor
- Sobrecalentamiento del L298N
- Motor con carga excesiva
Solución:
1. Aumente la tensión de alimentación (máx. 35 V)
2. Aumente el valor de PWM (0-255)
3. Verifique la temperatura del disipador
4. Reduzca la carga mecánica del motor
5. Verifique la caída de tensión en el L298N
Problema: L298N se calienta excesivamente
Causas posibles:
- Corriente del motor demasiado alta
- Sin disipador o disipador inadecuado
- Tensión de entrada muy alta
- Ventilación insuficiente
Solución:
1. Reduzca la corriente del motor (< 2 A)
2. Agregue o mejore el disipador de calor
3. Reduzca la tensión de alimentación si es posible
4. Agregue ventilación activa (ventilador)
5. Use pasta térmica entre el chip y el disipador
Problema: Motor gira en dirección incorrecta
Causas posibles:
- Conexión de motor invertida
- Secuencia de control incorrecta
Solución:
1. Intercambie cables del motor en terminales
2. Invierta lógica de IN1/IN2 o IN3/IN4
3. Verifique tabla de control de dirección
Problema: Arduino se reinicia
Causas posibles:
- Picos de voltaje afectando Arduino
- Tierra no común o mal conectada
- Fuente de alimentación insuficiente
- Ruido eléctrico de motores
Solución:
1. Verifique conexión de GND común
2. Use fuente separada para motores y Arduino
3. Agregue capacitor 100µF cerca de Arduino
4. Use optoacopladores para aislamiento
5. Agregue diodos de protección
Comparativa con Otros Controladores
L298N vs L298D
| Característica | L298N | L298D |
|---|---|---|
| Diodos Internos | Básicos | Completos |
| Protección | Limitada | Mejor |
| Precio | Más bajo | Ligeramente mayor |
| Disponibilidad | Muy alta | Alta |
L298N vs TB6612FNG
| Característica | L298N | TB6612FNG |
|---|---|---|
| Corriente | 2A | 1.2A |
| Tensión | 5 V - 46 V | 2.7 V - 15 V |
| Eficiencia | 80 % - 85 % | 90 % - 95 % |
| Calor | Alto | Bajo |
| Tamaño | Grande | Compacto |
| Precio | Bajo | Moderado |
Cuándo elegir:
- L298N: Voltaje alto, corriente alta, bajo costo
- TB6612FNG: Tamaño compacto, eficiencia, bajo voltaje
L298N vs A4988
| Característica | L298N | A4988 |
|---|---|---|
| Tipo | Motor DC/Paso a paso | Paso a paso solo |
| Corriente | 2A | 2A |
| Control | Dirección/PWM | Microsteping |
| Precio | Bajo | Moderado |
Cuándo elegir:
- L298N: Motores DC, aplicaciones simples
- A4988: Motores paso a paso, precisión
L298N vs DRV8833
| Característica | L298N | DRV8833 |
|---|---|---|
| Corriente | 2A | 1.5A |
| Tensión | 5 V - 46 V | 2.7 V - 10.8 V |
| Tamaño | Grande | Muy pequeño |
| Eficiencia | 80% | 90% |
Cuándo elegir:
- L298N: Tensión alta, robustez
- DRV8833: Tamaño mínimo, baja tensión
Conclusión
El módulo L298N Controlador de Motor representa una solución robusta y accesible para el control de motores en proyectos de electrónica y robótica. A pesar de ser una tecnología antigua, sigue siendo ampliamente utilizado debido a su simplicidad, disponibilidad y bajo costo.
Puntos Clave Recordar:
- Puente H Dual: Controla 2 motores DC o 1 motor paso a paso
- Rango de Tensión: 5 V - 46 V para motores, 4.5 V - 7 V para lógica
- Corriente Máxima: 2 A por canal (recomendado ≤ 1.5 A continuo)
- Caída de Tensión: 1.5 V - 2.5 V debe considerarse en el diseño
- Gestión Térmica: Disipador esencial para corrientes >0.5A
- Protecciones: Agregue diodos externos para mejor protección
- Control Simple: TTL compatible, PWM para velocidad
Recomendaciones Finales:
- Para principiantes: El L298N es ideal para aprender control de motores
- Para proyectos críticos: Considere controladores más modernos (TB6612, DRV8833)
- Para alta corriente: Use disipador grande y monitoree temperatura
- Para baja tensión: Considere alternativas más eficientes
- Para precisión: Use controladores con microstepping para paso a paso
El L298N continúa siendo una excelente opción para proyectos educativos, prototipos y aplicaciones donde la robustez y simplicidad son prioritarias sobre la eficiencia y el tamaño.
Referencias y Recursos Adicionales
Datasheets Oficiales
Tutoriales Relacionados
- Control de motores con Arduino
- Introducción a motores paso a paso
- Gestión térmica en electrónica de potencia
- Diseño de PCB para controladores de motores
Herramientas Útiles
- Calculadora de PWM para velocidad de motor
- Simulador de puentes H
- Calculadora de disipación térmica
