Project in progress
Mini CNC 3D Printed PCB Creator

Mini CNC 3D Printed PCB Creator © GPL3+

This project makes a mini CNC 3D printer

  • 61 respects

Components and supplies

About this project

A project in the making...

For a previous project, I wanted to be able to create PCB`s quickly and simply.

I have tried many methods:

  • Toner Transfer (Iron Method)
  • Photosensitive
  • Hand Drawing

None of these I found particularly inspiring or reliable.

So after watching countless videos on Mini CNC machines, I have decided to build my own.

I have been using Google SketchUp to design my parts and my AnyCubic Kossel to realize my designs.

The design phase has been quite challenging for me, making sure each part has the correct dimensions and that each component will work with the rest of the project. Then you have to print it, and things very rarely go to plan, so you then need to tweak it. Re-model in SketchUp and Re-Print.


A list of the components brought are:

  • 6mm Steel Rod 1M cut into (2x 25 cm) (2x 40cm)
  • 6mm Linear Bearings LM6uu (two lengths: 35mm & 20mm)
  • x2 Mini Bearings for the belt to run on
  • Arduino Uno
  • Mini CNC Shield
  • A Buck Converter to step down from 12V to 5V for the servo, etc.
  • x2  Pololu A4988 drivers only for the X & Y Axis
  • 5M of GT2 Belt and 2x GT2 Pulleys

2x Nema 17 Stepper Motors

x4 Mini Micro Switches

1x Metal Geared EMAX ES08MAII Mini Servo

Also purchased was a standard picture frame 5x7inch so I could use the glass as a bed, coincidentally the bed size I was aiming for was a half sheet of A4 paper which is 5x7inch.

Oh, and you will need some MDF to use as a base.


Software side to enable an exported Gerber .GBL file from Fritzing to be translated into G-Code and sent to the Arduino via Serial comms, I am aware that there are many programs out there that will enable me to do this but there is a couple of  issues I need to overcome.

Most G-Code assumes that the Z Axis is a Stepper. Not true in my case, it's a servo. Now I do have GRBL V1.1 installed on the Arduino with the servo mod enabled but his poses another issue. The Servo mod assumes that a M03 S1000 command will issue a PWM of 255 and a M03 S0 or M05 will issue a PWM of 0.

But I want a  M01 Z-1.0  to translate to PWM 255 and M01 Z1.0  to translate to PWM 0, So I have written a little utility in Visual Studio to replace any of the Gcodes listed below with the correct ones .

Also I have added the function to check to see if there is a M01 Z1 before the first travel command if not then insert one because I do not want the pen dragging across the surface before starting. Then a check for a return to X0 Y0 after the job is complete.

My Little App:

So the first screen is just a preview of the current G-Code loaded.

The second screen, after you press the GO button, is a view of the edited G-Code and the insertions made by color type.

My ideal would be to have an SD card loaded with the G-Code file to be read by the Arduino, so the whole unit would be stand alone from the computer, but I am fully aware that an Arduino Uno running GRBL is at maximum capacity regarding program space and I cannot push in the required header files and re-program to read from the SD.

I need to experiment with reading the SD with one Arduino and passing over Serial to a second Arduino running GRBL, this is definitely an option but I didn’t have much luck when trying to link the two serial ports together.

For now, I need to concentrate on getting the basics and functionality of the machine working properly and then move on to adding extra bits and pieces.

Below is some pictures of the project thus far.

My Printer


So I normally use Fritzing to design my circuit boards, I love the breadboard mode and the PCB export options. Straight to G-Code would be an absolutely smashing option.

Routing of the traces is not a very enjoyable past time mainly hampered by Fritzing`s slow response even on a powerful computer.

Then I export the PCB to .SVG and load it into an offline version of Makercam.

Another really good program; this allows me to generate "Follow Path" G-Code and save ready for import into UGS  “Universal G-Code Sender".

Which spews the G-Code to my Arduino running GRBL and the CNC Shield.

I have limit switches installed and this allows for homing.

Below I will include links where you can grab the Zip which includes the Sketchup project and also the individual .STl files / Programs I made and used.

**  I'm not sure if my G-Code Changer software will run just as an .EXE, as long as you have the .NET framework installed it should be fine. Any issues, give me a comment and I will try and publish it through VisualStudio. The Disclaimer is that this software is provided free of charge and I will accept no responsibilities for any damage to any equipment in any way shape of form (use at your own risk).

Click Here To Download from my OneDrive.

In Action

Some videos are located on YouTube if you fancy a look at it in action.

Overview of the Mini CNC Arduino Plotter.

Close Up Plotting.

If you have any questions please leave a comment below and I will try and respond.


Similar projects you might like

CNC (Mostly 3D Printed)

Project tutorial by John Weers

  • 93 respects

Mini Arduino CNC

Project tutorial by Zain Shahwar

  • 129 respects

Sienci Mill One - Simple and Affordable Desktop CNC

Project tutorial by Sienci Labs

  • 86 respects

CNC Plotter

Project in progress by Fakhr El-deen Gamal and Mohamed Sami

  • 47 respects


Project tutorial by Amit Nandi (BigWiz)

  • 120 respects

CNC Machine

Project tutorial by Manan Thareja

  • 47 respects
Add projectSign up / Login