The L298N is a dual H-bridge motor driver module designed to control the direction and speed of DC motors using Pulse Width Modulation (PWM) signals. It is capable of driving two DC motors simultaneously, making it an ideal choice for robotics, automation, and other motor control applications. The module is robust, easy to use, and supports a wide range of motor voltages and currents, making it suitable for hobbyists and professionals alike.
The L298N module has several pins and terminals for motor control and power input. Below is a detailed description:
Pin/Terminal | Description |
---|---|
VCC |
Motor power supply (5V to 35V). Connect to the motor's power source. |
GND |
Ground connection. Common ground for logic and motor power. |
5V |
Logic power supply (5V). Can be used to power external logic circuits. |
OUT1 |
Output for Motor 1 (connect to one terminal of Motor 1). |
OUT2 |
Output for Motor 1 (connect to the other terminal of Motor 1). |
OUT3 |
Output for Motor 2 (connect to one terminal of Motor 2). |
OUT4 |
Output for Motor 2 (connect to the other terminal of Motor 2). |
Pin | Description |
---|---|
ENA |
Enable pin for Motor 1. Use PWM signal to control speed. |
ENB |
Enable pin for Motor 2. Use PWM signal to control speed. |
IN1 |
Input 1 for Motor 1. Logic HIGH/LOW controls motor direction. |
IN2 |
Input 2 for Motor 1. Logic HIGH/LOW controls motor direction. |
IN3 |
Input 1 for Motor 2. Logic HIGH/LOW controls motor direction. |
IN4 |
Input 2 for Motor 2. Logic HIGH/LOW controls motor direction. |
Power Connections:
VCC
terminal (5V to 35V).GND
terminal.Motor Connections:
OUT1
and OUT2
.OUT3
and OUT4
.Control Connections:
ENA
and ENB
pins to PWM-capable pins on your microcontroller for speed control.IN1
, IN2
, IN3
, and IN4
to digital pins on your microcontroller for direction control.Logic Power:
5V
pin.Below is an example of how to control two DC motors using the L298N and an Arduino UNO.
OUT1
and OUT2
OUT3
and OUT4
ENA
→ Pin 9 (PWM)ENB
→ Pin 10 (PWM)IN1
→ Pin 7IN2
→ Pin 6IN3
→ Pin 5IN4
→ Pin 4// Define control pins for Motor 1
#define ENA 9 // PWM pin for speed control
#define IN1 7 // Direction control pin
#define IN2 6 // Direction control pin
// Define control pins for Motor 2
#define ENB 10 // PWM pin for speed control
#define IN3 5 // Direction control pin
#define IN4 4 // Direction control pin
void setup() {
// Set motor control pins as outputs
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop() {
// Example: Run Motor 1 forward at 50% speed
analogWrite(ENA, 128); // Set speed (0-255)
digitalWrite(IN1, HIGH); // Set direction
digitalWrite(IN2, LOW);
// Example: Run Motor 2 backward at 75% speed
analogWrite(ENB, 192); // Set speed (0-255)
digitalWrite(IN3, LOW); // Set direction
digitalWrite(IN4, HIGH);
delay(2000); // Run motors for 2 seconds
// Stop both motors
analogWrite(ENA, 0);
analogWrite(ENB, 0);
delay(2000); // Wait for 2 seconds
}
Motors Not Running:
ENA
and ENB
pins are receiving PWM signals.Motors Running in the Wrong Direction:
IN1
and IN2
(or IN3
and IN4
) to reverse the direction.Module Overheating:
Noisy Operation:
Q: Can the L298N drive stepper motors?
A: Yes, the L298N can drive stepper motors by controlling the two H-bridges. However, additional logic or libraries may be required for precise stepper motor control.
Q: Can I use the onboard 5V regulator to power my Arduino?
A: Yes, but only if the motor power supply is between 7V and 12V. For higher voltages, use a separate 5V power source.
Q: What happens if I exceed the current rating?
A: The module may overheat, and the built-in thermal shutdown will activate to protect the chip. However, repeated overcurrent conditions can damage the module.