google-site-verification: google25d4af7aa2d8937a.html "v=spf1 +a +mx +ip4: ~all"

Arduino-based CNC pen plotter with Detailed Configuration

Hello guys this blog post provides a complete guide regarding CNC pen plotters using Arduino

Let’s begin with what a CNC plotter is

CNC stands for computer numerical control. A CNC plotter machine is used to create 2-D, and 3-D images on a plain surface using a 2-D printing mechanism and microcontroller. In order to draw a desired image or piece of text, the Arduino CNC plotter moves its components in accordance with the instructions it receives. This is a simple Arduino-based CNC pen plotter that is used to draw anything and everything you want! It is based on the design program that was input into their controller unit.

List of Components required

  1. Arduino UNO
  2. CNC shield
  3. a4998 driver
  4. Stepper motors
  5. Servo motor
  6. rods
  7. carbon tubes
  8. 6mm rods
  9. Timing belt
  10. Linear Bearing 6mm

11. Linear Bearing 12mm

12. NEMA17 stepper brackets

You can use Robu’s 3d printing service to print the structure if you don’t have a 3d printer:-

How to assemble?

Take the two 3D printed End plates. These plates are as shown in the image below.

 END plate

We required four Linear Bearings of 12mm. Insert these bearings into the gantry, two from each side.


Next, grab two 12mm-diameter carbon tube that are 500mm long. This tube should be inserted into the two holes in center of gantry.

Insert two metal rods into one end plate. These rods are smooth and specially manufactured for CNC application. Mount the gantry assembly on these rods. Apply End plate on other side. Now the gantry will slide on metal rods.

Now, take the slider and insert two 12mm bearings. Insert this slider on carbon tubes. Fixed the arm end at the end of carbon tube using bolts.


Place two pulley at arm end and one pulley at slider using bolts. 


This Arm end is attached to carbon rod. After this part insert four pulleys in gantry. So, it looks like as shown in image below.

Attach a NEMA17 mounting bracket to each end plate using nuts and bolts. Attach a stepper motor to each NEMA17 mounting bracket using four bolts. Also apply pulley to each motor shaft.

Next Continue to put the timing belts. The timing belts path is as shown image below. Between the two 12mm support tubes, the timing belt passes.

Now we can continue with assembling the pen holding mechanism. This mechanism required one fixed part and one sliding part.

Pen Holding Mechanism

  Sliding part  


Fixed part

 Insert the four linear bearings into this sliding part and attach servo motor. Also secured the pen holder part right next to the servo.

Attach stepper motor to fixed part. Then the lifter is simply attached to the shaft of the stepper.

Next, we connect the sliding part and fixed part together. The servo wire must first be threaded through a hole in the fixed portion, and then the 6mm rods must be inserted from the top, passing through the bearings and the hole in the fixed part. The sliding part should be pushed downward by a spring that is inserted between the fixed and sliding parts of the rod as it is being installed.

Next, we can assemble this pen holder mechanism using pen-lift bracket that goes on slider part of machine.

Pen lift bracket

The assembled plotter looks like image shown below.

With this, the mechanical part is completed, and we may proceed to attaching the electronics.

We are using an Arduino Uno board in combination with a CNC shield.

 Arduino CNC Shield board as a driver expansion board, can be utilized for CNC, 3D printers, and engraving machines. There are four slots in all, and each one can drive an A4988 stepper motor.

Now our Arduino CNC pen plotter is completed.

The only thing left is to transform it into a true CNC machine. To accomplish this, we need to install a firmware on the Arduino that will allow us to control the CNC machine’s motion, as well as a control programmed that will allow us to transmit G-codes to the machine and instruct it what to do.

Next download and install this GRBL firmware into the library folder of our Arduino IDE,

The open source GRBL firmware is the most often used option for DIY CNC machines. However, we need a modified version of it for this Arduino CNC Pen Plotter so that it can manage the servo motor.

Circuit Diagram

Installing GRBL

In order to plot an image, we need to install a g-code (graphics-code) interpreter called GRBL. Perform the following steps to install a core XY version of GRBL onto your Arduino UNO R3.

  • “” can be downloaded from Pen Servo.
  • Expand the zip file.
  • Find the “grbl” folder and copy it to the ” C:…Arduinolibraries ” folder.
  • Edit code in the library file “config.h” to read #define COREXY, as seen in image, to activate the Core XY mode. Make use of a text editor like Notepad++. a word processor is not.
  • Open the Arduino IDE (Integrated Development Environment)
  • selecting “File | Open” and Go to the “C:…ArduinolibrariesgrblexamplesgrblUpload” folder.
  • Afterwards, click “Open” after selecting “grblUpload.ino.”
  • Next compile the code and upload to your Arduino.
  • Now GRBL is installed on your Arduino.

Configuring GRBL

Once we download and install this GRBL firmware into the library folder of our Arduino IDE, we also need to overwrite GRBL’s default configuration file.

When your Arduino Serial Monitor is opened at 115200 baud, Image as shown below is displayed.

By entering $$ in the text box at the top of your Serial Monitor screen and selecting “Send,” you can view your GRBL settings at any time.

In the Serial Monitor text box, enter $110=6000 and press “Send.”

Simply enter $$ and click “Send” to see the change.

Now your plotter is completely compatible with Inkscape g-code.

“Inkscape” may be downloaded from  

Plotting an Image

A text editor like Notepad++ can read any g-code file, independent of file extension.

Files with the extensions *.gcode, *.nc, *.ngc, and even *.txt are common.

Before we can plot, we need something to draw.

The GCode Commands Listed Below are Contained In this Image

We now require a method of transmitting this file to our plotter. For this download and install the UGS (Universal Gcode Sender) Classic version from

  1. Place your paper under the plotter.
  2. Open a connection to your Arduino by running UGS.
  3. “Check” the “Enable Keyboard Movement” option.
  4. “XY step size” should be set at 10 mm.
  5. “Feed rate” should be set to 1000 mm/minute.
  6. To move the pen, click the +X, -X, +Y, and -Y buttons.
  7. Click “Reset Zero” when the pen is above the lower-left corner of your page.
  8. “Enable Keyboard Movement” should be unchecked.

       The plotter is going to come back here.

Now is the time to plot.

  1. “Universal Gcode Sender” will now start.
  2. The lower-left corner of your page with the pen in that place.
  3. Set the communication speed to 115200 bauds and input the COM port connected to your plotter.
  4. Then “Browse” for the “square.txt” g-code file by clicking “Open.”
  5. Eventually, a screen will appear once you click “Open” and “Visualize.”
  6. The yellow virtual pen and your plotter should both begin moving as you press “Send.”

We hope you enjoyed our blog about Arduino-based CNC pen plotter. It’s a great way of being able to add your own personal flair to your project. In this blog, we hope we were able to give you the information you need to start your projects.

One Comment

Add a Comment

Your email address will not be published. Required fields are marked *