Libraries for Arduino
Which mode should I use with my motor driver?
Mode |
Advantages |
Disadvantages |
Packet Serial
|
Most powerful
Control up to 8 SyRen/Sabertooth per pin
SyRen and Sabertooth use the same 8-bit commands
Commands are checksummed for reliability
Setting commands for ramp time, deadband, etc.
|
V2 controllers:
Baud rate changes require a command
V1 controllers:
Autobaud requires low startup transients
|
Plain Text Serial
|
Extremely beginner-friendly
Control up to 4 Sabertooth per pin
Commands can be checksummed for reliability
Reasonably powerful
|
For USB Sabertooth drivers only
|
Simplified Serial
|
Beginner-friendly
Fast single byte commands
Baud rate settable with DIP switches
|
7-bit on Sabertooth
No checksumming
Requires one pin per SyRen or Sabertooth
|
R/C Microcontroller
|
Control each motor with servo commands
Use 3-argument init: servo.attach(pin, 1000, 2000);
Compatible with R/C versions of Sabertooth
Servo library comes with Arduino software
0°-90° (1000-1500 μs) reverses
90°-180° (1500-2000 μs) goes forward
90° (1500 μs) stops
|
Requires one pin per motor
Not as precise, sensitive to timing jitter
|
Packet Serial FAQ
Which motor drivers use autobauding in packet serial?
V1 motor drivers use autobauding. The list of V1 motor drivers is as follows:
- SyRen 10
- SyRen 25
- Sabertooth 2X5
- Sabertooth 2X10
- Sabertooth 2X25 V1
V2 and newer motor drivers store their baud rate in an EEPROM setting (the factory default is 9600).
I have a V1 motor driver and the Sweep packet serial sample only moves forward and stops at 9600.
We've run into this with the Arduino Uno and Sabertooth 2X5. There is a startup transient
on the Uno that the Sabertooth sees as a very fast autobaud character. As a result it
autobauds at its maximum baud rate, 38400. Changing the Serial.begin(9600); line to
Serial.begin(38400); got things running for us.
|