Robot Arm with Stepper Motor

Hi all:

I'm new to arduino but currently brainstorming about building a robot arm controlled completely by the arduino mega 2560. After some research, I found that stepper motors are used in many pick and place robots and other precision movement machines. Since the task my robot needs to perform is pre-determined (the position of all objects need to be picked and placed are known), I thought I should use steppers since the degree of rotation can be controlled by a motor driver and an arduino.

So I found this Quadstepper board from SparkFun that can control up to 4 stepper motors, which is nice since most motor shield can only drive up to 2 and I need to have at least 3 steppers.

Could you guys please tell me if this board is desirable for this project? And if it is, what kind of stepper motor should I get? The arm is built with VEX metal pieces and it's kinda heavy since I have to apply an idle voltage to the VEX motors (before I decide to go stepper) to keep the arm from falling. So, according to my description of the arm, what kind of stepper should I get so that it would have enough torque to turn the arm? Would it affect the precision of the stepper if the arm is that heavy?

This is what I have in mind so far, please give your precious suggestions and answers! Thank you in advance!


You need to select the appropriate stepper motor for your application before you select your driver. To select the stepper the primary consideration is how much torque the stepper can put out. To understand torque ratings, a stepper that can produce 100 oz-in of torque will be able to pull 100 ounces of weight at a distance of 1 inch from the center of rotation. To calculate your requirements with the arm you've already built you would use a small hanging scale and see how much force it takes to move the arm -- and don't forget to account for the weight the motors will be adding to the arm.

Once you've got your torque requirements you can select a stepper, and once you have a stepper you'll need to pay attention to the rated amperage -- and select a driver that can handle that amperage.

A simple stepper configuration will give you what is known as an "open loop" system: you can tell the stepper to make one step and just assume it was able to; you have no idea if the motor actually did move at all. To convert this to a "closed loop" system you would need to add an encoder to the motor which will give you feedback on what rotation actually occurred. In other words, if you've rated your stepper properly and never pick up an object too heavy for it then yes, it will be perfectly precise. However, if it bumps an immovable object or you overstress it then from a programming standpoint you'll never have any idea as to the arm's position.

With respect to the Sparkfun Quadstepper board... it's OK. My concern would be accidentally blowing one of the four chips and getting stuck with a thirdstepper board or such. I would suggest buying single unit boards from that have the same chip as this Quadstepper and at a very good price. You can also find four unit "carrier" boards that will duplicate the functionality of the Quadstepper but allow you to replace each single unit if you blow one.

Based on your description, it sounds like your motors are placed out "on the arm", much like many servo-motor controlled arms are designed.

In order to use steppers, you might have to redesign the arm to limit the ability of the arm's weight "back-driving" the motors (that is, causing the motors to turn when they aren't energized). Common methods to do so involve using worm gearing and/or linear actuator mechanisms. How or if this could be implemented using Vex, I don't know.

In many electric-actuated industrial robot arm designs (well, I should say historic designs - but it is still a good design practice when using ordinary motors), you'll notice the motors are generally placed in such a manner as to be as close to the base of the robot arm as possible. In some cases, the motors will also be configured such that they act as counterweights. The reason for this is to keep the mass of the arm away from the end-effector, to increase accuracy and repeatability. Something else you will also notice is that the motors become smaller as they move away from the base (with generally the base motor being the largest, since it has to move the most mass). In some cases, certain actuations will be done with small hydraulic or pneumatic devices, instead of a motor, for similar reasons (speed, weight, accuracy, repeatability and strength all play a role, too). You might incorporate a similar design strategy (small hydraulics and/or pneumatics can be made using small syringes; you might also try using solenoids for certain tasks).

Do some more research on industrial robots and their design; there is a ton of information out there on it (considering the industry is almost 60 years old)...