drawing machine

arduino drawing machine


plotters seem to have vanished in many professional environments. most drawings are printed on inkjet or laser printers. that is unfortunate since it is quite mesmerizing to watch a flatbed plotter bring a technical drawing to paper.
cheap homemade plotters are quite popular among makers. these devices require a computer to send motion commands to an arduino which in turn sends signals to stepper motor drivers that power two to three stepper motors.
this is my attempt at designing a minimalistic looking 2d plotter that uses the mentioned hardware.


the following image shows the design of the plotter.

arduino drawing machine

the mechanical design is based on a core-xy drive system. the advantage of this system lies in the reduction of the moving mass since both motors for the motion in the xy plane are stationary. the arduino program (migrbl) has to be configured for this type of drive.

the following components are used for this plotter:

  • 1 arduino uno
  • 1 arduino cnc shield v3
  • 2 stepper drivers (a4988, tmc2209 or similar)
  • 2 nema 17 stepper motors (e.g. 17hs4401s)
  • 4 carbon rods, 8 mm diameter, 500 mm length
  • 8 brass bushings, 8 mm inner diameter, 12 mm outer diameter, 15 mm length
  • 2 pulleys for 6mm gt2 belt, 20 teeth,, 5 mm bore for stepper motor
  • 5 pulleys for 6 mm gt2 belt, 20 teeth or no teeth, 5 mm ball bearing
  • 1 timing belt gt2, 6 mm wide, around 2 m long
  • 1 servo
  • various m3 hex bolts

the finished plotter and an image of the plotter without the covers are shown below.

the 3d printed components of the plotter can be downloaded on thingiverse.

the plotter in action:

arduino drawing machine



most plots start with a vector graphic that was generated in inkscape or corel draw. the vector graphic has to be converted into gcode. there exist several different tools to generate gcode among them are inkscape or carbide create. the final step is to send the gcode to the plotter. so far i have only used universal gcode  sender, a simple but very helpful tool.


the following images were created with the plotter from svg graphics. different colors in the same image are possible by plotting the different colors sequentially.

the plotter can also be used to generate cycloid drawings. to this end i programmed a cycloid drawing program in python. the program allows the user to adjust many different parameters to achieve the desired figure. the resulting figure can then be exported to gcode directly. this is much easier than building an actual cycloid drawing machine…

the plotter cannot directly plot 2d bitmap images. the images have to be dithered with some geometric figures first. the dithering is done with a python script that converts the brightness values to circles having a diameter proportional to the black value of a pixel.