Controling sabertooth with Arduino

Hi everybody,

I need your help. I want to control DC motors with Arduino. I know Arduino motor shield but I don't want to be limited to 600mA by motor. Therefore, I want to use a Sabertooth 2X5 limited to 5A. Sabertooth has a 0/5V input to control motors (0V is full reverse, 5V is full forward, 2.5V is stop). Can I use directly PWM output from Arduino? or I need another components?

Thank you.

PS : Sorry for my English, I'm french.

What you're talking about requires an analog output to control the motors, so no, you can't directly use a PWM output from the Arduino. You can control it directly from the Arduino using serial commands, however. If you want direct PWM control of a motor, you could consider the less expensive MC33887 dual motor driver carrier, which can supply a maximum of 5 A per channel (2.5 A continuous) to two DC motors.

  • Ben

Thank you to answer me :) MC33887 seems OK for me but can you explain to me how to connect it to Arduino? It has many inputs and I don't know which to use... :-/

From the product web page:

In a typical application, the power connections are made on one end of the board, and the control connections are made on the other end. The enable (EN) pins do not have pull-up resistors, so you must pull them to +5 V in order to wake their chips from sleep mode. The fault-status (FS, active low) output pins may be left disconnected if you do not want to monitor the fault conditions of the motor drivers; if you do connect them you must use an external pull-up resistor to pull the lines high. IN1 and IN2 control the direction of their associated motor, and D2 can be PWMed to control the motor's speed. D2 is the “not disabled” line: it disables its motor driver when it is driven low and enables its motor driver when driven high. Whenever D1 or D2 disable a motor driver, that driver's FS pin will be driven low. Each feedback (FB) pin outputs a voltage proportional to the H-Bridge high-side current of its associated driver, providing approximately 0.59 volts per amp of output current.

You will want two digital lines to control the direction of your motor, connected to IN1 and IN2, and you will want one PWM line to control the speed of your motor (connected to D2).

For the most part, this driver is designed to be a carrier board for the MC33887 IC, so you should really read the MC33887 datasheet if you want a better picture of how it works.

  • Ben

I’ve also used this motor controller, and find it quite easy to use:

http://www.solarbotics.com/products/k_cmd/

It supports two motors up to 4A, uses PWM to control speed, and direction of current flow between PWM pins (i.e. pull one low when the other is getting PWM’d) to control direction.

!c

I've also used this motor controller, and find it quite easy to use:

http://www.solarbotics.com/products/k_cmd/

It supports two motors up to 4A, uses PWM to control speed, and direction of current flow between PWM pins (i.e. pull one low when the other is getting PWM'd) to control direction.

!c

Thank you ;)

But in the description they don't speak about speed regulation with PWM. That's work fine?

Thank you ;)

But in the description they don't speak about speed regulation with PWM. That's work fine?

Yes, you send PWM down the direction pin you want, and pull the other direction pin low. (It's like interfacing with a motor directly, except there is an enable pin, and the motor gets a different power supply.)

!c

The L298 interface is very similar to the MC33887, except it doesn't have a dedicated PWM input, so it requires you use two of your Arduino's PWM outputs per motor (the MC33887 requires just one PWM per motor). The main difference is that the L298 can only put out a maximum of 2 A per channel (though the outputs can be paralleled to supply 3 A to a single motor) while the MC33887 can output a maximum of 5 A per channel (2.5 A continuous). Additionally, the L298 has a fairly large voltage drop between the input voltage and the output voltage (it can be as large as 3.2 V at 1 A) while the MC33887 has a much lower voltage drop.

  • Ben

I have another question. There is a protection on these controllers? For example, if a motor is blocked and it increases up to 10A, what happens?

You should not be using 10 A motors with a motor controller that's rated up to 5 A max. If you have a 10 A (stall) motor, use a more powerful driver. When choosing a motor driver, you should always be considering your motor's stall current as well as its typical running current.

In general, most motor driver ICs have over-temperature and sometimes over-current protections built in that cause them to cut power to the motors when they go out of spec, but there is no guarantee that these protections will keep the chip from being damaged from a sudden, large current spike that does its damage faster than the protection can kick in. The MC33887 carrier board also features reverse-battery protection that keeps the circuit from being destroyed if you connect power and ground backwards.

  • Ben