Monster Moto Dual-Channel Motor Driver VNH2SP30 High-current up to 30A

  • Was  RM72.08 
  • RM53.00

  • Ex Tax: RM50.00
  • Product Code: Monster Dual VNH2SP30
  • Availability: In Stock

This is essentially a ramped up version of motor driver / shield

 

Features

  • VNH2SP30 Full-bridge motor drivers rather than a L298 H-bridge
  • Capable of driving a high-current motors
  • Thermal Shutdown
  • Undervoltage and Overvoltage shutdown
  • Current sensing available to Arduino analog pin
  • Arduino Uno, Mega, DUE & Leo

 

Specification

  • Max. Input Voltage: 16V
  • Max. Current Rating: 30A
  • Practical Continuous Current: 14A
  • MOSFET on-resistance: 19 mΩ per leg
  • Max. PWM Frequency: 20 kHz
  • Weight: 25g
  • Size: 53 x 22mm

 

Packaging Included

  • 1 x Dual VNH2S930 Module
  • 1 x Row of 7-Pin header

 

Note:
When using this board in extreme high-demand applications it may be necessary to improve thermal performance with a heat-sink or fan and to solder the wires directly to the board instead of using a screw terminal (in addition to the myriad other complications present in a high-current system) However,when using the board at currents up to 6A the chips will barely become noticeably warm.
 

PWM: Value between "0" and "255" to control the speed of the motor

 

/*  MONSTER MOTOR SHIELD TEST CODE */

#define MtrBrake 0
#define ClockWise   1
#define CClockWise  2
#define GndBreak 3
#define CounterSenseThresHold 100

/*  VNH2SP30 pin definitions
 xxx[0] controls '1' outputs
 xxx[1] controls '2' outputs */
 
 
int inApin[2] = {7, 4};  // INA Clockwise Controll 
int inBpin[2] = {8, 9}; // INB Counter-clockwise Controll
int pwmpin[2] = {5, 6}; // PWM (Pulse with modulation ) Input
int cspin[2] = {2, 3}; // CS Current sense for analog input
int enpin[2] = {0, 1}; // EN Status of switches output (Analog pin)

int statpin = 13;

void setup()
{
  Serial.begin(9600);
  
  pinMode(statpin, OUTPUT);

  // Initialize digital pins as outputs
  for (int i=0; i<2; i++)
  {
    pinMode(inApin[i], OUTPUT);
    pinMode(inBpin[i], OUTPUT);
    pinMode(pwmpin[i], OUTPUT);
  }
  // Initialize braked
  for (int i=0; i<2; i++)
  {
    digitalWrite(inApin[i], LOW);
    digitalWrite(inBpin[i], LOW);
  }
  // motorGo(0, ClockWise, 255);
  // motorGo(1, CClockWise, 255);
}

void loop()
{
  motorGo(0, ClockWise, 255);
  motorGo(1, CClockWise, 255);
  delay(500);

  motorGo(0, CClockWise, 255);
  motorGo(1, ClockWise, 255);
  delay(500);
  
  if ((analogRead(cspin[0]) < CounterSenseThresHold) && (analogRead(cspin[1]) < CounterSenseThresHold))
    digitalWrite(statpin, HIGH);
}

void motorOff(int motor)
{
  // Initialize the brake
  for (int i=0; i<2; i++)
  {
    digitalWrite(inApin[i], LOW);
    digitalWrite(inBpin[i], LOW);
  }
  analogWrite(pwmpin[motor], 0);
}

/* Monster Motor will set a motor going in a specific direction
 the motor will continue turns in that direction, at that speed
 until told to do otherwise.
 
 Motor: this should be either 0 or 1 will selet which of the two motors to be controlled
 
 Direct Should be between 0 and 3, with the following result
 
 0 - Brake to VCC
 1 - Clock wise
 2 - Counter Clockwise
 3 - Brake to GND
 
PWM (Pulse with Moduleation) should be a value between 0and 1024, higher the number, the faster turns
 
 */
 
void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm)
{
  if (motor <= 1)
  {
    if (direct <=4)
    {
      // Set to INA[motor]
      if (direct <=1)
        digitalWrite(inApin[motor], HIGH);
      else
        digitalWrite(inApin[motor], LOW);

      // Set to INB[motor]
      if ((direct==0)||(direct==2))
        digitalWrite(inBpin[motor], HIGH);
      else
        digitalWrite(inBpin[motor], LOW);

      analogWrite(pwmpin[motor], pwm);
    }
  }
}

 

Related:

 

Monster Moto Single-Channel Motor Driver VNH2SP30 High-current up to 30A

 

Single Channel VNH2SP30

Monster Moto Single-Channel Motor Driver VNH2SP30 High-current up to 30A

 

Write a review

Note: HTML is not translated!
    Bad           Good

Related Products

Tags: Motor Driver