Drawing Machine
How I built it
The robot was designed around the use of two 26Ncm, 20 steps per rotation stepper motors, which were placed in the tw top corners of the workspace. The motors were chosen for their high static torque, which is needed to maintain position whe the carriage is free hanging, as well as the low cost and size. The motors were mounted using two 3D printed mounts which fit onto the rail which is attached to the top of the dry erase boards. These motors turn two 3D printed spools whic each hold a length of line, at the end of which is connected the marker carriage. The line is run through two small magnetic loops which are attached to the dry erase board, keeping the line and therefore the marker carriage close to the board to ensur consistent and even drawing quality. The marker carriage is made using a laser cutter, and holds both the marker, and a small 5V servo motor used to remove the marker from the drawing surface. The servo actuate a small arm, which is used to push the carriage, and the marker, away from the board. This allows the carriage to be moved without drawing a line across the surface.
The workspace of the robot is 1m2, though it is easil expandable due to the modular nature of the machine, meaning that it can be used on a wide range of dry erase drawing surfaces.
To control the motors I used Arduino Uno paired with a Adafruit Motor Shield v2. This motor shield controls two stepper motors which control the position of the marker, and one servo motor, which handles removing the marke from the drawing surface. It runs a gcod interpreter, which creates a simple to understand interface for the user, and for external programs, to run the plotter.
The Arduino Uno was coded using the native Arduin development environment. The Adafruit Motor Shield v2 was used in conjunction with the Arduino in order to provid control signals to the 12V stepper motors, as well as the 5V servo motor. A gcode interpreter was implemented to accept user
and program input over a serial interface to the Arduino. By using this well-established interface, the robot is able to interface with a variety of programs which can convert images to gcode. The interprete can accept position commands both in real time, and as a batch program.