The Sabertooth family of DC Brushed Motor Controllers, made by Dimension Engineering, are versatile and very simple to set up as long as you follow the datasheet/instructions. Below, we will run through some example circuits and behaviors.

DataSheets and Product Pages

Sabertooth 2×12:
https://www.dimensionengineering.com/products/sabertooth2x12
https://www.dimensionengineering.com/datasheets/Sabertooth2x12.pdf

Sabertooth 2×25:
https://www.dimensionengineering.com/products/sabertooth2x25
https://www.dimensionengineering.com/datasheets/Sabertooth2x25v2.pdf

Sabertooth 2×32:
https://www.dimensionengineering.com/products/sabertooth2x32
https://www.dimensionengineering.com/datasheets/Sabertooth2x32.pdf

Sabertooth 2×60:
https://www.dimensionengineering.com/products/sabertooth2x60
https://www.dimensionengineering.com/datasheets/Sabertooth2x60.pdf

Connection Guide

All four Sabertooths have the same basic connectivity:

Main Power Input: Connect up to 6S Li or 24V SLA Battery

Motors: Connect Motor 1 to the M1A and M1B. Connect Motor 2 to M2A and M2B.

5V Output: 5V is a regulated 5 volt output. You can use it to power additional circuitry or microcontrollers up to 1 amp.

Logic Ground: The 0V logic ground is connected internally to B-, but can be used with the 5V output to power an external microcontroller or R/C receiver.

Main Signal Inputs: Connect your main analog, R/C or serial signals here.

Sabertooth Block Diagram

Extra Inputs/Outputs

The Sabertooth 2×32 has extra outputs that are specifically intended for wheelchair motors.

The power outputs (P1, P2) can be used to operate electromagnetic brakes. Systems such as wheelchairs often have brakes to prevent rolling away when power is removed. Brakes are also used in CNC machines and automation to hold alignment when power is removed or reduce power consumption. In brakes mode, the brakes automatically disengage when motion is commanded and engage when the motor stops. When using Brakes mode, the P1 output is linked to the M1 motor output, and the P2 output is linked to the M2 motor output.

Additionally, inputs A1 and A2 can be used for extra Serial Control, Limit Switches, Interrupts, or other functionality.

DIP Switches

The DIP Switches configure the different input modes that the Sabertooth supports.

Switches 1 and 2 control the operating mode:

( DIP 1 == ON ) && ( DIP 2 == ON ) => Analog Mode

( DIP 1 == OFF ) && ( DIP 2 == ON ) => R/C Mode (Servo Mode)

( DIP 1 == OFF ) && ( DIP 2 == OFF ) => Simple Serial Mode

( DIP 1 == ON ) && ( DIP 2 == OFF ) => Packet Serial Mode (Except 2×32: USB Mode or USER Mode)

Sabertooth DIP Switches

Servo Mode

The simplest way to send digital instructions to a Sabertooth is using Servo Mode, as most Single Board Computers and Microcontrollers support some kind of Servo Library.

Servo Mode: DIP Switch Configuration

DIP 1: OFF && DIP 2: ON => R/C Control Mode

DIP 3: { ON => Power Supply Mode / Low Voltage Cutoff Disabled || OFF => Battery Mode / Low Voltage Cutoff Enabled }
DIP 4: { ON => Mixed Mode || OFF => Independent Mode }
DIP 5: { ON => Linear Control || OFF = Exponential Control }
DIP 6: { ON => R/C Receiver || OFF => Microcontroller Mode }

DIP 3: Low Voltage Cutoff

In the manuals, this is labeled as “Battery or Power Supply Mode”. However, it is actually a low-voltage battery cutoff.

OFF => Battery => Will cut off at low voltage
ON => Power Supply => Will ignore brown-outs due to motor in-rush

Sabertooth can be used with a variety of battery types and voltages. When running from a battery that can be damaged by deep discharge, such as a lithium polymer or lead acid battery, you should set DIP switch 3 to the battery protect position, which is OFF. When in this position, the Status LED will blink out the number of detected cells, followed by a pause, in a repeated pattern. This is useful to verify that the Sabertooth has detected the correct number of cells. When the battery is depleted, the Sabertooth will stop driving the motors, and the Status and Error LEDs will both blink in sync.

DIP 4: Mixed / Independent

When Switch 4 is in the UP position, Mixed mode is selected. In this mode, the R/C signal fed to the S1 input controls the forward/backwards motion of the vehicle. This is usually connected to the throttle channel of a pistol grip transmitter, or the elevator (spring-loaded stick) channel of a dual stick transmitter. The R/C signal fed to the S2 input controls the turning of the vehicle.

When switch 4 is in the DOWN position, Independent mode is selected. In this mode, the signal fed to the S1 input directly controls Motor 1 (M1A and M1B) and the signal fed to S2 controls Motor 2.

DIP 5: Linear / Exponential

If switch 5 is in the UP position, the response is linear. If switch 5 is in the DOWN position, the response to input signals will be exponential. This softens control around the zero speed point, which is useful for control of vehicles with fast top speeds or fast max turning rates.

DIP 6: R/C Receiver / Microcontroller

If switch 6 is in the UP position, then the Sabertooth is in standard R/C mode. This mode is designed to be used with a hobby-style transmitter and receiver. It automatically calibrates the control center and endpoints to maximize stick usage. It also enables a Timeout Failsafe, which will
shut down the motors if the Sabertooth stops receiving correct signals from the receiver.

If switch 6 is set in the DOWN position, then Microcontroller mode is enabled. This disables the Timeout Failsafe and auto-calibration. This means that the Sabertooth will continue to drive the motor according to the last command until another command is given. If the control link is possible unreliable – like a radio – then this can be dangerous due to the robot not stopping. However, it is extremely convenient if you are controlling the Sabertooth from a microcontroller.
In microcontroller mode, the input pulse ranges are fixed. A 1500us signal is stopped, 1000us is full reverse and 2000us is full forward. To allow
for slower microcontrollers like Basic Stamps, by default there is no timeout in Microcontroller mode

Servo Mode: Microcontroller

By setting the Sabertooth in Microcontroller mode of R/C Control, the Servo library of either Arduino or Raspberry Pi can be used to control the Sabertooth.

DIP Switch Settings:

DIP 1: OFF && DIP 2: ON => R/C Control Mode
DIP 3: OFF => Battery Mode (unless testing with bench power supply)
DIP 4: OFF => Independent Mode
DIP 5: ON => Linear Control
DIP 6: OFF => Microcontroller Mode

Independent mode allows the 2 microcontroller pins direct access to their respective motors, while Linear mode makes the input and output directly correlated in a predictable manner.

The example code below will run both motors from a stop to full forward, then full forward to full reverse (stopping briefly before changing direction), then full reverse to a stop.

Sabertooth Arduino Diagram
/*
DIP switches on Sabertooth:
DIP 1: OFF && DIP 2: ON  => R/C Control Mode
DIP 3: ON => Power Supply Mode (May be set to OFF with battery)
DIP 4: OFF => Independent Mode (S1 = M1, S2 = M2)
DIP 5: ON => Linear Control
DIP 6: OFF => Microcontroller Mode
*/

// include the Servo library
#include <Servo.h>

Servo LeftMotor;   // create a servo object
Servo RightMotor;  // create a servo object

int speed = 1500;

void setup() {
  LeftMotor.attach(9);    // attaches the servo on pin 9 to the servo object for the left motor (S1)
  RightMotor.attach(10);  // attaches the servo on pin 10 to the servo object for the right motor (S2)
}

void loop() {

  for (speed = 1500; speed < 2000; speed++) {

    LeftMotor.writeMicroseconds(speed);
    RightMotor.writeMicroseconds(speed);
    delay(50);
  }

  for (speed = 1999; speed > 1000; speed--) {

    LeftMotor.writeMicroseconds(speed);
    RightMotor.writeMicroseconds(speed);
    delay(50);
  }

  for (speed = 1001; speed < 1501; speed++) {

    LeftMotor.writeMicroseconds(speed);
    RightMotor.writeMicroseconds(speed);
    delay(50);
  }

  delay(1000);
}

Servo Mode: R/C Controller

While this mode is highly unlikely to be used in the labs, it may be useful in your own projects.

DIP Switch Settings:

DIP 1: OFF && DIP 2: ON => R/C Control Mode
DIP 3: OFF => Battery Mode (unless testing with bench power supply)
DIP 4: ON => Mixed Mode
DIP 5: OFF => Exponential Control
DIP 6: ON => R/C Receiver Mode

Mixed mode is used when using the common pistol-grip controller. In this manner, S1 is connected to Channel 1 (the throttle trigger) while S2 is connected to Channel 2 (the steering wheel). Exponential control gives a softer response around the zero points, to avoid sudden jolts.

Sabertooth RC Receiver Disgram
Sabertooth with RC Receiver

Analog Mode

The simplest way to control a Sabertooth is using analog inputs, typically from a potentiometer. However, this is only practical in simple bench testing, as projects using Sabertooths are almost always remote-controlled or autonomous in some fashion rather than direct human control.

Note that the 2×32 model is slightly different than the other 3 models.

For 2×12, 2×25, and 2×60 Models:
An input signal of 2.5 volts is stopped. Voltages higher than 2.5 volts cause the motor to go forward, and voltages less than 2.5 volts cause the motor to go in reverse UNLESS modified by DIP 6.

For 2×32 Model:
Directionality is set by DIP 6.

Analog Mode: DIP Switch Configuration

DIP 1: ON && DIP 2: ON => Analog Mode

DIP 3: { ON => Power Supply Mode / Low Voltage Cutoff Disabled || OFF => Battery Mode / Low Voltage Cutoff Enabled }
DIP 4: { ON => Mixed Mode || OFF => Independent Mode }
DIP 5: { ON => Linear Control || OFF = Exponential Control }
DIP 6: See Notes Below

DIP 3: Low Voltage Cutoff

In the manuals, this is labeled as “Battery or Power Supply Mode”. However, it is actually a low-voltage battery cutoff.

OFF => Battery => Will cut off at low voltage
ON => Power Supply => Will ignore brown-outs due to motor in-rush

Sabertooth can be used with a variety of battery types and voltages. When running from a battery that can be damaged by deep discharge, such as a lithium polymer or lead acid battery, you should set DIP switch 3 to the battery protect position, which is OFF. When in this position, the Status LED will blink out the number of detected cells, followed by a pause, in a repeated pattern. This is useful to verify that the Sabertooth has detected the correct number of cells. When the battery is depleted, the Sabertooth will stop driving the motors, and the Status and Error LEDs will both blink in sync.

DIP 4: Mixed / Independent

When Switch 4 is in the UP position, Mixed mode is selected. In this mode, the R/C signal fed to the S1 input controls the forward/backwards motion of the vehicle. This is usually connected to the throttle channel of a pistol grip transmitter, or the elevator (spring-loaded stick) channel of a dual stick transmitter. The R/C signal fed to the S2 input controls the turning of the vehicle.

When switch 4 is in the DOWN position, Independent mode is selected. In this mode, the signal fed to the S1 input directly controls Motor 1 (M1A and M1B) and the signal fed to S2 controls Motor 2.

DIP 5: Linear / Exponential

If switch 5 is in the UP position, the response is linear. If switch 5 is in the DOWN position, the response to input signals will be exponential. This softens control around the zero speed point, which is useful for control of vehicles with fast top speeds or fast max turning rates.

DIP 6 for 2×32: Uni-Directional / Bi-Directional

Because the 2×32 model has extra I/O, it has a different configuration option for DIP6.

With DIP 6 in the ON position, the typical range is utilized: of 0-2.499 volts is backwards, 2.50 volts is stopped, 2.51-5.0 volts is forward.

With DIP 6 in the OFF position, pins S1 and S2 are { 0v = STOP ; 5v = FULL } while A1 and A2 are { HIGH = REVERSE ; LOW = FORWARD }.

Bidirection control is selected by setting DIP switch 6 to the ON position.
In this mode, an input signal of 2.5 volts is stopped. Voltages higher than 2.5 volts cause the motor to go forward, and voltages less than 2.5 volts cause the motor to go in reverse.

Single direction mode is selected by setting DIP switch 6 to the OFF position.
In this mode, a command of 0V stops the motor and a command of 5V is full speed.
The direction the motor runs can be controlled by the A1 and A2 inputs. If you connect a switch between 5V and A1, it will act as a forward/reverse switch for the signal being fed into S1. If only a single direction is needed, only S1 and S2 need to be
connected.

DIP 6 for 2×12, 2×25, 2×60: 4x Sensitivity

If switch 6 is in the UP position, the input signal range is from 0v to 5v, with a zero point of 2.5v.

If switch 6 is in the DOWN position, 4x sensitivity mode is enabled.
In this mode, the input signal range is from 1.875V to 3.125V, with a zero point of 2.5v.

Sabertooth Analog Circuit Diagram

Serial Modes

Simplified Serial

Simplified Serial DIP Switch Configuration

DIP 1: ON && DIP 2: OFF => Simple Serial Mode

DIP 3: { ON => Power Supply Mode / Low Voltage Cutoff Disabled || OFF => Battery Mode / Low Voltage Cutoff Enabled }

DIP 4: ON && DIP 5: ON => 2400 bps
DIP 4: OFF && DIP 5: ON => 9600 bps
DIP 4: ON && DIP 5: OFF => 19,200 bps
DIP 4: OFF && DIP 5: OFF => 38,400 bps

DIP 6: { ON => Slave Select OFF || OFF => Slave Select ON }

Standard Simplified Serial Mode

S1 is treated as Rx Receive Pin. S2 is left disconnected.

Serial data is sent to input S1.
The baud rate is selected with switches 4 and 5.
Commands are sent as single bytes.

Sending a value of 1-127 will command motor 1
Sending a value of 128-255 will command motor 2.
Sending a value of 0 will shut down both motors.

Simplified Serial with Slave Select

S1 is treated as Rx Receive Pin. S2 is a Logic Low/High Slave Select Input

A digital signal (0v or 5v) is fed to the S2 input. This is controlled by the host microcontroller.

If the signal on S2 is logic high (5v) when the serial command is sent, then the driver will change to the new speed.
If the signal on S2 is not high when the command is sent, then command will be ignored.

Packetized Serial

Please see the datasheet for all the data packets that can be commanded – there is not really a simple way to explain it. Baud rate is auto-select by special character.

DIP 1: OFF && DIP 2: OFF => Packet Serial Mode

DIP 3: { ON => Power Supply Mode / Low Voltage Cutoff Disabled || OFF => Battery Mode / Low Voltage Cutoff Enabled }

DIPs 4, 5, 6 determine the address in a special binary format plus 128. It’s basically upside-down from what you would expect.
DIP 4 is the ones place
DIP 5 is the twos place
DIP 6 is the fours place

456Resulting Address
ONONON128
OFFONON129
ONOFFON130
OFFOFFON131
ONONOFF132
OFFONOFF133
ONOFFOFF134
OFFOFFOFF135
Sabertooth Packet Serial Addressing