I am currently having a delightful, exuberant, and all-around wonderful time. This is because I've started work on my Arduino-powered robot, which means my head is currently bubbling over with ideas and brimming with questions.
In my previous blog on this topic (What's the Best Robot Base for My Arduino?), I started off by looking at traditional 2-wheel and 4-wheel bases. Eventually, however, I decided to go with a 3-wheel base from RobotShop.com as shown below. Why? Well, quite apart from anything else, it looks almost as cool as Doctor Who in a bow tie and a fez!
Robot base in its usual orientation (top) and flipped over so we can better see the motors (bottom).
Observe the special "transwheels" attached to the motors. These boast free-turning rollers mounted perpendicular to the axle arranged around the periphery of the wheel. Based on its use of transwheels, the exciting thing about my omni-directional robot base is that it can move in any direction. Of course, the tricky thing about controlling this omni-directional base is that it can move in any direction (LOL). This is actually a tremendously interesting topic, which we will consider in more detail below, but first...
So, with my base on order, the next thing I need is a controller to handle my three DC motors. Of course, I could use my main Arduino board to directly control an H-Bridge, but I want to keep the Arduino's computing resources as free as possible. The solution is to use a dedicated motor controller board.
Each of my Cytron SPG30-20K motors has a rated current of 410mA. After looking around the Internet, it seemed to me that the most affordable and best supported option was the Arduino Motor-Stepper-Servo Shield from Adafruit.com:
This little beauty -- which connects to the main Arduino via an I2C interface, thereby consuming only two pins -- can control up to four DC motors (which is what I need) or two stepper motors. It can handle 1.2A per channel and offers a 3A peak current capability, so it's more than capable of dealing with the motors on my base. The cool thing is that all my main Arduino has to do is send a command to the motor controller saying "Make motor 'n' run in 'x' direction at 'y' speed," after which we can leave the motor controller to perform its magic.
Now, this is where things start to get interesting...
To Page 2 >