Let's Make Robots!

Suggest me a motor controller

I am researching motor controllers and am looking to try something new. Previously I have used the Dimension Engineering Sabertooth 2x5 and am looking for something in the same ballpark.

The controller will interface with a PICAXE 40x. So please feel free to shoot me some suggestions.



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Call me a creature of habit, but I went with the Sabertooth 2x25. I am already familiar with it, etc.

Thanks for all the great feedback, the advice here is always helpful. This weekend I hope to get back to coding up the quad encoders and hopefully seeing this thing drive straight.

I do have a pair of encoder divider boards that allow me to divide by 2,8, or 16 to make things more managable.


 The above MD03A seems like a decent solution. Does this have both PWM and serial? I have done nothing with PWM to date.Seems like a shit load of inputs on the left... something my old Sabertooth did not have..

The inputs 1NA and 1NB are the direction bits for the MD03A, with PWM applied to the PWM1 input. To make a motor on OUT1A and OUT1B go clockwise, bring 1NA high, 1NB low, and have some PWM or a high at the PWM1. Counterclockwise would ahve 1NA low and 1NB high with PWM still applied at PWM1. Having both low or high will stop the motor. Same with the other 2x side. I have the VNH2SP30 version instead of the VNH3, for a little better current and PWM frequency. It's a little different switching than other direct control h-bridges, but works alright. Oh, the 1EN and 2EN enables must be high I think, to allow operation. The 1CS pin is a current sense that can be used or ignored.

So great feedback guys, thanks.

I just got off the phone with a gent over at Pololu. His suggestion is to construct in internal balancing calculation, that the tach input will not be able to achive a straight line. So I suppose this controller is out and I need to find something basic.

Robo- I have the BanbBot 36mm 540 motors. They have a stall current of 45a. I had no clue when looking to match a motor to a controller, that stall current was the metric to observe, I thought it was nomial.

Interesting the Pololu guy felt their feedback h-bridges weren't the best solution. I still believe the that SMC04B would provide a good path to get "mostly straight" by matching tach speeds on both sides of the robot. Each motor would probably have their P I D parameters tuned slightly, but other than that, it would seem to have only a slight curve over long distances. Any possible curve might be imperceptable indoors.

They do have a plain version of that h-bridge in the MD03A that I actually have, but have only tested lightly. It shoudl be able to handle the Banebots motors referenced. The problem might be in trying to keep up with encoder counts with a PICAxe, depending on the encoders used. It might be done, but generally I would think you would need to go to an AVR or PIC with a compiled language rather than interpreted. Of course, if you are using a low count encoder on the wheel end rather than the motor end, things might be slow enough, but the error in "straightness" would creep back in. 

Just some example calulations, 120 rpm at the wheel. With a 24 strip encoder attached to the wheel, there are only 48 counts per second to deal with, something easy to keep up with. With a standard 500 cpr quadrature encoder attached to the motor (reversing through the geartrain, 120 x 36 = 4320) there are 8640 counts per second to deal with. 

I only glanced at the data sheet. It seems this one might since it has it's own pic microcontroller.

The Pololu feedback h-bridge is a good start to help your robot "drive straight" in that it has some control loop options and PID to work with, interesting implementation. It looks like you just serially feed it parameters to tune the feedback loop, which should work pretty well. It would be a good option to use with a PICAxe or Basic Stamp or other processors of limited speed, as a coprocessor of sorts handling motor control specifics. That said,

I couldn't find a 12 volt 6 A motor on Banebots site. All their 12 volt motors had a significantly higher stall current than 6 A. I think on your robot there was mention of upgrading to 36 mm motors, which include an RS-385 (17 A stall at 7.2 volts), an RS-485 (42 A stall at 12 volts, mentions 6.6 A at no load) and an RS-545 (37 A stall at 12 volts, 5.4 A at no load). All these motors will probably fry the SMC03 in short order. The SMC04B will probably work in that it will handle the continuous motor currents of the above motors pretty well, and is at least close on the stall values. When specifying a motor controller, the stall current is the parameter that should be considered, as every motor starts from rest in stall. With there being no perfect power sources, the stall current value isn't always seen, but it is the parameter to watch.

Are you  planning to use odometry to tell where your robot is? If going on to other micros, that will be better able to keep up with encoder counts, odometry can be very helpful in mapping an area, and driving to certain places. That is, if errors can be corrected for. In using odometry, it might be better to have the encoders directly read by the micro that is controlling the feedback loop. This would be more likely to be implemented in a micro with a compiled program, for either PIC or AVR, than with a PICAxe or Arduino.

One additional thought, do you really need your robot to go straight? Will it be able to do what you want it to by whetever path it takes, simply avoiding obstacles in the way?

Ok, I don't think you will find a motor controller that does that for you. That is up to your software. The feedback mentioned in the controller your looking at will indicate how much current is being drawn. This would not help much with going in a straight line. You need to write your code so it looks at how far each wheel has turned using your encoders and adjust the speed of your motors to compensate so that ideally each encoder give the same number of pulses per second when your travelling in a straight line. You could make a circuit to do this but that would be more trouble than it was worth.

Perhaps I should also explain what I am wanting to do:

I have a pair of encoders on my motors and am hoping the tachometer option on a motor controller will help me balance my motors. Ie, allow me to drive in a straight line, etc.

I know I don't necessarily need a motor controller to assist in doing this, but could it possibly make things easier? If I understood the documentation of the  Pololu controller, it seems it will.

There are quite a few controllers in the component section. This is one I submitted. It probably isn't the cheapest but I think it has great versatility. It will allow you to turn almost any DC motor into a continuous rotation servo so that one wire controls speed and direction. It will accept either a standard servo signal or an analog input. It will easily handle motors up to 500W @ 30V but for an extra $10 AUD you get extra FETs to handle motors up to 1000W (more with heatsinking). This kit does need soldering and the FETs are surface mount so be carefull not to damage them with excess heat.

There is a smaller kit that will also turn your motor into a servo but no analog input and will only handle about 5-10A @ 12V without heatsinking. Although not well documented it will work with up to 30V if one capacitor is replaced with one with a higher voltage rating.