Arduino CNC Plotter

CNC (Computerized Numerical Control) Machines are used to draw or plot anything according to the design program fed into their controller unit. Controller unit can be either computer or microcontroller. CNC machines have stepper and servo motors to draw the design as per the fed program. Various machines like CNC milling machine, Laser engraver and 3D printers are all based on the same principle.


I have decided to make a CNC Plotter Machine based on Arduino which is by far the simplest one to make.


This DIY Arduino CNC Machine can draw most of the basic shapes, texts and even cartoons. It's operation is similar to the way a human hand writes. It’s faster and more accurate compared to the way a human being can write or draw. With some few modification this can be use as a milling machine as well.



For a CNC plotting machine to operate, 3 axes are required (x-axis, y-axis and z-axis. The x-axis and y-axis work in unison to create a 2D image on a plain paper. These x and y axis are placed 90 degrees to each other such that any point on the plain surface is defined by a given value of x and y. The z-axis is used lift and lower the pen onto the plain paper.

Depending on the image to be drawn, the computer will generate the appropriate coordinates and send them to the microcontroller through the USB port. The microcontroller interprets these coordinates and then controls the positions of the motors to create the image. Here we have used Arduino Nano as the Microcontroller to build this CNC Machine.



I have used two nema 17 4.2kg-cm Stepper motor for the X & Y axis and a servo motor for Z axis. Which actually holds the Pen while ploting the given data. The mechanical structure is based on a design I found online has shown in the image below.



The controller board is made using Arduino nano and two L293D stepper motor driver. There are dedicated ports for the stepper motor connectors and It also has a port for the servo motor. Since the Stepper motor needs 12v to operate so there is an power connector for external power supply which can also power the Arduino nano.


Now talking about the programming we need G-code of the image or text we want to plot. G - CODE is the language in which we actually tell the microcontroller to plot something. It's basically a file that contains X, Y and Z coordinates.


For generating a G-Code we need a software called Inkscape, You can generate your own G-Code using Inkscape. And for sending the G-Code to the microcontroller we need another software called Processing. You can test your G-Code in GRBL Controller to ensure there is no error in the code. Whenever you generate a G-Code using Inkscape, you can first open that G-Code in the GRBL program to see whether it is within the bed-size limits. If not within, you need to resize you image in the Inkscape until it is within your limits. Then you can push that data to the microcontroller.


Thanks PCBWAY.

Apply for sponsorship >>
13800+ Projects Sponsored
Dec 22,2019
5,313 viewsReport item
  • Comments(1)
  • Likes(4)
Upload photo
You can only upload 5 files in total. Each file cannot exceed 2MB. Supports JPG, JPEG, GIF, PNG, BMP
0 / 10000