When working on mobile robots, it’s often the case that much larger motors are needed than what can run directly from an Arduino, Raspberry Pi, or other microcontrollers. Although most Arduino boards operate at 5V, they can only supply a meager 40mA or so of current to their GPIO pins.
Many simple little bots use the L298N dual H bridge drivers, but these top out at a mere 2A of current. What if you want to run your project off a drone or RC car? Or if you want to build a fully custom platform to quickly deliver snacks and drinks? Or maybe you simply want to make a sumo bot or combat bot?
In my last article, How to Automate Motors With Arduino Using Radio Control PWM, I showed how standard hobby electronic speed controllers (ESCs) can be controlled with an Arduino easily, as well as how to read off an RC receiver. This article expands on the uses for that process by helping you spec out and choose a motor controller or ESC that can handle the motors in your project.
Brushed Motor Controllers and ESCs
There are a ton of fully-featured options for brushed motor controllers. When looking at traditional RC ESCs, it’s quite hard to find ones that run above 12V. However, there is an abundance of motor controllers that interface with Arduino or other boards and can operate motors at 24+V and 10-60A! Because brushed motors can be reversed with a simple H bridge, it’s almost difficult to find a controller that doesn’t support reversing.
Some of these options are more ruggedized than others. Expect anything with an exposed PCB to require an enclosure if not a conformal coat for use outdoors. For instance, while the Sabertooth controllers market themselves as made for combat robots, robot builders who have used them say the components easily fail from shock loads or a tiny piece of metal debris shorting out the board's components.
If you are looking to make a traditional differential drive robot, many of these controllers offer two channels that can be independently controlled to run motors on both sides! This is not only convenient, but it can also greatly simplify the wiring in your bot. Some of these even allow onboard mixing for RC controllers to run these more easily from a single joystick.
However, if you use these with an Arduino, many of the controllers offer several communication options besides just RC PWM. Vex’s FIRST components even take CAN bus commands. Another benefit to the controllers is that many offer overvoltage and overcurrent protection instead of just blowing up when pushed too hard as many ESCs tend to do. Some also have overtemp or reverse polarity protection, programmable current limiting, and more!
The Roboclaw controllers, in particular, have built-in PID velocity and position control using an encoder for closed-loop feedback and even support end-stops. I’m planning to use the Roboclaw 2X30 to limit the travel of a lifting arm on a future robot using an encoder for velocity control and limit switches to set travel bounds.
A word of warning: running these controllers off of a power supply instead of a battery may cause problems. When these motors stop or change direction, they send huge back-EMF voltage spikes into the controllers, and many allow regenerative braking. This means they will attempt to send some of this back to the power supply, which may damage the supply without proper protection. They also tend to start up violently with a high current draw which can brown out most power supplies.
Brushless ESC Characteristics
With the notable exception of Odrive, practically all brushless ESCs are designed for RC models or skateboards instead of general-purpose robots. This isn’t such a bad thing, however, as RC hobbyists demand the best performance from their hardware, leading to tons of competition to make these motors and ESCs smaller, more powerful, and more efficient. An ESC capable of 24V and 50A for drones can be smaller than a stick of gum and as light as 10-15 grams!
Note that while this sounds incredible on paper, these ESCs are designed around flying through the air or under direct airflow from a propeller. They can easily overheat if pushed too hard on a slow-moving ground platform. Expect to add fan cooling for the best terrestrial performance.
Unlike their brushed counterparts, dual-motor brushless controllers are uncommon. Instead, four-motor variants for quadcopters have risen in popularity. I wouldn't recommend these for robots, however, as they usually utilize drone-flight-controller-specific communication protocols. There are, however, some dual-motor electric skateboards which have led to dual motor designs, though these frequently send the same control signals to both motors.
Brushless motors are designed to run at high speeds. At low speeds or high torque demands, they can often appear weak. Larger brushless motors frequently add Hall effect sensors to better determine their position, which is where sensored motors and controllers come in.
Most electric skateboards use these and the VESC — Benjamin Vedder’s open-source ESC — is the most common. (Vedder ESC = VESC). VESCs are extremely flexible and programmable and, due to their open-source nature, extremely hackable.
Like Arduinos, VESC controllers are made by a variety of companies at many different price points with various modifications and extra features. Sadly there aren't any fully-featured brushless motor controllers designed for robots, except one: Odrive.
If incredible speed, power, and precision are what you need, you can add an external encoder and use an Odrive.
The Odrive was designed for ultra-high-performance robotics projects — think pick-and-place machines, CNC machines, dog robot. Odrive lets you get the best out of brushless performance with stepper-motor-like precision and closed-loop control.
Or you can be like William Osman and hook it up to some hoverboard motors and make an RC shopping cart. This thing can precisely control two multi-kilowatt motors at once! The possibilities are endless, and for what it can do, it’s surprisingly affordable (especially the 56V capable version). Plus, like the VESC project, it’s all open-source.
Should I Pick Brushed or Brushless?
In the next part of this motor series, I’ll go into much more detail about the differences between brushed and brushless. Suffice it to say, for now, if your project needs to be lightweight, extremely efficient, or fly, you want brushless. When used properly, brushless motors can have efficiencies topping 95%, whereas brushed motors are usually below 80% efficient at their best. So, if battery life or travel range is your main concern, brushless is the way to go.
For reference and to save you a lot of time shopping around, here is a non-comprehensive list of brushed and brushless motor controllers that I put together. Some of these I’ve marked as being known among robot combat enthusiasts such as myself. Others are known among FIRST robotics competitors. Still, others are designed for DIY projects which require precision control, maybe even built-in encoder support for position feedback.
Featured image: Battle bots by Dekan N.