Wiring & Driving the L298n H Bridge with 2 to 4 DC Motors

This article has been copied as is from 14 Core.com

 

L298N-Chip-ST-SimiconductorThe L298  H Bridge is base on l298 Chip manufacture by ST Semiconductor. The l298 is an integrated monolithic circuit in a 15 lead multi-watt and power S020 package. It is a high voltage and high current full dual bridge driver designed to accept standard TTL logic level and drive inductive loads such as relays, solenoids and DC stepper motor.

Two enabled inputs are provided to enable or disable the device independently of the input signals. The emitters of the lower transistors of each bridge are connected together and the corresponding external terminal can be use for the connection of external sensing resistor. Additional supply input is provided so that the logic works at lower voltage.

This module has ease to connect and drive a dc motor or stepper motor allows you to easily and intently control two motor up to 2A each in both direction or one stepper motor.

It is excellent for robotics applications and well fit to a microcontroller. It can also be interfaced with simple manual switches, TTL Logic gates and relays. etc

Specification

  • Motor supply: 7 to 24 VDC
  • Control Logic: Standard TTL Logic Level
  • Output Power: Up to 2 A each
  • Enable and Direction Control Pins
  • Heat-Sink
  • Power-On LED indicator
  • 4 Direction LED indicators

There are many model of l298n boards in the market, see the photo below for examples. If you want to build your own, see the schematic diagram below.

L298-DUAL-H-BRIDGE-MOTOR-DRIVER-Type-13

L298n Schematic Diagram

L298-DUAL-H-BRIDGE-MOTOR-DRIVER-Schematics-Diagram

How to control 1, 2, or 4 DC Motors

Wiring and controlling a DC motor is quite easy, you just need to connect each motor to A1-A2, B3-B4 or Out 1-2, Out 3-4 It depends how the L298n board configuration. If your using two motors for a robot you need to ensure that the polarity of the motors is the same on both outputs, otherwise you need to swap them when you set the motors to forward and backward. We need to connect 6 digital output pins on your Arduino. 2 of the pins you need to used PWM(Pulse with Modulation) pins. PWM pins are denoted by symbol (~) next to the pin Number.

Arduino-UNO-R3-Pulse-Modulation-PWM-Symbol.

Connect the Arduino Digital Pins to the L298n Module see our example diagram below, in the diagram we have 4 and 2 DC motors so digital pins D9 D8, D7 and D6 will be connected to IN1, IN2, IN3, and IN4. Then connect Digital 10 to module pin PWM 1 you need to remove the jumper fist plug Digital 5 to module PWM 2. The motor direction is controlled by sending a HIGH or LOW signal to the driver on each channel.

for example Motor A1 and A2 a HIGH to IN1 and LOW to IN2 will cause it to turn in one direction and LOW and HIGH will cause it to turn in other direction. Controlling the Speed of the motor you need to used the PWM(Pulse with Modulation) signal from the digital pin connected to the Arduino enabled pin can. Below are the sample sketch to test and drive the motors with PWM (Pulse with Modulation).

Hardware Details

Screw terminal pin assignments
PinColorNameDescription
1GreenMotor A –Output to Motor A (-)
2GreenMotor A+Output to Motor A (+)
3BlueVMSInput 4-35V motor power supply (+)
4BlueGNDGround (-)
5Blue5V5V regulated power (+)
6GreenMotor B –Output to Motor B (-)
7GreenMotor B+Output to Motor B (+)

Note that the 5V regulated power on pin 5 above is an output when the 5V_EN jumper is in place. Otherwise you must input 5V regulated power at pin 5 so that the circuit can operate properly. Do not enable the onboard 5V regulator if you are supplying more than 16V to motors on pin 3 or the regulator will burn out.

Header pin assignments
PinNameDescription
1ENAInput to enable Motor A
2IN1Input to control Motor A
3IN1Input to control Motor A
4ENAInput to enable Motor B
5IN1Input to control Motor B
6IN2Input to control Motor B

 

Jumpers
NameDescription
5V_ENEnable the onboard 5V regulator
U1Enable Motor A input pin IN2 pull-up resistor (10K)
U2Enable Motor A input pin IN2 pull-up resistor (10K)
U3Enable Motor B input pin IN3 pull-up resistor (10K)
U4Enable Motor B input pin IN4 pull-up resistor (10K)
CSATies the Motor A current sense to ground
CSBTies the Motor B current sense to ground

Note: The CSA and CSB current sense feature is disabled when the jumpers are present. To use the current sense feature, remove the jumpers and attach to the header pins. Leave the jumper connected when not using current sense.

Software

Speed control

The speed of the motors can be adjusted by connecting PWM outputs from your robot’s microcontroller to the ENA and ENB input pins on the motor driver board. The ENA pin controls Motor A and the ENB pin controls Motor B. When these pins are HIGH, power is output to the motor. By using PWM, you are turning power on and off very quickly to adjust the speed of the motor. The longer the PWM duty cycle is, the faster the motor will turn. We recommend always using a PWM duty cycle of 90% or less.

Direction control

The direction that the motors turn is controlled using the IN1, IN2, IN3 and IN4 input pins on the motor driver board. Connect these pins to digital outputs on your robots microcontroller. To make Motor A go forward, set IN1=HIGH and IN2=LOW. To make Motor A go backward set IN1=LOW and IN2=HIGH. The same method is used to control Motor B: set IN3=HIGH and IN4=LOW to o forward and set IN3=LOW and IN4=HIGH to go backwards. Note that “forward” and “backwards” refer to the direction of the motors themselves. If your robot does not move in the expected direction, reverse the motor polarity by swapping the green screw terminals for Motor A + and – and/or Motor B + and -.

Stopping

To remove power from the motors, simply set ENA=LOW for Motor A and ENB=LOW for Motor B. This will result in the motors stopping slowly and naturally from friction. To perform a quick braking operation, set ENA=LOW, IN1=LOW and IN2=LOW for Motor A and ENB=LOW, IN3=LOW and IN4=LOW for Motor B. The motors will come to an instant stop. Here are some handy tables to show the various modes of operation.

Motor Driver Truth Tables

Here are some handy tables to show the various modes of operation.

Motor A truth table
ENAIN1IN2Description
0N/AN/AMotor A is off
100Motor A is stopped (brakes)
101Motor A is on and turning backwards
110Motor A is on and turning forwards
111Motor A is stopped (brakes)

 

Motor B truth table
ENBIN3IN4Description
0N/AN/AMotor B is off
100Motor B is stopped (brakes)
101Motor B is on and turning backwards
110Motor B is on and turning forwards
111Motor B is stopped (brakes)

 

Diagram for Connecting 4 Motor on L298n with Arduino

L298N-Driving-4-DC-Motor-on-Pulse-with-modulation-1

Diagram for Connecting 2 Motor on L298n with Arduino

L298N-Driving-2-DC-Motor-on-Pulse-with-modulation-1

Motor Simulation Sketch Code

Download The L298n Datasheet Here | PDF

Leave your comment
*