Overview
Cytron MDS40B the Enhanced SmartDrive40 is an upgrade of the MDS40A SmartDrive40, designed to efficiently control medium to high power brushed DC motors. With its capacity to handle up to 80A of peak current for 1 second and 40A continuous current, this motor driver is perfect for applications requiring high power and reliability. Its integration with a microcontroller unit adds smart features like multiple input modes, current limiting, and thermal protection, making it an ideal choice for robotics and automated systems.
Features
The Enhanced SmartDrive40 key component is Its bi-directional control which simplifies the development of differential drive robots, making it a truly plug-and-play experience. The integration of various input modes along with safety features like thermal protection and battery voltage indicators make it a good choice for any high-power motor control application.
- Bi-directional control for single brushed DC motors
- Supports motor voltage from 10V to 45V DC (NO REVERSE POLARITY PROTECTION)
- Maximum current up to 80A peak (1 second), 40A continuously
- Quiet operation with MOSFETs switched at 16 KHz
- Battery indicators for low and over voltage
- Thermal protection for enhanced safety
- Various input modes including RC (Radio Control), Analog, PWM, Simplified Serial and Packetised Serial
- On-board push buttons for manual operation and testing
- Provision to connect a 5V DC fan for faster heat dissipation.
Specifications
Key Specifications:
Input Voltage | 10V to 45V DC |
Current | 40A continuous |
Peak Current | 80A for 1 second |
Logic Level | 3.3V and 5V compatible with Raspberry Pi and Arduino |
PWM Frequency | 20KHz |
Polarity Protection | No |
Test Buttons | Yes |
DIP Switch | Yes |
LED indicators | Run LED, Error LED, Motor LED |
Fan | Provision to connect 5V Fan (FAN NOT INCLUDED) |
Heat Sink | Not required |
Dimensions | Driver Baord 105mm (W) x 106mm(D) x 38mm(H) Base Board 125mm (W) x 107mm (D) x 47mm (H) |
Pinouts & Switches
A / B | Motor termial |
VB+ | Connect to positive terminal of the battery* |
VB- | Connect to negative terminal of the battery* |
GND | Motor 1 direction input |
+5V | 5V Output |
IN1 | Input 1 |
IN2 | Input 2 |
RC1 / RC2 | Inputs for radio control signals |
DIP Switch | To set any one of the input modes (RC, Analog, PWM and Serial) as well as its designated functions. |
Fan | Connect to an external 5V fan for cooling if required. |
* When operating an inductive load, such as a DC brush motor, it's important to use a battery. This is because most power supplies, particularly those with a switching design, have a protection circuit that shuts down upon detecting regenerative current from the motor. In scenarios where a switching power supply is necessary, it's still suggested to connect a battery in parallel. This battery should have the same rated voltage as the power supply to effectively absorb the regenerative current.
DIP Switch Setting
The Enhanced SmartDrive40 is designed with flexibility in mind, featuring four unique input modes: RC, Analog, PWM, and Serial. Below are the settings for the DIP switches corresponding to each mode, as well as the designated functions for their respective input pins.
Connections & Code
Though there are multiple ways to control the the MDS40B motor driver. We will be using the PWM input mode with microcontroller for simplicity.
DIP Switch Setting
Following DIP switch setting puts the motor driver in the PWM mode.
SW No. | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Position | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Power
- VB+: Connect it to the positive terminal of the battery.
- VB- : Connect it to the negative terminal of the battery
WARNING!: NO REVERSE POLARITY PROTECTION
- A/ B: Connect to Motor
- GND: Connect to Arduino board GND ground pin.
- +5V: Do not connect
Signal
Connections for Arduino UNO
- IN1: Connect it to pin D3
- IN2: Connect it to pin D4
Code
Before we move into coding, first we need to install the Cytron Motor Drivers Library written by Cytron Technologies in the Arduino IDE.
You can install this library by directly going to Tools > Manage Libraries which opens the Library Manager. In the library manager search for Cytron Motor Drivers Library using the search bar and click on the install button to install the latest version of the library.
After installtion go to File > Examples > Cytron Motor Drivers Library > select any one example.
We are using the example "PWM_DIR" from the example menu for the code below.
/*******************************************************************************
* THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION. NO WARRANTY AND SUPPORT
* IS APPLICABLE TO THIS SOFTWARE IN ANY FORM. CYTRON TECHNOLOGIES SHALL NOT,
* IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR CONSEQUENTIAL
* DAMAGES, FOR ANY REASON WHATSOEVER.
********************************************************************************
* DESCRIPTION:
*
* This example shows how to drive a motor using the PWM and DIR pins.
* This example only shows how to drive a single motor for simplicity.
* For dual channel motor driver, both channel work the same way.
*
*
* CONNECTIONS:
*
* Arduino D3 - Motor Driver PWM Input
* Arduino D4 - Motor Driver DIR Input
* Arduino GND - Motor Driver GND
*
*
* AUTHOR : Kong Wai Weng
* COMPANY : Cytron Technologies Sdn Bhd
* WEBSITE : www.cytron.io
* EMAIL : [email protected]
*
*******************************************************************************/
#include "CytronMotorDriver.h"
// Configure the motor driver.
CytronMD motor(PWM_DIR, 3, 4); // PWM = Pin 3, DIR = Pin 4.
// The setup routine runs once when you press reset.
void setup() {
}
// The loop routine runs over and over again forever.
void loop() {
motor.setSpeed(128); // Run forward at 50% speed.
delay(1000);
motor.setSpeed(255); // Run forward at full speed.
delay(1000);
motor.setSpeed(0); // Stop.
delay(1000);
motor.setSpeed(-128); // Run backward at 50% speed.
delay(1000);
motor.setSpeed(-255); // Run backward at full speed.
delay(1000);
motor.setSpeed(0); // Stop.
delay(1000);
}
Opps
Sorry, it looks like some products are not available in selected quantity.