Arduino Projects :-  Mini CNC 3D printed PCB Creator.

A project in the making..


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

I have tried many methods :-

  1. Toner Transfer ( Iron Method )
  2. Photosensitive
  3. Hand Drawing

None of which I found particularly inspiring or in fact 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 of course 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 Sheild


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 GCode 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 GCode assumes that the Z Axis is a Stepper , Not true in my case its 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 Gcode loaded.


The second screen, After you press the GO.. button is a view of the edited Gcode and the insertions made by color type.




My ideal would be to have an SDcard loaded with the GCode 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:-Anycubic Kossel


The X_Stage


The Pen_Mount


The Y_Stage



Photo`s of  3D Printed Parts.




So i normally use Fritzing to desgin my circuit boards , I love the breadboard mode and the PCB export options. ( Straight to Gcode 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 ” Gcode and save ready for import into UGS  “Universal Gcode Sender “.



Which spews the Gcode 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 Gcode 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

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.



%d bloggers like this: