Introduction: DIY CNC Writing Machine Using GRBL
In this project, I will show you how to easily build your own low-cost Arduino CNC Plotter Using Free and Open-Source Software!
I’ve come across a lot of tutorials explaining how to build your own CNC plotter, but not a single one that explains in detail about all the details and software required to make it happen. I had to cross-refer with a hell lot of tutorials to make this project happen. Everything including the details of the software used are mentioned in this tutorial. Thus, I wanted to share this with the society for anyone who wishes to create this Project.
Step 1: WHAT YOU’LL NEED
- Nema 17 Stepper Motor (4-Wire) x 2
- Arduino Uno R3
- CNC Shield V3 For Arduino Uno
- A4988 Stepper Motor Driver x 2
- Threaded Rods x 2 (Sized according to your needs)
- Plain Aluminium Rods x 2
- Super Glue
- 5mm Acrylic sheet
- CNC Milling/Laser Cutter/3D Printer
- Micro Servo
Step 2: BASIC OVERVIEW
The heart of this machine is the Arduino working
with the CNC Shield and the Stepper Motors. The stepper motors are used to actuate the X and Y axes. Two gantries each consisting of one stepper motor is made and constructed using acrylic. Each axis is controlled separately by the Arduino running the GRBL Firmware which is free and open-source. The pen attached on the Z-Axis is controlled using a servo.
Step 3: MAKING THE FRAME
Download the given Illustrator file and use your respective Mill/LaserCutter/3D Printer to make the pieces for the frame. Also cut out the supports for the Stepper motor.
Attachments
Step 4: CREATING THE ADAPTER FOR THE MOTOR
I 3D modeled the adapter for the model in Fusion 360 according to the dimensions of my rod and motor shaft. The stl and fusion files are linked down below. It can also be found on my TinkerCAD profile. Download the files and 3D print the Adapter.
Click here for the TinkerCAD file.
Attachments
Step 5: ASSEMBLING THE GANTRIES
- Assemble the CNC’d Acrylic pieces to match the shown image by mounting the vertical motor and rod supports as shown in the picture. Similarly, assemble the Y gantry using the acrylic pieces.
Step 6: MOUNTING THE GANTRIES ON TOP OF EACH OTHER
Slide-in nuts on both the threaded rods and the plain rods and fix them in place. Glue a piece of acrylic spaning over both the rods.
Glue the Y axis gantry to this piece of acrylic,
Step 7: MAKING THE PEN HOLDER
CNC out the required parts and put them together to form the mechanism shown in the images. Attach the Servo in the given spot using glue.
Step 8: WIRING THE MACHINE
Connect the male jumpers in between the Driver holders to enable micro-stepping.
connect the rest of the parts as mentioned in the wiring diagram.
Power the parts using a 12v supply
Step 9: REFER THE VIDEO BY CREATTIVE BUZZ FOR CLEARER DETAILS ON THE MECHANICAL CONSTRUCTION
I've done my Mechanical construction all in reference to this video, all credits to the owner.
Step 10: SOFTWARE
Step 11: FLASHING GRBL TO THE ARDUINO
The main Software running on the Arduino that controls the Motors is GRBL. TO flash it :
- Download the Given Library
- Add the Library to Arduino IDE
- Open Examples
- Under MIGRBL
- open grblupload
Attachments
Step 12: INKSCAPE FOR SENDING THE GCODE
Download Inkscape Version 0.47 from here. and install it.
Step 13: DOWNLOADING AND ADDING THE GRBL EXTENTION TO INKSCAPE
Download the below-given files
Refer to this video for details on how to install the extension in Inkscape.
Attachments
Step 14: UNIVERSAL G CODE SENDER
Download the Universal G Code sender and unzip it.
FROM HERE.
Step 15: CALIBRATING THE STEPS PER MM FOR G CODE SENDER
Open the G-Code Sender aplication.
- Connect the Arduino to the Computer
- Select the right communication port
- Hit Open to establish a connection with the arduino.
- Enter Machine Control Mode
- Make sure your machine runs in the right directions using the x y motions.
- give each axis a motion of 1 inch and measure the actual distance travelle
- Move to Command tab
- Type in $$
- note down values of $100 and $101 for steps per mm of x and y axis respectively.
- Use “$100 =” to adjust the steps per mm on the x axis and “$101 = ” for the y axis respectively.
- Repeat this untill the distance travelled is exactly equal to the command given.
Step 16: Creating the GCODE FILE
- Open Inkscape
- Import the desired image and convert it to path
- In Extensions, Use the MI GRBL EXTENSION.
- Press apply and create the GCODE FILE.
- Open File mode in GCODE Sender
- choose the file
- hit send
SIT BACK AND LET THE MACHINE DRAW.

Participated in the
CNC Contest
18 Comments
5 months ago
Servo motor is not working, connections are correct
7 months ago
Hi Sir, My Sister Selected In Chennai For Using CNC Writer To Help Handicap Peoples to Write Their Own Thoughts. Can you Help Me to Buy or Prepare The Material.
11 months ago on Step 3
can you provide the measurements for all the frames
asking on behalf of all the people who do not hae a 3d printer
1 year ago
hi. tanx for sharing info
can i use lead screw 8mm and is that same code as u can use in this project?
2 years ago
the stepper motor is not rotating, it just vibrating? why?
Reply 1 year ago
The motor's wires need to be connected to the pins of the motor driver in the correct sequence. Check the wiring and try changing the sequence of the wires of the motor.
1 year ago
Very good 👍
1 year ago
i made but my servo motor will continuously rotating what is the solution for these
2 years ago
what if I use l293d instead of a4988
Reply 2 years ago
I don't think an l293d is compatible with the CNC Shield V3
If you want to use that, it'll be a different circuit.
2 years ago
does it needs or necessary to put a jumper caps in the cnc shield?
Reply 2 years ago
It is necessary for better quality. Technically called micro stepping. You can also just solder the connections on the backside of the shield if you can't get hold of jumpers
2 years ago
I noticed that you have added a video nor a pic of your completed project.
All I could see is the video someone else posted in YouTube and your project cover photo is a screenshot from that video as well .
Is this a work on progress?
Reply 2 years ago
*haven't
Reply 2 years ago
Once I started doing the project I realized that there's no single write up that gave all the information together. So I decided to put together all that I had learnt for this project. Immaterial of the fact wether I completed the project or no I wanted to share it asap. Hence no images on the final model. But Fyi All the images of the frame are true and present. I'll be updating it soon. Stay tuned. Thank you.
2 years ago
Really neat design. Nice work for this CNC
Reply 2 years ago
Thanks a lot! Means a lot! Please share and support.
Reply 2 years ago
I wanted to build mine but i thought it was too difficult, but it seems easy now :)