I’ve been spending most of my free time these past few days researching existing concepts for drawing robots, exploring different unique methods, and narrowing down the scope of my project to something that could actually be realized. I’ve found quite a few different ideas floating around out there, some with obvious design issues, but many make well-thought out compromises that are worth thinking about.
The most popular design is the AxiDraw layout, with a single base rail, a single, cantilevered “x-axis”, and a servo-actuated stylus-holder that tilts down through a fixed arc to contact the page. These designs (and there are lots of different variants…) typically either use a x motor mounted onto the moving x axis, and a stationary y axis motor on the base rail, or a setup similar to a H-Bot layout, with both drive motors located on the base rail to reduce inertia of the moving components. Other drawing machine layouts include older pen plotter designs, such as one created by a makerspace(?) in Norway, which uses a standard CNC gantry and pen mechanism, or the PolarGraph-style machines, which are very coarse and typically can only be used for abstract artwork. Based on the amount of details I’ve given for each type, you might be able to guess which style I’m considering the most…
The control systems for these machines also vary a fair bit. Almost all designs incorporate a pair of NEMA stepper motors, a set of off-the-shelf stepper drivers and endstops for actuation, and at least one DC servo motor for moving the Z axis of the stylus. However, I’ve found several different options for controllers, from special-purpose controllers which work out of the box, to controllers running off stock arduino dev boards and shields. The control scheme behind the EiBotBoard, which is used to control the commercial AxiDraw machine, seems like a very impressive solution, and would allow me to use a variety of already available software packages like Inkscape to create draw-able files. An alternate method would be to use gcode commands, similar to 3d printers, CNC machines, and other equipment. There are also many different plugins for drawing software to process images and create toolpaths in the gcode format, which would be more relatable for me from my previous experience working with the format. using Gcode would also allow me to use the Open-Source Marlin firmware, which is arduino-compatible and works on a range of different boards. Gcode is easy to understand, which means that I could probably write my own controller without too much issue.
Defining my Design
The different drawing designs out there are helpful, but none of them are perfect. I jotted down a few issues while performing this research, and have documented them below.
- triangle robots (polarGraph):
- due to the non-rigid actuators, precision and repeatability is pretty low
- only works vertically, not great for sheets of paper (or fastening paper down
- not self-supporting, requires a whiteboard/glass surface/big empty wall to work.
- cantilevered x axis designs:
- required workspace is larger than necessary, due to cantilevered x axis
- larger, heavier axes mean that acceleration is reduced
- wire routing becomes more difficult, as there is no fixed path for wires from the End Effector to travel along.
- H-bot/stationary motor designs (axiDraw):
- Additional belts, pulleys, and tensioners add a lot of mass/complexity/friction
- slightly more complex motor control compared to traditional cartesian robots
- really only works with a moving x gantry (see below).
I did seriously consider using the H-Bot concept for this project, as it does reduce the weight that the stepper motors have to move. However, I wanted to avoid the axidraw-style design wit the cantilevered x axis (see above), which meant that I would have to add even more belts to an already cramped design. I did attempt to create a model of the design, and it does technically work. However, the friction involved is much more than I was expecting. The design also requires a single continuous belt, which is not as easy to implement when you are trying to work with long strips of ribbed belt. Determining the exact belt circumference and trying to order a belt of exactly the right size is very difficult, and I’d like to avoid that if possible.
So, what sort of machine am I aiming to build, after looking at what else is out there? Here is what I’m aiming for:
Well, ok, it looks pretty similar to the other designs, but here it is anyways:
- a single gantry for the y axis, made out of aluminum extrusion, supporting a 3D printed carriage rolling on nylon v bearings. driven by a typical NEMA 17 stepper motor and loop of ribbed belt.
- A single, non-cantilevered gantry for the x axis, made of two thin steel rods (either 6mm or 8mm, 8mm is less expensive so this is more likely). spacing is formed by the Y carriage, and maintainted by a guide block at the end of the rods. the belt passes in between the rods, powered by a NEMA-17 “pancake” stepper motor (less mass = faster motion and lower torque, but that shouldn’t be as much of an issue).
- X carriage slides on these rods, and houses the stylus maipulator/“other stuff”
Well that’s the approximate idea, at least. Obviously I’ll need to start selecting parts and creating a CAD model soon, but I’m hoping to also focus on the “other stuff” as well. What does this include? On next week’s episode…