ME170C/ECE181C: Actuators, Gears, and Structures

All the sensors and clever coding will get your robot nowhere if it cannot act and move around the competition area.  You are provided with two actuator options, motors and servos.  Motors offer continuous rotation and thus lend themselves well to providing locomotion for the robot.  Servos provide more control and torque, but have a limited rotational range.  Gears and axles provide a good means to transfer and transform motion and torque.  Finally, the structure of your robot is provided through Legos©.  The care with which you design and implement the joining of these components will strongly affect the capabilities, robustness, and over-all success of your robot.  Below are brief descriptions of these components to introduce them and provide a foundation to build upon with further research (Wikipedia is a great resource).


Brushed DC Motors – These actuators are connected to the motor ports on the motor shield (Labeled M1, M2, M3, and M4).  They should have two wire leads, the polarity of the wires determines which direction the motor turns, aside from this, it doesn’t matter which wire is connected where.  However, it would be a good idea to be consistent (color to +, black to -) so that you avoid hooking up your motor differently after you have written your code.  Motors convert electrical energy into mechanical energy.  The electrical power supplied to your motors can be determined by taking the product of the voltage and current.  The power output of a motor can be calculated by taking the product of the motor’s angular speed and torque.  With a constant voltage source, increasing the current increases the amount of torque.  However, the speed of the motor and the output torque are inversely related.  Thus, motors draw the most current when they are exerting the most torque, that is, when they are trying to turn, but being prevented from doing so.  As the motor turns faster, the amount of torque it can supply decreases.   Your motors should have a 1 Ohm resistor in line with one of the wires.  This resistor prevents large current spikes that can occur as a motor degrades, thus protecting the motor driving circuitry.  To prevent damage to the motors and the Arduino stack, you should avoid high-current (and thus high-temperature) situations.  To do this, cut off power as quickly as possible when motors get ‘stuck’ and design your drive train so that motors run at higher speed and thus lower torque/current. ( )

Servos – These actuators are connected to the three-pin servo ports on the motor shield.  The white, red, and black wires from the servo are the signal, +5V, and ground wires, respectively.  The motor shield pins are correspondingly labeled S, +, and -.  The black (ground) wire should be connected to the pin closest to the corner of the board.  Servos are basically comprised of three components, a motor, gears, and a position sensing device (typically a potentiometer).  These devices are generally rotational in nature and are different from dc motors in that they can be commanded to rotate to a particular position and hold it.  This is accomplished through a position signal and an error-correcting feedback loop.  The nature of the position sensing device typically limits the rotational range of the servo; the provided servos are limited by their potentiometers to approximately 180 degrees of rotation.  (


Gears, in conjunction with axles, can be used to transform rotational speed to torque and vice versa, in addition to transmitting torque from an actuator to a wheel or other component.  If a small gear is attached to a motor’s shaft and drives a larger gear, the larger gear will turn more slowly but with a proportionally greater torque.  For instance, a smaller gear with 5 teeth turning a larger gear with 25 teeth, thus having a gear ratio of 5 (25/5=5), will turn 5 times faster and the torque of the larger gear will be 5 times larger.  Multiple gears can be used to create a larger gear ratio.  Continuing with our example, and adding a second smaller gear to the axle of the large gear and then having that second smaller gear drive a second larger gear, the resulting gear ratio is 25 ((25/5)*(25/5)=25). The axle simply fixes the rotation of the first larger and second smaller gears so that they are the same.  In this configuration, the second larger gear will be rotating 25 times slower than the first smaller gear and have 25 times more torque.  This technique can be used to reach nearly any ratio you like, allowing you to tune your robot to have the right balance of speed and torque in order to perform the tasks you require of it.  It is important that you also consider the frictional losses in your gear train, poorly meshed gears or excessive numbers of gears will reduce the amount of torque that is transferred through to the end.  Be sure to further explore the many different types of gears and their advantages and disadvantages. ( ,


The structure of your robots shall be derived from Legos©.  These building blocks will allow you to build the structure of your robots without the need of any tools or raw materials.  They also offer the advantage of being entirely re-useable, allowing you to make quick modifications as you build without any waste.  For this reason, it is strictly forbidden you to use any non-Lego© means to connect Legos©; glue, tape, zip ties, etc. are all against the rules.  Zip ties can, however, be used for the sole purpose of attaching sensors and actuators to the Legos©.  The Legos© you will be using offer more advanced capabilities than you may realize.  A quick summary of the Lego© categories you will have is given below.

Motion – These grey and black parts are what make motion possible for your robot.  Composed mostly of gears, axles, couplings, and spacers, these components will comprise your drive train.

Red Blocks – These blocks are different from the others in that they offer smooth slopes on their top surfaces making them good for capping regular Legos© to prevent snags, among many other uses.

Yellow, Black, and Blue Blocks – These are the standard Legos© that most people are familiar with.

Flats – Also fairly standard Legos©, these pieces are defined by their reduced thickness, being 1/3 the thickness of the regular blocks.  These pieces are useful as connectors in tight spaces, as a lighter-weight alternative to the regular blocks, and as a way to get closer tolerances between gears, among many other uses.

Beams – These pieces are defined by the holes passing through them that make them an essential component for coupling the motion pieces (gears, axles, wheels, etc.) to the more standard Legos©.  The holes on these pieces also serve another important purpose, they allow for another means of connecting Legos©.  These pieces can be connected hole to hole through the small black couplings from the motion Legos© to act as diagonal cross members or braces.  The holes also act as a convenient way to attach sensors and actuators via zip ties.

Base Blocks – These Lego© pieces are relatively large and offer a means of spanning large areas with a strong, unified piece.  These large parts can be a great base to start building your robot from.

Wheels – These parts provide a convenient means for locomotion, among many other uses.  The various wheels all offer different abilities, and will strongly affect how your robot moves about the competition board.

A very useful guide exists to help assist you in building your robots; a paper by Fred G. Martin called The Art of Lego Design.  It can be viewed at the bottom of this page in PDF format or found readily online.  You are strongly encouraged familiarize yourself with this paper, since the success of your robot will depend greatly upon the robustness and efficiency of the Lego© structure you build.

Lego© Types, from left to right, top to bottom: Red, Black and Blue, Base, Beams, Motion, Yellow, Flats, Wheels.

The Art of Lego Design

Block Diagram of Arduino for ME170C

Arduino Duemilanove Schematic

Arduino Motor Shield Schematic

Lithium Power Board Schematic

Atmel Datasheet

Arduino Language Library Reference

Arduino Extended Language Library Reference