View Full Version : Correct Motor Controller?

06-02-2012, 03:50 PM
Hi all,
I've recently purchased a set of two wheelchair motors for use in a small mobile platform I am attempting to build. I intend on running the system with an Arduino and Devantech MD22 motor controller (http://www.acroname.com/robotics/parts/R220-MD22.html). I was wondering if anyone can confirm that this motor controller will in fact interface with an Arduino and be capable of running two 110W 24V DC motors. Also, I have seen a few diagrams including an I2C bus. What would be the purpose of including this in the design? Are they used for input peripherals?


06-03-2012, 12:26 PM
That board looks barely adequate on voltage. If it's specified at up to 24V, and your motors are 24V, then you have no margin. That may be OK or not; it's really up to you. Current capacity (5A continuous with 27A surge) seems just adequate as well. I'd probably look for a 30V/10A board to have some margin. There's a good chance the board will work fine, though.

The I2C is there so that you can use real computer control, rather than the analog options. With RC servo-style pulses, and with analog level style controls, centering/stopping is really hard to get right. If you don't get it right, your robot will slowly crawl forward even when you think it should be still, or it will veer off in one direction or the other even when it should go straight, or whatever. You will find yourself fidgeting with calibration over and over, and it gets really frustrating. I2C lets you send real, unambiguous, digital commands. "Go at this speed (including 0)" and "turn at this relative angle."

The one thing apparently missing from your set-up is encoders on the motors. You can't expect to go fully straight, or know exactly how far you've gone, without good wheel or motor encoders, and ideally using those as feedback into your motor controller.

06-03-2012, 08:25 PM
Thanks jwatte,
Very helpful, I appreciate the insight. I found a new motor controller which is rated up to 50V and runs at 5A but has the capability to run all the way to 27A with proper heat-sink modifications that I can make if need be.

As far as the I2C used in this type of system is it a digital analog converter running on an I2C platform? I found an 8-bit model here that I believe is what I would require. Could anyone confirm this? http://www.robotshop.com/search/search.aspx?locale=en_us&keywords=DAC

I am not very familiar with motor encoders. Are they something that could be added later after I get a basic platform up and running? I was looking into how they interface with the motor and I cannot seem to understand how they would work with my motors. I have a set of wheelchair motors. Since there are no data cables coming from the motor I assume it does not already contain a controller so I suspect I will eventually need to add one. Could anyone make any recommendations on the type of encoders I should be looking for?

06-04-2012, 12:39 PM
Typically, an encoder is attached to the "reverse" side of the drive shaft or motor shaft. If your motors do not have an output for that, then you can either attach an encoder inline with the output shaft, or as a disc attached to the inside of the wheels, with an optical sensor. That latter option is not preferred, because it's more susceptible to dirt and other interference IMO.

If the motors will be mainly controlled by radio control -- a la "combat robots" -- then the encoders won't be as necessary, because the human operator will just adjust/tune the centering of the steering, and compensate for any slip. If the platform is targeting autonomy, then encoders will help a lot. (My current platform does not have encoders, and I will end up either having to do fancy image processing from a camera to compensate, or, if that doesn't work out, change to one that does :-)

I2C is a digital-only bus, requiring two wires plus ground between the master/CPU and the slave/target. There's another digital bus called I2S which is used to send digital audio around a circuit board; that's not a bus that is relevant here. Also, the controller you originally pointed at has five controller modes: two which use "hobby servo" PWM control, two which use analog inputs, and one which uses I2C. Most embedded MCUs contain at least one, and often more, I2C bus connections. For example, AVR based boards like the Arduino or Arbotix have I2C built into the CPU, and you talk to that I2C bus using the Wire library.

06-04-2012, 07:00 PM
I'm a bit partial to Pololu boards; their stepper driver IC breakout boards were (and continue to be) rather popular in some sections of the RepRap community.

All of their plain motor driver boards are capable of at least 9A continuous without heatsink modifications. They don't have I2C bus interfaces, but if you are willing to use a few more pins they will work with an Arduino. Controlling a single motor with the 24v23 (http://www.pololu.com/catalog/product/1456) would require using one/two PWM pins to control motor driving/coasting/braking (depends on operating mode), a single digitial output to control direction, two digital inputs for the two fault pins (optional, but definitely recommended), and an optional ADC input to read motor current. The 24v12 and 24v20 do not have the motor current sensor.

Pololu also makes more feature rich motor controller boards, but the voltage and current ratings on those may not meet your needs.

There are also the well loved Sabertooth motor controllers (some available at the trossen shop) which all offer substantial voltage and current limits and permit multiple control methods.