Tutorial for Monster Motor Shield VNH2SP30





VNH2SP30 is a full bridge motor driver intended for a wide range of automotive applications. The device incorporates a dual monolithic high side driver and two low side switches. The high side driver switch is designed using the STMicroelectronic’s well known and proven proprietary VIPower M0 technology which permits efficient integration on the same die of a true Power MOSFET with an intelligent signal/protection circuitary. The VIN and motor out are pitched for 5mm screw terminals, making it easy to connect larger gauge wires. INA and INB control the direction of each motor, and the PWM pins turns the motors on or off. For the VNH2SP30, the current sense (CS) pins will output approximately 0.13 volts per amp of output current.


  • Voltage Range : 5.5V - 16V
  • Maximum Current rating : 30A
  • Practical Continuous Current: 14 A
  • Current sense output proportional to motor current
  • MOSFET on-resistance: 19 mΩ (per leg)
  • Maximum PWM frequency: 20 kHz
  • Thermal Shutdown
  • Undervoltage and Overvoltage shutdown

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Material Preparation

Before getting started, make sure to prepare all of below:

1. Arduino Uno Board and USB
2. Monster Motor Shield VNH2SP30
3. 2 DC Motor 12V
4. Jumper Wires / Crocodile Clip
5. Adapter / Battery (5.5V - 16V)

Step 2: Pinout Details

Hardware Pinout

A0 : Enable pin for motor 1

A1 : Enable pin for motor 2

A2 : Current sensor for motor 1

A3 : Current sensor for motor 2

D7 : Clockwise (CW) for motor 1

D8 : Counterclockwise (CCW) for motor 1

D4 : Clockwise (CW) for motor 2

D9 : Counterclockwise (CCW) for motor 2

D5 : PWM for motor 1

D6 : PWM for motor 2

Truthtable to make motor to rotate :

Motor 0

STOP : D7 0, D8 0 & D7 1, D7 1
CCW : D7 0, D8 1
CW : D7 1, D8 0

Motor 1

STOP : D4 0, D9 0 & D4 1, D9 1
CCW : D4 0, D9 1
CW : D4 1, D9 0

Step 3: Attach Your Monster Motor Shield VNH2SP30 to Arduino Uno Board

Step 4: Connect DC Motor

Connect Motor 1 to VNH2SP30 Monster Motor Shield VNH2SP30 A1:B1 and Motor 2 to VNH2SP30 Monster Motor Shield A2:B2

Step 5: Power Supply

Connect your Monster Motor Shield VNH2SP30 board to a power supply in range between 5.5V to 16V. We use a 9V power adapter.

Step 6: Assembled Circuit

You will have the whole circuit like this after following previous step. Now, connect your Arduino Uno Board to your computer using the USB.

Step 7: Sample Source Code

This is a sample source code for the circuit, you may download, open and and upload it into your Arduino Uno Board. Make sure to go Tools and select the correct board and port.

Step 8: Serial Monitor

After you have finished compiling the sample source code into your arduino uno board, go to Tools > Serial Monitor and you will get a serial monitor as shown in the picture above.

Step 9: Result

This is the result of this tutorial :

i. when user enter number '2', dc motor start to rotate forward and serial monitor will print forward.
ii. when user enter '3', dc motor start to reverse and serial monitor will print reverse.
iii. when user enter '1', dc motor stop from rotating and serial monitor will print stop.
iv. when user enter '+', dc motor's speed increase by 10 and serial monitor will print the motor's speed. However, dc motor maximum speed is 255, thus, when user enter '++' more it will still print 255 and never more than 255 (as shown in the pic).
v. when user enter '-', dc motor's speed decrease by 10 and serial monitor will print the motor's speed. However, dc motor minimum speed is 0, thus, when user enter '--' more it will still print 0 and never less than 0 (as shown in the pic).

Step 10: Video

This video demonstration show how the DC motor function according to the sample source code.

2 People Made This Project!


  • Indoor Lighting Contest

    Indoor Lighting Contest
  • Make It Fly Challenge

    Make It Fly Challenge
  • Growing Beyond Earth Maker Contest

    Growing Beyond Earth Maker Contest

15 Discussions


2 months ago

Nice tutorial.
But when i send '2', only one motor start. Now when i send '3', both motors start. I don't know what's wrong. :S


5 months ago on Step 7

You need to upload all arduino file not just ino. file. I cant open it.


Tip 6 months ago on Step 7

sabe alguien para que sirve cada una de las lineas de codigo utilizado en el puente H?


7 months ago

Can someone write me a code using VNH2SP30 with Pot to control the speed of the two motors? thanks


Question 7 months ago on Step 9

How I could measure the current , in the code it dosen't coding


Question 11 months ago on Step 2

I’ve got one of these motor drivers and I’m trying to get a source code for a remote control lawnmower I’m building (Arduino Uno R3 Vnh2sp30 full dual motor controller and flysky tx 6078 transmitter the motors are 24 volt 75A) anyone with knowledge where I could achieve this task or could write a code for me would be greatly appreciated


Question 1 year ago on Introduction

How can I use this to control Stepper motor?


1 year ago

will this vnh2sp30 work with a bldc or a gear motor ??? anyone ???


1 year ago

is there any possibility to use switches and potentiometers for direction and speed, I'm new in Arduino and need it for a school project, already thx for any help


1 year ago

do you know how too connect the motor shield too an rc reciever

kind regards Tom Jensen


1 year ago

I connect Li-Po battery with 8V voltage value.

When D7 is HIGH and D8 is LOW there is 8V on A1-B1 pins. But when D7 is LOW and D8 is HIGH there is only 3V. And chip become very hot in a moment.

Whats wrong?


2 years ago

Hi. Thanks for this great tutorial. I am wondering that is there any significant voltage drop between input and output voltage of the driver module for one motor. I want to use this driver for high current applications. Thanks for your reply for now. Good job :D

1 reply

Reply 1 year ago

NevzatT, the solid state part that implements the switch on this board has a very low series resistance (0.019 ohms when in the "on" state). This should allow you to predict how much voltage drop you would get from your high current application. Just multiply the current you are using by 0.019 and you will have the voltage drop. Be aware that the 30 amp rating of this switch is actually for peak, short duration, current flow like a starting current transient in a motor. If you were to run 30 amps continuously, you would cause about 17 watts of power to be dissipated in the switch, which would cause it to overheat and die given the amount of heat sinking is built into this little board. I would guess that you can get away with 5 to 10 amps steady state, but things would be getting quite warm at 10 amps (~2 watts dissipation in switch). I plan on using this for 4 amps steady state on some Peltier Coolers, so I should be OK.


1 year ago

Thanks a lot!

I am trying to connect my VNH2SP30 single motor board to WeMos D1.

But getting errors:

ets Jan 8 2013,rst cause:4, boot mode:(3,6)

wdt reset

load 0x4010f000, len 1384, room 16

tail 8

chksum 0x2d

csum 0x2d



Went through many forums but no success.

Any idea?


2 years ago

Great tutorial. I do needed to interface this shield to an ESP8266 and this tutorial helped me to identify the pinout. Thanks!