Contraptor plotter: Hello World!

I worked on the plotter contraption pretty much every evening during the last couple of weeks, and here is the result of all that tinkering. I had reservations about several things - I thought it would be too difficult for the motor to move the X stage around at the max speed (150rpm) - not so. To connect the opposite pulleys of the Y stage, I used 17" lengths of 1/4" all-thread rod coupled to 10-24 rod ends - and I thought it would bend too much making the belts too loose. It does bend a bit but the belts seem to be fine.

I also thought the stages are bit too heavy for quick movement, and there would be accuracy problems related to intertia. This is indeed a problem with short diagonal moves, but it can be minimized by moving slower. Compare three lines in the picture - the wiggly ones are drawn in short segments by the head (pen) moving at 300 IPM, the straight one is at 50 IPM. The text visible in the picture is also at 50 IPM (compare to the text at 300 IPM). Another strange thing - the curves look as though they are skewed a bit to the right, more so in the center of the field. I have not yet figured out why this happens, perhaps the belts are not tensioned enough.

Pics from the build process are here.

In addition to putting together the mechanical base which included making some angle, sliding elements, coupled rods, limit switches etc, I spent a few evenings figuring out how the plotter would be controlled. Luckily the guys over at RepRap project recently wrote a GCode interpreter for Arduino. It uses a subset of GCode but it can do basic stuff like absolute and incremental positioning, it understands the feedrate, it can even do arcs and some tool manipulation, though latter is RepRap-specific.

In the firmware, I fixed a couple of what I thought were bugs - there was no feedrate setting for arcs (it used max) and Arduino feedback on unknown M commands returned control ASCII characters which seemed to disrupt something in the serial comms chain. I wanted so send .NC files directly to Arduino and I looked around the net for a simple app or a snippet of code that would read/write to the serial port in lines as opposed to single characters. The only thing I found was pySerial module, and so here is a snippet for sending .NC files to Arduino GCode interpreter.

To generate G-code from text, I used shareware TTFtoDXF and Gcode2000 apps.

Project page