Educational Arduino based polar geometry drawing system.

Similar projects worth following

When most students enter the world of programming, they tend to work only in a computer. The SpiroBot would allow students to extend their programs beyond the confines of a screen. It exposes students to hardware in an easy to understand way. The Spirobot is an educational robotics system controlled by an Arduino UNO microcontroller. This machine draws circles, spirals and other designs onto a variety of materials using a felt tip permanent marker or similar writing utensil. Students learn how to control various motors, set up gearing systems, solder, and manage wiring. In addition, the SpiroBot connects computer programming to mathematics in an easy to comprehend manner. The SpiroBot is perfect for this because running a simple program takes little to no understanding of mathematics, but more complicated programs (to draw more sophisticated designs) may draw from a students’ knowledge of algebra, geometry, trigonometry, and even calculus.

The SpiroBot uses either two NEMA-17 stepper motors or one stepper motor and one continuous rotation servo for flexible and precise control of drawing movements. An additional servo allows for lifting and setting down the pen if needed for drawing more complex figures. All motors are connected through the Adafruit v2 Motor Shield attached to an Arduino UNO microcontroller. Parts from VEX Robotics are used for structure and gearing. The entire assembly is also supported by a wooden frame. The SpiroBot fits nicely on a desk and occupies as much space as a standard printer.

Click to view the System Design Document.

Click to view SpiroBot Schematics (PDF file).

Click to view 3D Model (AutoCAD .dwg file).

View all 27 components

  • Motor Attachments

    Owen Li08/15/2015 at 02:52 0 comments

    Motors are generally useless when not attached to other components of a machine. However, unlike other components, motor shafts can't simply be glued or duct taped together. A solid connection is sometimes difficult to make, especially on a round, smooth shaft. While working on this project, we have tried duct tape, electrical tape, epoxy, and many other solutions to attach components to motors. We have found that these methods are unstable and fall apart quickly. We eventually resorted to buying parts online, and these have made the process much easier.

    Most connections to stepper motor shafts rely on a metal cylinder surrounding a shaft with a small screw pushed in perpendicular to it. We bought an axle coupler to connect our round shaft to the square VEX drive shafts. We also have a universal mounting hub to connect our stepper with the rotating platform.

    Servos usually come with a variety of plastic horns that lock onto the gear head and screw into place. Drilling through the horn allows screws and bolts to be connected to the servo and the component.

  • Code for the Adafruit Motor Shield V2

    Owen Li08/15/2015 at 02:26 0 comments

    For this particular project, we chose to use a motor shield to make the code simpler. In this case, we bought an Adafruit Motor Shield V2 for Arduino. Adafruit has created their own library to go with the motor shield. The library contains shortcuts for running servos, DC motors, and steppers. In addition, it is compatible with the AccelStepper library. The AccelStepper library is what we mainly use. It gives the user control of the stepper using position, velocity, and acceleration functions. Using the position function, we are able to write a mathematical equation to express the position we want the stepper at with respect to time. Using some calculus, we can extend this and make use of the velocity and acceleration functions if we wanted to.

    More information on the Adafruit Motorshield kit.

    More information on the AccelStepper library.

  • Motor Selection

    Owen Li08/15/2015 at 01:40 0 comments

    When designing the SpiroBot, we had to choose which types of motors to use. Some of the more popular motor assemblies include DC motors, servos, and steppers.

    DC motors are the most basic, but spin at extremely high speeds. Because of this, they often require complex gearing systems to bring the speed down. Since we didn't want to mess with too many gears, we ruled DC motors out.

    Stepper motors are rather difficult to drive. Unlike simple DC motors, steppers require a motor controller to power several magnetic coils in a specific order to move. However, steppers offer extremely high accuracy and substantial torque. Because of this, we chose to use a stepper to drive the pen holding mechanism. In order to make a stepper more straightforward to run, we also chose to use a motor shield as the motor controller to make the code simpler.

    Servos are extremely easy to control, especially when you have a motor shield and additional libraries in the Arduino code. Because of this, we are using a 180-degree servo to control the vertical motion of the pen. We also initially chose to use a continuous servo on the bottom of the machine to rotate our platform. However, we found that the accuracy of this motor varied wildly, causing uneven spacing in patterns drawn and making repeating patterns nearly impossible, even with the same code. We are now in the process of changing the bottom platform-rotating motor to a (hopefully) more accurate stepper. The function of moving the pen, however, does not require extremely high accuracy, so we are continuing to use a servo for that.

    For more information on motor selection, take a look at Adafruit's Motor Selection Guide.

  • Holding a Pen

    Owen Li08/13/2015 at 17:27 0 comments

    During the initial design stages of the SpiroBot, the issue came up of how the robotic "arm" was to hold the pen. Our particular design required that the pen be able to move vertically to adjust to small irregularities in the height of the platform and drawing surface. Upon doing some research, we found that previous drawing robots used a variety of mechanisms to hold the pen, including adhesive backed cable clamps, rubber bands, and a robotic gripper. However, we found that the easiest method for holding the pen was to use hose clamps, that way the grip would be firm, but easily adjusted to fit any pen or marker.

    The initial design had the entire arm swinging up and down about an axis near the top. After building this, though, we quickly found this idea unfeasible, since the pen would dig into the paper and jam the machine when the pen was pushed instead of dragged. Instead, we locked the arm in place and loosened the hose clamps so that the pen was free to move vertically, but was restricted from large movements in other directions.

View all 4 project logs

Enjoy this project?



Walter Hynson wrote 01/20/2024 at 06:19 point

To make this device on a smaller scale you could rework a machine called "Polar Coaster Printer" its up on thingaverse.

Polar Coaster Drawing Machine

bartdringOctober 24, 2017

  Are you sure? yes | no

Walter Hynson wrote 01/20/2024 at 05:52 point

I have built many spirograph devices starting with the ones driven by my old Commodore 64 and I have pages and pages of drawings ,What I plan on adding to this machine is the process of microstepping and automatic direction reversal . This will be driven by a random number generator for both axis independentlywith a seperate random number generator which will determine axis  direction (if number is even motor rotates foward ,if number is odd motor rotates reverse ,now we have to add some cheats to get the x axis away from the end stop

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates