Volver al Blog
Electrónica25 de julio de 2026

Guía Completa del Módulo L298N Controlador de Motor

Guía Completa del Módulo L298N Controlador de Motor

A

Administrador

Equipo de Pixelnova

Guía Completa del Módulo L298N Controlador de Motor

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

  1. ¿Qué es el L298N?
  2. Especificaciones Técnicas
  3. Características Principales
  4. Pinout y Diagrama de Conexiones
  5. Funcionamiento del Puente H
  6. Control de Motor DC
  7. Control de Motor Paso a Paso
  8. Gestión Térmica
  9. Protecciones y Diodos
  10. Ventajas y Desventajas
  11. Aplicaciones Prácticas
  12. Conexión con Arduino
  13. Ejemplos de Código
  14. Consideraciones de Seguridad
  15. Solución de Problemas
  16. Comparativa con Otros Controladores
  17. 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ámetroValorUnidad
Tensión de Alimentación (Vs)5 V - 46 VV
Tensión de Lógica (Vss)4.5 V - 7 VV
Corriente de Salida por Canal (CC)2 AA
Corriente de Pico por Canal3 A (100 ms)A
Corriente Repetitiva por Canal2.5 A (80 % on - 20 % off)A
Tensión de Saturación (Vsat)1.5 V - 2.5 VV
Temperatura de Operación-25 °C a +130 °C°C
Temperatura de Almacenamiento-40 °C a +150 °C°C
Disipación de Potencia Máxima25 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ísticaDescripción
Tipo de CircuitoPuente H dual completo
TecnologíaTransistores bipolares (BJT)
Nivel LógicoTTL compatible (5V)
ProteccionesDiodos de protección internos, limitación térmica
EmpaquetadoMultiwatt15 (TH), PowerSO20 (SMD)

Variantes del L298

VarianteEmpaquetadoCaracterísticas
L298NMultiwatt15Through-hole, disipador externo
L298PowerSO20Surface-mount, disipación por PCB
L298DPowerSO20Con 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

TerminalDescripciónConexión
Motor 1 (+/-)Salida para Motor DC 1Conectar motor al bloque de terminales
Motor 2 (+/-)Salida para Motor DC 2Conectar motor al bloque de terminales
VCCTensión de alimentación del motor7 V - 35 V CC (recomendado 12 V)
GNDTierra comúnTierra de fuente y microcontrolador
5VSalida del regulador de 5 VAlimentar lógica/microcontrolador (si jumper está puesto)
ENAEnable Motor 1PWM para velocidad Motor 1
IN1, IN2Input Motor 1Control dirección Motor 1
IN3, IN4Input Motor 2Control dirección Motor 2
ENBEnable Motor 2PWM 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

EstadoS1S2S3S4Resultado
AdelanteONOFFOFFONMotor gira hacia adelante
AtrásOFFONONOFFMotor gira hacia atrás
FrenadoONONOFFOFFFrenado activo
LibreOFFOFFOFFOFFMotor en libre
InvalidONOFFONOFF¡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

IN1IN2Estado del Motor
00Libre
01Atrás
10Adelante
11Frenado

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:

  1. Duty cycle del PWM (0-100%)
  2. Tensión de alimentación (Vs)
  3. Carga mecánica del motor
  4. 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)

PasoIN1IN2IN3IN4Bobina Activada
11000A+
20010B+
30100A-
40001B-

Full Step (Paso Completo)

PasoIN1IN2IN3IN4Bobinas Activadas
11010A+, B+
20110A-, B+
30101A-, B-
41001A+, B-

Half Step (Medio Paso)

PasoIN1IN2IN3IN4Ángulo
11000
2101045°
3001090°
40110135°
50100180°
60101225°
70001270°
81001315°

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

CorrienteDisipador Requerido
< 0.5AOpcional
0.5A - 1APequeño disipador
1A - 2ADisipador mediano
> 2ADisipador 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

  1. Use el disipador incluido: El módulo viene con disipador, úselo siempre
  2. Asegure buen contacto: Use pasta térmica entre chip y disipador
  3. Ventilación activa: Agregue ventilador para corrientes >1A
  4. Espacio de aire: Deje espacio alrededor del disipador
  5. 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ísticaL298NL298D
Diodos InternosBásicosCompletos
ProtecciónLimitadaMejor
RecomendaciónAgregar externosOpcional

Diodos Recomendados para Protección

DiodoCorrienteTensiónUso
1N58191 A40 VProtección básica
1N58223 A40 VProtección estándar
SR3403 A40 VSchottky rápido
1N40071 A1000 VProtecció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ónValorTipo
Entrada de alimentación3ALento
Salida de cada motor2ARápido
Salida 5V1ARápido

Ventajas y Desventajas

Ventajas del L298N

VentajaDescripción
SimplicidadFácil de usar, control directo con TTL
DisponibilidadAmpliamente disponible, bajo costo
VersatilidadControla 2 motores DC o 1 paso a paso
RobustezDiseñado para aplicaciones industriales
Regulador 5VIncluye regulador para lógica
DocumentaciónAmplia documentación y ejemplos disponibles
ComunidadGran soporte en comunidades de electrónica

Desventajas del L298N

DesventajaDescripción
EficienciaBaja eficiencia debido a transistores bipolares
Caída de tensión1.5 V - 2.5 V de caída reduce la tensión al motor
CalorGenera mucho calor a corrientes altas
VelocidadFrecuencia de conmutación limitada
TamañoMódulo relativamente grande
CorrienteLimitado a 2A por canal (realmente ~1.5A continuo)
TecnologíaDiseñ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

L298NArduino
ENAPin 10 (PWM)
IN1Pin 7
IN2Pin 8
IN3Pin 9
IN4Pin 6
ENBPin 11 (PWM)
VCCFuente externa de 7 V - 35 V
GNDGND Arduino + Fuente
5V5 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

  1. Verifique polaridad: Siempre confirme + y - antes de conectar
  2. Use fusible: Proteja contra cortocircuitos
  3. Tensión adecuada: No exceda los 35 V para una operación segura
  4. Corriente suficiente: Fuente debe entregar corriente total requerida

Protección de Motores

  1. Verifique corriente: No exceda 2A por motor
  2. Use disipador: Siempre con corrientes >0.5A
  3. Diodos de protección: Agregue diodos Schottky externos
  4. Monitoree temperatura: Detenga si hay sobrecalentamiento

Protección del Microcontrolador

  1. Tierra común: Conecte GND de Arduino con GND del L298N
  2. Aislamiento: Use optoacopladores en aplicaciones industriales
  3. Voltaje lógico: Verifique 5V TTL compatible
  4. Corriente de pines: No exceda 40mA por pin de Arduino

Consideraciones Ambientales

  1. Temperatura: No opere por encima de 85°C ambiente
  2. Humedad: Use conformal coating en ambientes húmedos
  3. Vibración: Fije conexiones en aplicaciones móviles
  4. Polvo: Limpie regularmente en ambientes polvorientos

Solución de Problemas

Problema: Motor no gira

Causas posibles:

  1. Alimentación incorrecta o invertida
  2. Jumper 5V en posición incorrecta
  3. Pines de control mal configurados
  4. 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:

  1. Tensión de alimentación baja
  2. PWM configurado a bajo valor
  3. Sobrecalentamiento del L298N
  4. 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:

  1. Corriente del motor demasiado alta
  2. Sin disipador o disipador inadecuado
  3. Tensión de entrada muy alta
  4. 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:

  1. Conexión de motor invertida
  2. 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:

  1. Picos de voltaje afectando Arduino
  2. Tierra no común o mal conectada
  3. Fuente de alimentación insuficiente
  4. 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ísticaL298NL298D
Diodos InternosBásicosCompletos
ProtecciónLimitadaMejor
PrecioMás bajoLigeramente mayor
DisponibilidadMuy altaAlta

L298N vs TB6612FNG

CaracterísticaL298NTB6612FNG
Corriente2A1.2A
Tensión5 V - 46 V2.7 V - 15 V
Eficiencia80 % - 85 %90 % - 95 %
CalorAltoBajo
TamañoGrandeCompacto
PrecioBajoModerado

Cuándo elegir:

  • L298N: Voltaje alto, corriente alta, bajo costo
  • TB6612FNG: Tamaño compacto, eficiencia, bajo voltaje

L298N vs A4988

CaracterísticaL298NA4988
TipoMotor DC/Paso a pasoPaso a paso solo
Corriente2A2A
ControlDirección/PWMMicrosteping
PrecioBajoModerado

Cuándo elegir:

  • L298N: Motores DC, aplicaciones simples
  • A4988: Motores paso a paso, precisión

L298N vs DRV8833

CaracterísticaL298NDRV8833
Corriente2A1.5A
Tensión5 V - 46 V2.7 V - 10.8 V
TamañoGrandeMuy pequeño
Eficiencia80%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:

  1. Puente H Dual: Controla 2 motores DC o 1 motor paso a paso
  2. Rango de Tensión: 5 V - 46 V para motores, 4.5 V - 7 V para lógica
  3. Corriente Máxima: 2 A por canal (recomendado ≤ 1.5 A continuo)
  4. Caída de Tensión: 1.5 V - 2.5 V debe considerarse en el diseño
  5. Gestión Térmica: Disipador esencial para corrientes >0.5A
  6. Protecciones: Agregue diodos externos para mejor protección
  7. 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