Experiments continue on the 2020 Bot! The robot on the left was built using the ubiquitous 28BYJ-48 geared stepper motors and ULN2003 drivers. The robot on the right uses the famous yellow gearboxes plus brush motors with an L9110S dual motor driver board. Which one should I use for the 2020 Bot?
So here’s the quandary… both can be good, depending on the application. If you need speed, the brush motors are the way to go. If you need “accuracy”, go with the steppers. If you need speed and some “accuracy”, brush motors with encoders could do the job. If you need “accuracy” and need to tell if the stepper motors have actually stepped, add encoders to the stepper configuration.
Why did I put quotes around “accuracy”? Well, let’s be realistic. This is a robot built from foam board, double stick tape holds it together, the wheels are cheap and non-uniform, and alignment during build will be done by eye. Even if you could control motor speed or position with 100% accuracy, all the rest of the imperfections will add up against you.
For anyone out there who has coached or participated on a First LEGO League team, you know building a robot that drives straight, based purely on encoders, is really hard. And this is with mass produced plastic parts! For anyone who hasn’t had the FLL experience, try this: Close your eyes. Walk in a straight line. How’d it go? That’s exactly what you’re asking the robot to do.
Ok, ok. I know a bunch of you are saying “but you should minimize errors at every step so that they add up to less of a problem”. Yeah, I agree, in general. But this comes at a price, and I have to ask, based on the overall goals, when is the design “good enough”? (thanks Desh!)
What are the tradeoffs then? The cost of the stepper motors plus drivers is roughly equivalent to the brush motor gearboxes plus driver. Adding in encoders pushes the brush motor solution a little more expensive.
Building wise, the stepper motors and drivers are very nice because the motors come with wires and connectors pre-assembled that plug directly into the driver boards. No soldering required.
The bush motors need wires soldered on at some point, whether that is by the end user or at the factory is yet to be determined. Encoder solutions are available for both motors with extended back shafts, or for gearboxes with dual output shafts. The ideal place for an encoder is on the motor back shaft because you have more resolution, but this may require even trickier assembly depending on the encoder board and mechanism.
Speed and power are definitely in the brush motor and gearbox’s favor. I’ve used these yellow gems in a few projects and they’re great. Initial testing with the steppers has left a bit to be desired. The standard 1/64 gear ratio steppers are really, really, really (did I say really?), slow. I need to build up another chassis with some 1/16 ratio steppers, but my concern is that they may not have enough oomph to drive around well.
Software complexity favors the stepper solution. Assuming the steppers don’t miss a step (hmm…), you can easily control speed synchronization and distance traveled. To do that with the brush motors plus encoders you start to venture into some kind of control system (e.g. multiple PID controllers). Most of the software complexity can be abstracted away, and as long as someone is building an unmodified 2020 Bot, even the control system parameters probably won’t need to be tweaked. Clearly though, the steppers are easier to deal with.
Where does that leave me?
On one hand, I could say that it is good experience to build a robot that DOESN’T have wheel/motor feedback. Assume right from the start that it will have problems, and use other methods to compensate (sensors!). Learn how to take advantage of those methods, and when you do have a mechanically accurate robot with speed/position feedback, you’ll be in heaven!
On the other hand, typical first robot experiments are tasks like “drive one meter, turn 90 degrees, drive one meter” and these exercises are good for confidence building and learning how to code. Not having that capability could be a shortcoming.
For now, I’m going to spend a little more time looking for a stepper motor solution and see what happens. I have to keep reminding myself of the “Easy to source parts” goal. Identifying a Chinese stepper motor factory that can build me a custom stepper motor configuration would be cheating. I guess I’ll cross that bridge when I come to it!