

The RoboClaw 2x15A Motor Controller, manufactured by BASICMICRO (Part ID: IMC412), is a dual-channel motor controller designed to drive two DC motors with a maximum continuous current of 15A per channel. It offers advanced control features, including speed and direction control, and supports multiple communication protocols such as USB, TTL serial, RC, and analog inputs. This versatile motor controller is ideal for robotics, automation systems, and other applications requiring precise motor control.








The RoboClaw 2x15A Motor Controller features multiple connectors for power, motor outputs, and communication. Below is a detailed description of the pin configuration:
| Pin Name | Description |
|---|---|
| VIN+ | Positive input voltage (6V to 34V DC). |
| VIN- | Ground connection for input voltage. |
| M1A, M1B | Motor 1 output terminals. |
| M2A, M2B | Motor 2 output terminals. |
| Pin Name | Description |
|---|---|
| S1, S2 | RC signal inputs for motor control. |
| A1, A2 | Analog inputs for motor control. |
| TX, RX | TTL serial communication pins. |
| USB | USB port for PC communication and configuration. |
| ENC1A, ENC1B | Encoder inputs for Motor 1. |
| ENC2A, ENC2B | Encoder inputs for Motor 2. |
| Pin Name | Description |
|---|---|
| Status LED | Indicates power and error status. |
| BEC Output | 5V regulated output for powering external devices. |
The RoboClaw can be controlled via TTL serial communication with an Arduino UNO. Below is an example code snippet to control motor speed and direction:
#include <SoftwareSerial.h>
// Define RoboClaw serial pins
#define ROBOCLAW_RX 10 // Arduino pin connected to RoboClaw TX
#define ROBOCLAW_TX 11 // Arduino pin connected to RoboClaw RX
// Create a SoftwareSerial object for RoboClaw communication
SoftwareSerial roboclaw(ROBOCLAW_RX, ROBOCLAW_TX);
void setup() {
roboclaw.begin(38400); // Initialize RoboClaw serial communication at 38400 baud
}
void loop() {
// Example: Set Motor 1 to 50% forward speed
sendCommand(128, 0, 64); // Address 128, Command 0 (M1 Forward), Speed 64 (50%)
delay(2000); // Run motor for 2 seconds
// Example: Stop Motor 1
sendCommand(128, 0, 0); // Address 128, Command 0 (M1 Forward), Speed 0
delay(2000); // Wait for 2 seconds
}
// Function to send a command to RoboClaw
void sendCommand(uint8_t address, uint8_t command, uint8_t value) {
roboclaw.write(address); // Send RoboClaw address
roboclaw.write(command); // Send command
roboclaw.write(value); // Send value (speed or direction)
uint16_t checksum = address + command + value; // Calculate checksum
roboclaw.write(checksum & 0xFF); // Send lower byte of checksum
roboclaw.write((checksum >> 8) & 0xFF); // Send upper byte of checksum
}
Motors Not Running:
Overheating:
Communication Errors:
Erratic Motor Behavior:
Q: Can I use the RoboClaw with a Raspberry Pi?
A: Yes, the RoboClaw supports TTL serial communication, which can be interfaced with a Raspberry Pi's UART pins.
Q: What happens if the current exceeds 15A?
A: The RoboClaw has built-in overcurrent protection. If the current exceeds 15A continuously, the controller will throttle or shut down to prevent damage.
Q: How do I update the firmware?
A: Use the BasicMicro Motion Studio software via the USB connection to update the firmware.
Q: Can I control brushless motors with the RoboClaw?
A: No, the RoboClaw is designed for brushed DC motors only.