Tutorial for VNH2SP30 Monster Motor Module (Single Channel)





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

For this tutorial, we required these items:

1. VNH2SP30 Monster Motor Module (Single Channel)

2. Arduino Uno Board and USB

3. Plastic Gear Motor

4. Li-Ion Rechargable Battery 7.4V 1200mAh

5. 2x Wire with Crocodile End Clip

Step 2: Hardware Connection

Connect the VNH2SP30 Monster Motor Module (Single Channel) pin to Arduino Uno pin.

5V > 5V


CS > A2

INA > D7

INB > D8

PMW > D5

Step 3: 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 4: 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 5: Results

This is the result of this tutorial :

i. when user enter number '2', gear motor start to rotate forward and serial monitor will print forward.

ii. when user enter '3', gear motor start to reverse and serial monitor will print reverse.

iii. when user enter '+', gear motor's speed increase by 10 and serial monitor will print the motor's speed. However, gear 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).

iv. when user enter '-', gear motor's speed decrease by 10 and serial monitor will print the motor's speed. However, gear 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).

iv. when user enter '1', gear motor stop from rotating and serial monitor will print stop.

Step 6: Video

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

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    5 Discussions


    1 year ago on Step 6


    - i'm using a Nano clone.

    - i'm not controlling a motor, just monitoring D5 with an oscilloscope.

    - i'm seeing a steady square wave on the scope. The controls work-- i can see the PW change when i change speed. Nice!!

    I'm seeing spikes (overshoots) at each edge. Any idea what might cause that?

    Even tho it works, i'm getting error message. Maybe logic bug?

    Begin motor control
    Enter number for control option:
    1. STOP
    2. FORWARD
    3. REVERSE
    Invalid option entered.
    Invalid option entered.
    Invalid option entered.
    Invalid option entered.
    Speed +: 160
    Invalid option entered.
    1 reply

    Reply 6 months ago

    your console inputs end line char. Just select "No line ending" in dropdown and you are fine. The code can be updated to ignore this characters.


    Question 1 year ago

    I wanted to connect 4 of these to control 4 motors on a cnc. I probably only need 3 (since 2 are on the y-axis and I can invert one) but I'm not sure how I can connect to the arduino. Everywhere I look there are only information about connecting a shield to the arduino but even that is only with smaller drivers. Basically, can be done without a shield, driver to arduino?

    1 answer

    Answer 1 year ago

    You can not make a cnc with this , this works with normal dc motor . True you can move back and forward but you will never know were is your "print head". You need 3 steper motor with special drivers for them. For a small one you can use dvd-rw motors with EasyDriver or A4988 or drv8825. Also you don't need shield for these motor drivers, you can connect them wire-to-wire but it will be more easy with a shield. Good luck and have fun :)