Introduction: Dual H-Bridge - L298 Breakout Board - Homemade

Picture of Dual H-Bridge - L298 Breakout Board - Homemade

This is my homemade Dual H-Bridge using the IC L298N.

For control DC motors or step Motors ao other purposes just like you need.

Others projects:

Step 1: Hardware and Materials

Picture of Hardware and Materials


1 x perf  board 13x26 holes (3,5 x 7,0 cm)
2 x AK300/3 connector
1 x 8 Header female connector for Arduino
1 x L298N (Multiwatt15)
8 x 1N4001 Diode
2 x 100nF capacitor
2 x 0,47Ohm x 1W Resistor
Wire (green and blue colors)

Step 2: Schematic

Picture of Schematic

This is the basic schematic. It works perfectly.

A more advanced schematic and board for eagle cad, you can download from the link below.

Step 3: 1st Step - Perfboard, Holes Location

Picture of 1st Step - Perfboard, Holes Location

Make a Board with 3,5 x 7,0 cm or 13 x 26 holes.

Locate in this board, all holes that we will use for the components.

Step 4: 2nd Step - Components

Picture of 2nd Step - Components

After sanding and cleaning the board, put all components in it according of the diagram above and schematic.
For this, bend components properly.
Do the soldering for each group of components independently, for example:
diodes first and then connectors and then capacitors and resistors and finally the L298N IC; or in what order you want or you are used to do.

Step 5: 3rd Step - Soldering and Wired Tracks

Picture of 3rd Step - Soldering and Wired Tracks

Following the schematic and diagram above, first of all make all soldered tracks in the bottom layer of the board.
After that, solder the jumper wires making the wired tracks.

Green wires are on the top layer and blue wires are on the bottom layer of the board.

Step 6: 4th Step - Video and Tests

Picture of 4th Step - Video and Tests

This is my first test of the "Dual H-Bridge" homemade, with the IC-L298N in a Breakout Board.

The cart was controlled by bluetooth (using the "Blue Control" application of the Android market).

Each time we hit in the controls (forward or backward) the  DC motor run for 1s, in this way, if we hit twice the motors will run for 2s and so on .
For the left and right, each time we hit the control, the motors will run for 500ms. This temporization can be modified in the program below.

See the entire video for more information; ahh sorry for my English I am studying yet...


#   File:                          BlueTooth_Bot_R1.pde                                            
#   Micro controller:  Arduino UNO ou Teensy++ 2.0     
#   Language:              Wiring / C /Processing /Fritzing / Arduino IDE         
# Objectives:             A bluetooth controlled cart
# Funcionamento:    Just a simple test of the home L298N breakout Board
#   Author:             Marcelo Moraes
#   Date:                13/02/13
#   Place:              Sorocaba - SP - Brazil

This project contains code to the public domain.
The modification is permitted without notice.


// definição de variáveis, constantes e valores

int inA1 = 10; // Pins for the PONTE-H
int inA2 = 11;
int inB1 = 5;
int inB2 = 6;

// Arduino initialization
void setup(){
  // Serial communication initialization
at the beginning motors stopped

// loop principal do programa
void loop(){
  if (Serial.available() > 0){// if serial data are available
    char varC =; // reading the serial port data
    if(varC == 'U'){ // move forward
    if(varC == 'D'){ // move backward
    if(varC == 'C'){ // stopped
    if(varC == 'R'){ // turn right
    if(varC == 'L'){ // turn left

// running motors
void set_motors(int left_speed, int right_speed){
  if(right_speed >= 0 && left_speed >= 0){
    analogWrite(inA1, 0);
    analogWrite(inA2, right_speed);
    analogWrite(inB1, 0);
    analogWrite(inB2, left_speed);
  if(right_speed >= 0 && left_speed < 0){
    left_speed = -left_speed;
    analogWrite(inA1, 0);
    analogWrite(inA2, right_speed);
    analogWrite(inB1, left_speed);
    analogWrite(inB2, 0);
  if(right_speed < 0 && left_speed >= 0){
    right_speed = -right_speed;
    analogWrite(inA1, right_speed);
    analogWrite(inA2, 0);
    analogWrite(inB1, 0);
    analogWrite(inB2, left_speed);
  if(right_speed < 0 && left_speed < 0){
    right_speed = -right_speed;
    left_speed = -left_speed;
    analogWrite(inA1, right_speed);
    analogWrite(inA2, 0);
    analogWrite(inB1, left_speed);
    analogWrite(inB2, 0);


mertmkarakas (author)2017-01-02


I am having trouble with the arduino connections. I am thinking as:

Input1 = A1 in code

Input2 = A2

Input3 = B1

Input4 = B2

What are the Enable A & B for? In the video, I don't see them connected to a pin? How should I connect it to the Arduino? I couldn't see it in the video

RoMeS_ (author)2016-06-14

Hi Marcelo,

Can you do the same shield with single or dual face PCB?

Or generate fritzing file.



SadabM (author)2016-03-21

hello sir is this same as the other modules on web?

AnuragV (author)2015-11-25


Are these capacitors mandatory? Power supply already has the needed capacitors right? is there any specific purpose for these two?


- Anurag.

attila.fulop.77 (author)2015-03-04


If i have a dc motor 24v,do i have to change something or that circuit will work with my motor too?


gorthan (author)2015-01-08

Hello, I have some resistance from 0.47 ohm 0.5W, ceramic capacitors 104Z LK and 1N4007 diodes. They go well? I need 2A output but I have to connect a single port and the power supply from 7.3 V


Gorthan :)

RPihacker (author)2014-10-13

Hi BigDog1971 - excellent job with the H-bridge! Impressive presentation, you clearly worked hard to to share your work in a way people can understand and learn from.

My question is do you know of a micro-controller chip that can be added to the H-bridge motor driver board to provide PWM to control the L298N and take commands from a Raspberry Pi B+.

I am trying to build a Raspberry Pi robot from scratch, meaning the chassis and all support circuits, such as a motor control via an H-bridge are build from plans on perf-board instead of purchased.

So far I have been unable to identify a through the hole mirco-controller that can interface with the Raspberry Pi and provide PWM to the L298N.

Do you have any ideas or recommendations?

Thank you.

PaulG3 (author)RPihacker2014-11-03

Strong recommendation for the Cypress Semiconductor PSoC4 processor. It can output PWM using pure hardware and has a 32bit ARM processor on the same chip. The development boards are $4.

BIGDOG1971 (author)RPihacker2014-10-13


I am so sorry but I do not work with RaspBerry Pi and I do not know how to interconnect with arduino uno neither to the Dual H-Bridge.
So I cannot help you in this matter.



mykiscool (author)2014-03-25

If you aren't doing this for the fun of building, this one is definetely worth buying premade since it is only like $2.00 on ebay if you do a search for lm298n dual h-bridge.

BIGDOG1971 (author)mykiscool2014-03-28

No, I am not doing this for sale, just for fun and to know how it works.


ved.alapati (author)BIGDOG19712014-10-03


Can you please tell me what is the purpose of diodes. I tried using it with

a 1 Amp. DC motor it works fine initially but fails after couple of days.

I was wondering if its to do with diodes. Should I use diodes with higher


Hudaib (author)2014-09-05

i am getting only 0.5 volt on all the output pins.. why its happening? i also changed my l298n to make sure the chip is fine. i am not using the capacitors. any suggestion. thanks in advance

BIGDOG1971 (author)Hudaib2014-09-17

Are you using the external 12V power source?
Check the "sense" pins connections, they must be connected to ground directly or via 0.5Ohm x 2W resistor.
The ground must be common for both +5V and +12V power source.
The capacitors are just for DC voltage decoupling.

This kind of issue is so difficult to check this problem remotely.

I hope I have helped you.

Feel free to send me your questions.

Marcelo Moraes

NickM2 (author)2014-08-26

can u create to me coding to control 2 motor, 1 motor left right and 1 motor forward backward i want use to h-bridge driver pls reply to my email

ishan553 (author)2014-04-14

and can u plz send me the video of how to use them if ur free or plz instruct me because im just 12 years old and what about the other tamiya items

and sorry if i am bothering u

BIGDOG1971 (author)ishan5532014-04-18

Hi Ishan,
Send me an email requesting the code and libraries.
You are not bothering me. Feel free to send me your questions.


Marcelo Moraes

ishan553 (author)2014-04-14

anks for the answer sir

ishan553 (author)2014-04-13

hello i want to ask u if there is any other option for all the tamiya products mainly the gear box in the mobile controll arduino rover(fast and agile )

the instructor is busy so lz can u answer

BIGDOG1971 (author)ishan5532014-04-14

I used to using the "Uniaxial Motor Gear Motor DC3V-6V For Smart Car Chassis". You can bought it from ebay.

I recommend this: (ratio 1:220)


sama12 (author)2014-04-07

Will this circuit work for pololu250:1 motor? and if yes what should be value of the sense resistor with pololu motor.

BIGDOG1971 (author)sama122014-04-08

Sorry Sama

I did not work with this pololu 250:1 motor.
I cannot help you in this case.

But I think yes, it will work
The "sense" resistor must be always 0,47Ohm or short-circuit.

BIGDOG1971 (author)2013-07-28

Hi Javi,

You are right, this H-dual bridge can control 2 DC motors or a 4 pin step motor.
In the instructables above you can found how to work with the H-bridge or in my blog too.
This website is in Portuguese.

If you have a more specific doubt, please send me I will be glad to help you.


Javi Roces (author)2013-07-27

hello! nice work, i think that this is what i was searching for :) but, i miss some pics on how to connect your hbridge and arduinouno, and maybe some other examples of using this little shield :) (both dc motor or step motor -4 pin, i suposse-. Thanks!!

vj01 (author)2013-06-11


i Love this project but im having a bit of a issue i tried to develop this on a pcb using the eagle cad avaliable but for some reason it is still not working for me i followed it exactly ive triple checked everything comparing the schematic but still nothing plz can you help me

thank you

BIGDOG1971 (author)vj012013-06-11

Hi vj01

Sure that I can help you, send me an email with your PCB and I can check it.
I also have a PCB version and I can share it with you.


-Standby (author)2013-05-10

Thanks for the reply i make the schematic on Isis with L293D they are very similar to 298N except the power.

BIGDOG1971 (author)-Standby2013-05-10

I saw your schematic. Great job. This is very useful and I think that is works properly.
Thanks a lot for your contribution.

-Standby (author)2013-05-09

Hello, as a student in electronics i will give you one tip for saving more pins on your AVR, use an 74LS04 logic inverter on inputs : when in1 is High in2 is Low and vice versa.
If i have some time i will send you the schematic.

BIGDOG1971 (author)-Standby2013-05-09

Hello, Your comment is very useful. I understand the concept of saving pins using an 74LS04 logic inverter on the input pins.
I am grateful for your comments and gets the hint to everyone; when necessary and when the circuit permits, use the 74LS04 to save pins on the Arduino or other micro-controller.

Send me the schematic when you have some time. If you find it convenient, create an instructable for this tip.



navanod (author)2013-04-12

OK I built this beast today though I would need some help actually wiring up to arduino. Is there any chance someone could give some more details on that side?

BIGDOG1971 (author)navanod2013-04-12

Hi Navanod,

Tell me about what exactly do you want to do. What kind of application you need.

As you saw in the "Bluetooth Bot" example, you must wire the dual H-bridge and Arduino as below.
int inA1 = 10; // Pins from H-Brdige to Arduino
int inA2 = 11;
int inB1 = 5;
int inB2 = 6;

This example is to control two motor in any direction and any speed. In the function "void set_motors(int left_speed, int right_speed)":
DC_motor-A is the right motor;
DC_motor-B is the left motor;

(0,0) - means that both DC_motors will be stopped
(255,0) - means that the DC_motor-B will have maximum speed and DC_motor-A will be stopped (motor B will be running in clockwise direction, for example)
(-255,0) - means that the DC_motor-B will have maximum speed and DC_motor-A will be stopped (motor B will be running in counter clockwise direction, for example)
(0,255) - means that the DC_motor-A will have maximum speed and DC_motor-B will be stopped (moto A will be running in clockwise direction, for example)
(0,-255) - means that the DC_motor-A will have maximum speed and DC_motor-B will be stopped (motor A will be running in counter clockwise direction, for example)

I hope this explanation had helped you.

If you have more doubts about this matter, send an email directly.

Best Regards


BIGDOG1971 (author)BIGDOG19712013-04-12


You must put the "enable" pin A and B (of the H-Bridge) to the logical 5V, in order to allow the motors runs.

About This Instructable




Bio: I am 43 years old and I live in Brazil. I am a Telecommunication / Electronics Engineer. Sixteen years acting in the industry of "Telecommunication and ... More »
More by BIGDOG1971:Arduino Propeller Message Display (POV)ARDUINO By Myself Mini-CNC (Plotter)ROVER Bot - The Arduino Bluetooth Controlled Tank
Add instructable to: