A big part of the Hackaday Prize this year is robotics modules, and already we’ve seen a lot of projects adding intelligence to motors. Whether that’s current sensing, RPM feedback, PID control, or adding an encoder, motors are getting smart. Usually, though, we’re talking about fancy brushless motors or steppers. The humble DC brushed motor is again left out in the cold.
This project is aiming to fix that. It’s a smart motor driver for dumb DC brushed motors. You know, the motors you can buy for pennies. The motors that are the cheapest way to add movement to any project. Those motors.
The Smart Motor Driver for Robotics allows a DC brushed motor to be controlled by a host microcontroller over I2C, and sends back the speed and direction of the motor. PID is implemented, and the motor can maintain its own speed, independently of a lot of difficult control on the host system.
The guts of this motor controller are made of a PIC 12F microcontroller, a H-bridge motor driver, a Hall-effect sensor, and a neat magnetic encoder disc. Ultimately, this project will simply bolt onto the back of a cheap brushed motor and give it the same capabilities as a fancy servo or stepper. It’s never going to have the same torque or power handling as a beefy NEMA 17 stepper, but sometimes you don’t need that, and a simple brushed motor will do. A great project, and an excellent entry for the Hackaday Prize.
12 thoughts on “Adding Smarts To Dumb Brushed Motors”
“You know, the motors you can buy for pennies. ” Then add the cost of smarts. ;-)
Why would a brushless motor cost more to make than a brushed motor? A brushed motor needs brushes, springs, a commutator, and the mechanics to align them all. I’m thinking it should be cheaper to manufacture a brushless motor.
The costs of brushless are all in the control, and even those are approaching parity with a PWM-driven H-bridge electronic speed control typically used for brushed motors.
Those brushed motors are cheaper, because they are far less powerful for their size and they enjoyed decades of cost-cutting. Now a good brushed motor (like those for drills) costs as much as comparable brushless. Brushless are still a little more expensive because they require more elements (more magnets and more coils on stator) to assemble.
The ones you can buy for pennies are usually the ones where the axle only sticks out on one side (not on both as in shown in the project)
I really like this and think it’s very useful, and a good implementation with good documentation. I feel impelled to point people at an older dc-motor-into-servo implementation here: https://github.com/misan/dcservo that turns a dc motor into a servo motor using an arduino, that can be controlled by step-and-direction inputs or by serial communication via a comm port. Maybe robotics people are moving heavily towards I2C, but for a lot of us, step-and-direction is preferred. Misan’s version does not include some of the really neat things this one does, like including wheel diameter calculations for position awareness.
This. Go on youtube and look at HomoFaciens videos. I also made a CNC router with cheap DC brush motors using mosfet H-bridges and boarduinos to take the step and dir pulses from GRBL. I’ll probably never look at a stepper again.
one word(s) –> 0.05deg accuracy, without overshoot and PID tunning hassle after load change
I like this one… https://www.youtube.com/watch?v=uphXy3URQ6g
“It’s never going to have the same torque or power handling as a beefy NEMA 17 stepper” I beg to differ. These smarts can be added to big motors like wheelchair motors or even bigger, that can eat a NEMA 17 for lunch.
The power density of a stepper is normally much lower than with a DC motor/DC servo drive, even at comparable size of the motors. But at the expense of more complicated control. Last but not least, because the stepper has to be oversized to avoid loss of steps at all cost because you do not have feedback. In a servo drive you have feedback and can even get an error signal if something went wrong. Unlike my 3D printer which (like most) just print into thin air if some loss of steps occurred.
Benchoff you did an article on this already, back in 2015:
Oh dang this is pretty much what I’ve been working on for my miniaturized rocket stabilizer CAS block
Please be kind and respectful to help make the comments section excellent. (Comment Policy)