VNH2SP30 Single Monster Motor Driver Module

The VNH2SP30 Single Monster Motor Driver Module can drive motors up to 12A sustained with adequate heat...
Vendor: Keszoox
$10.45
$12.71
$10.45

Shipping

The shipping fee depends on your address

Standard: 9-15 business days,fee is down to $3.99

Express: 4-7 business days,fee is down to $5.99

Support Customization

WE'RE READY TO BUILD A CUSTOM PRODUCT FOR YOU.

If you're looking for a custom product, we can help. Kindly contact us via email support@keszoox.com and send us the details for your need, then we'll let you know how we can deliver the right solution.

Built And process your order

We make into production usually Within 1 - 3 Bussiness Days.

Expect customization orders.
VNH2SP30 Single Monster Motor Driver Module

VNH2SP30 Single Monster Motor Driver Module

$12.71 $10.45

VNH2SP30 Single Monster Motor Driver Module

$12.71 $10.45

The VNH2SP30 Single Monster Motor Driver Module can drive motors up to 12A sustained with adequate heat sinking and 6A without a heat sink..

DESCRIPTION

The VNH2SP30 Single Monster Motor Driver Module can drive motors up to 12A sustained with adequate heat sinking and 6A without a heat sink.

PACKAGE INCLUDES:

  • VNH2SP30 Single Monster Motor Module
  • 1 x 40 snappable male header strip
  • 2 x 2-pos 5.08mm screw terminal strip

KEY FEATURES OF VNH2SP30 SINGLE MONSTER MOTOR DRIVER MODULE:

  • Drive 1 DC motor at 5.5 – 16V
  • 30A peak current, 12A sustained with adequate heat sink and 6A with no heat sink.
  • Full H-Bridge with speed control via PWM and direction control
  • Reverse power protection
  • Drive current monitoring capability
  • Diagnostic output to detect thermal shutdown and similar faults.

This module is a 1-channel DC motor driver based on the VNH2SP30-E driver chip.  These devices were originally designed to drive motors in automotive power seats, so they are designed to handle a fair amount of power and can go up to 30A peak and around 12-14A sustained with adequate heat sinking.  Without heat sinking, current should be limited to 6A.

Besides high current handling capability, the device provides the ability to measure motor current and provide fault status.  These are a great choice when you are either using larger motors or just want to take your motor control to the next level over what a more typical driver module can provide.

When used with DC motors, the H-Bridge drive arrangement allows the direction of the rotation of the motors to be changed.  In addition PWM can be used to control the speed of the motors.  This gives full control over the DC motors.

Motor Power Connections

Motor voltage must be between 5.5 – 16V.  The module has reverse power protection via the use of N-Channel MOSFET on the low side of the driver.  5V which comes from the microcontroller is only used for logic pull-ups on the board for the ENABLE pins.

     1 x 2 Terminal (Motor Power)

  • ‘+’ = Motor Vcc which must be between 5.5 and 16V.
  • ‘-‘ = Motor Ground.

Motor Connections

The motor connections are via two screw terminals.  Multiple motors can be driven off the connection as long as the total current stays within bounds and you want the motors to be doing the same thing i.e. same direction and speed.

The wiring of which lead of the motor connects to which terminal is somewhat arbitrary and relative to what you consider forward vs reverse motor operation.  If the motor goes in the opposite direction that you expect, simply reverse the wiring.

     1 x 2 Terminal (Motor)

  • OUTA – Motor ‘-‘ positive lead
  • OUTB – Motor ‘+’ negative lead

Motor Control Pins

The INA and INB pins control the state of the H-Bridge in the device.  The basic modes are to rotate CW, rotate CCW or brake.  The operation is per the table below

INA INB
Forward Direction (CW) HIGH LOW
Reverse Direction (CCW) LOW HIGH
Stopped (Brake to GND) LOW LOW
Stopped (Brake to VCC) HIGH HIGH

CS Current Sense Pins

The analog voltage output provides a representation of the amount of current being drawn by the motor.  Accuracy of the current sensing reading is approximately 10%.  They are less accurate at lower currents such as around 150mA and more accurate at higher currents.  In addition, the reading may vary a bit depending on the direction that the motor is turning as the sensing circuits are different depending on the direction of rotation of the motor.

If used, this output should be connected to an analog input pin.

There is a small 33nF cap on the module to help filter the PWM pulse noise out of the current sense output.  This is inadequate in most cases and the reading may be erratic.  A 1 to 10uF or so capacitor between these pins and ground will usually provide adequate filtering to get reliable readings.

EN/DIAG Pins

These pins serve a dual purpose and are bi-directional.  First they are the Enable pins for the device and are active HIGH.  The module has pull-ups on these pins, so if left unconnected or set as inputs, the drivers will always be enabled.  If the pins are being used to enable/disable the drivers, they need to be driven HIGH to enable the devices.

The second purpose they serve is to indicate a fault such as a thermal shutdown.  If that should occur, the pins are driven LOW by the module.  See the truth table in the datasheet linked below on page 15 for operation of the DIAG function.

OUR EVALUATION RESULTS:

These modules work very well and are straightforward to use for basic motor control.

Our test results for thermal performance vs motor current indicates that 6A is about the most that can be pulled before some heat sinking is applied.  Tmax on the case is 150C.  Below are some thermal results of the case temperature under different loads.

2A = 35C
3A = 50C
4A = 65C
5A = 92C
6A = 115C

If you are familiar with the common L298N motor drivers, the basic control logic is very similar and is easy enough that a library is not needed to implement the software to control them though there are some libraries available up on GitHub if you want to go that route.

It does get a little more tricky when working with the CS (current sensing) and DIAG (Diagnostics) functions.  A review of the datasheet will help in understanding these functions better.  These can be nice to have features for incorporating feedback of the system status into your code.  For instance, you can tell if a motor has been stalled or if the device has gone into thermal shutdown.

The program below illustrates the basic use of this module.  It allows the user to enter commands via the Serial Monitor window to control the functions of the motors.

  • S = Stop motors
  • F = Forward direction
  • R = Reverse direction
  • C = Return the current readings from the motors
  • Pxxx = Sets the PWM speed from 0 (P0) to 255 (P255)
  • P? = Returns the current PWM setting

Note that you can use upper or lower case letters when entering commands.

The pins used are defined in the program, but can be changed as needed for the uC you are using:

Pin 7 = Motor A1
Pin 8 = Motor B1
Pin 5 = Motor PWM.  Needs to be a PWM capable pin
Pin A0 = Diagnostic Output.  Can be any analog pin
Pin A2 = Current Sense.  Can be any analog pin

VNH2SP30 Single Monster Motor Driver Module Example Program

/*
Exercise Monster Motor Mini Module
Uses Serial Monitor window to issue commands for controlling the DC motor
connected to the module
S = Stop
F = Forward
R = Reverse
C = Returns the current reading of the motors
Pxxx (P0 - P255) sets the PWM speed value
P? = Returns the current PWM value
*/
const int BRAKE = 0;
const int CW = 1;
const int CCW = 2;
const int CS_THRESHOLD = 15;

const int MOTOR_A1_PIN = 7;   //Motor control input pins
const int MOTOR_B1_PIN = 8;

const int PWM_MOTOR = 5;      // Motor PWM input pin
const int CURRENT_SENSE = A2; // Current sense pin
const int EN_PIN = A0;        // Enable/Diag pin

int motor_Speed = 150;    //Default motor speed
int motor_State = BRAKE;  // Current motor state
int mot_current = 0;      // Motor current

char readString[4];   // String array to hold PWM value typed in on keyboard
//===============================================================================
//  Initialization
//===============================================================================
void setup() {
  pinMode(MOTOR_A1_PIN, OUTPUT);
  pinMode(MOTOR_B1_PIN, OUTPUT);
  pinMode(PWM_MOTOR, OUTPUT);
      // Uncomment the next 2 lines to use the Enable pins to enable/disable the device.
      // To monitor for fault conditions instead, they would be defined as inputs  
 // pinMode(EN_PIN, OUTPUT);      
 // digitalWrite(EN_PIN, HIGH);  
  
  Serial.begin(9600);           // Initialize serial monitor
  Serial.println("Enter command:");    // Printout commands
  Serial.println("S = STOP");
  Serial.println("F = FORWARD");
  Serial.println("R = REVERSE");
  Serial.println("C = READ MOTOR CURRENT");
  Serial.println("Pxxx = PWM SPEED (P000 - P254)");
  Serial.println("P? = RETURNS CURRENT PWM SPEED");
}
//===============================================================================
//  Main
//===============================================================================
void loop() {
// Just loop while monitoring the serial port and then jump to DoSerial to
// handle incoming characters and act on them
if (Serial.available()) DoSerial();
}
//===============================================================================
//  Subroutine to handle characters typed via Serial Monitor Window
//===============================================================================
void DoSerial()
{
  int index = 0;
  int pwm_Value = 0;
  int mot1_ADC = 0;
  float mot1_voltage = 0.0;
  
  char ch = Serial.read();  // Read the character we know we have
  Serial.println(ch);       // Echo character typed to show we got it

  // Use Switch/Case statement to handle the different commands
  switch (ch) {
  case 'f':   // Motor FORWARD command
  case 'F':   // This fall-through case statement accepts upper and lower case
    motor_State = CW;
    Motor_Cmd(motor_State, motor_Speed);
    Serial.println("Motor Forward");
    break;

  case 'r':   // Motor REVERSE command
  case 'R':
    motor_State = CCW;
    Motor_Cmd(motor_State, motor_Speed);
    Serial.println("Motor Reverse");
    break;

   case 's':   // Motor STOP command
   case 'S':
    motor_State = BRAKE;
    Motor_Cmd(motor_State, 0);
    Serial.println("Motor Stop");
    break;
      
   case 'c':   // Motor Current command
   case 'C':
    mot1_ADC = analogRead(CURRENT_SENSE);
    mot1_voltage = mot1_ADC * (5.0 / 1024);
    Serial.print("Motor 1 Current: ");
    Serial.print (mot1_voltage * 26*100);
    Serial.println (" mA");
    break;

  case 'p':  // Motor SPEED command
  case 'P':
    // This command is a little trickier.  We are looking for a number from 0-255
    // to follow this command so we can set the PWM speed.  If we see a '?'
    // we will report our current speed setting, otherwise we start collecting chars
    // into the readString array.
    delay(2);  // Give time for more characters to arrive.
    for (int i; i<4; i++) readString[i] = ' ';  // Clear string array
    while (Serial.available())  // Read what we get and put into the string array
    {
      char c = Serial.read();
      readString[index] = c;
      index++;
      delay(2);
    }
    readString[3] = ''; // Append null to end of string array to make it a valid string
    index = 0;            // Reset our index back to the start of the string
    if (readString[index] == '?')   // ? means report our current speed setting and exit.
    {
      Serial.print("Current PWM Setting: ");
      Serial.println(motor_Speed);
      break;
    }
    pwm_Value = atoi(readString);  // Try to convert string into integer
    // We assume a 0 value is because of a non-valid input and ignore the command
    if(pwm_Value!=0) {   
      if (pwm_Value > 255) pwm_Value = 255;     // Cap WPM setting at 255
      Serial.println(pwm_Value);        // Echo what we end up with to confirm we got it
      motor_Speed = pwm_Value;
      Motor_Cmd(motor_State, motor_Speed);
    }
    break;
  
  default:
    break;
  }
}
void Motor_Cmd(int direct, int pwm)     //Function that writes to the motors
{
  {
    if(direct == CW)    {
      digitalWrite(MOTOR_A1_PIN, LOW); 
      digitalWrite(MOTOR_B1_PIN, HIGH);
    }
    else if(direct == CCW)    {
      digitalWrite(MOTOR_A1_PIN, HIGH);
      digitalWrite(MOTOR_B1_PIN, LOW);      
    }
    else    {
      digitalWrite(MOTOR_A1_PIN, LOW);
      digitalWrite(MOTOR_B1_PIN, LOW);            
    }
    analogWrite(PWM_MOTOR, pwm); 
  }
}

BEFORE THEY ARE SHIPPED, THESE MODULES ARE:

  • Inspected
  • Basic operation of driver verified
  • Repackaged in quality recloseable ESD bags for safe storage.

Notes: 

  1. None

TECHNICAL SPECIFICATIONS

Operating Ratings
 Voltage range (Vcc)  5.5 – 16VDC
Max current per bridge (peak) 30A
Max current per bridge (sustained) 12-14A (with heat sinking)
 Dimensions
Driver Board (L x W) 55 x 29mm (2.2 x 1.1″)
Datasheet VNH2SP30-E

WE'RE READY TO BUILD A CUSTOM PRODUCT FOR YOU.

Contact us:
Support@keszoox.com
What we can help:
If you're looking for a wire or cable assembly, we can help.
What we need your help next:
Kindly contact us via email support@keszoox.com and send us the details fo your need, then we'll let you know how we can deliver the right solution.

Shipping Policy

All orders are dispatched from our warehouse. The shipments are fully tracked—from our door to yours. Please allow 3-5 business days for your order to be processed in addition to the shipping times below.

Shipping Times

Standard: 9-15 business days. Express: 4-7 business days.

Please note that shipping providers are extremely busy during this time, and some orders might experience a delay on top of usual delivery times. If your order is late, please allow 5-10 days more than indicated in standard shipping times before contacting our customer service. Thank you for your understanding.

Tracking

All orders are 100% tracked. You’ll receive an email with a tracking number and a link to track your parcel once your order leaves our warehouse. Please allow 24-48 hours for the tracking link to start showing shipping information.

Related Products

Recently Viewed Products