Mostly Printed CNC (MPCNC)
This is my build log of vicious1’s.com Mostly Printed CNC.
Here we are running a 2.5w diode laser on it.

Huge shout out to Tim, in the photo above, for helping me get past the final hurdles of this project. He hand-wrote some g-code to get this working before we found a tool to generate it.
Parts
The awesome thing about this CNC is that it can be built using only parts made on your
Hardware
My build started with a trip to home depot where I bought conduit. If you choose your dimensions before you start, you’ll even be able to get the conduit cut at the store for free.
If you want to copy my build exactly, here are the dimensions I used (all units are in inches). I sized mine to fit on an extra door I had lying around. I used this door as the cutting table.
| Hardware | total length(in) | qty | total(in) | size(in) | plus(in) | |
|---|---|---|---|---|---|---|
| Conduit | x axis | 139.2 | 3 | 46.4 | 36 | 10.4 |
| y axis | 103.2 | 3 | 34.4 | 24 | 10.4 | |
| z axis | 31 | 2 | 15.5 | 8 | 7.5 | |
| legs | 46 | 4 | 11.5 | 12 | -0.5 | |
| total: | 26.62 | ft | ||||
| GT2 | x axis | 106.8 | 2 | 53.4 | 46.4 | 7 |
| y axis | 82.8 | 2 | 41.4 | 34.4 | 7 | |
| total: | 189.6 | in | ||||
| Rod | 5/16-18 threaded rod | 14 | 1 | 14 | 8 | 6 |
| 7/16 threaded rod | 64 | 4 | 16 | 12 | 4 |
If you want to build a different size table, this awesome calculator will help you figure out how long to cut each piece: http://stevecd.github.io/mpcnc_calc_react/#/?_k=gj9fxl

I also picked up the necessary bolts and nuts. I’m building the US/English version, the metric version will be slightly different.
All sizes are in inches unless noted otherwise
| qty | size |
|---|---|
| 1 | 5/16-18 x 5 |
| 12 | 5/16-18 x 2.5 |
| 2 | 5/16-18 x 1.5 |
| 28 | 5/16-18 x 1.25 |
| 43 | 5/16-18 nylock nut |
| 1 | 5/16-18 x 7/8 coupling nut |
| 19 | M3 x 10mm (ordered from China) |
| 57 | #6-32 X .75 |
| 57 | #6-32 Nylock Nuts |

You’ll also want some wiring. Old ethernet or phone cable works great for this.
Electronics
I ordered all my electronics from China. It’s cheap and they work great. They took about 3 weeks to arrive, so order these first, as you start printing out all the parts.
| Image | Description |
|---|---|
![]() | RAMPS 1.4 Electronics Kit 1x $40 |
![]() | GT2 timing belt and pulleys 1x $9 |
![]() | NEMA 17 Stepper Motors 2.2Kg.cm holding torque 5x $11 |
![]() | Pack of 100 3mm x 10mm Hex Bolts (to attach the steppers) 1x $5 |
![]() | 10 608 Sealed Bearings 6x $3.85 |
![]() | Laser Glasses 3x $1.80 |
![]() | 12V 30A Power Supply 1x $26 |
You’ll also want some 2.54mm Standard PCB Shunts for the RAMPS.
Even though the included motor drivers work fine and these TMC2100 silent stepper drivers are expensive, if you plan to run your MPCNC in a living space (as I do, with it in my living room) the $40 upgrade is well worth the peace and quiet. The upgraded motor drivers really do make a difference. Check out this comparison: https://youtu.be/ROFYIJ-wOGI?t=10m25s
I ordered a 2.5w diode laser as the primary end effector. It works great. I also ordered a spindle.
| Image | Description |
|---|---|
![]() | 2.5w Diode Laser Module 1x $75 |
![]() | 400W 12000rpm ER11 Chuck CNC Brushless Spindle Motor and Driver 1x $80 |
Printing
All the printed parts for the US 3/4” conduit version are here on Thingiverse and the metric versions are in the links on that page 25mm, 25.4mm.
In case you’re curious, US 3/4” has an outer diameter of 23.4mm according to https://steeltubeinstitute.org/steel-conduit/types-of-steel-conduit/electrical-metallic-tubing-emt/.

I used ABS to print all the parts. I printed at 253 degree nozzle and a 100 degree heated bed in an enclosed

Here’s part of the main carriage

Whew, that was close… almost ran out of filament on this print

Table
You’ll need a table that fits your CNC. My CNC is pretty big, at 3” by 4” so I had to build a custom table.

I ended up using an old door I found in the basement and some scrap wood. I printed out these little holders for the legs, but in hindsight, it would have been better to use a more traditional table building method, like a strip of wood lengthwise around the table to which the legs can be bolted.

Then used the 45 degree brackets and a couple more scraps to hold the legs in place.


Build
The build is pretty straightforward and vicious1 has a good guide on his site over here: https://www.vicious1.com/assembly/
My step-by-step guide follows.
Legs

Gather the parts for the tops of the legs

Optionally, glue or acetone weld these parts together

Then bolt them together

Then bolt onto the conduit leg

Do all 4

Then find the bottom parts for the legs and bolt those on as well

X-Y Axis
Grab the printed parts and your shorter bolts

Note how the bolts overhang the nuts by a 1/4”. It would probably be fine like this, but I don’t like the way they look

I couldn’t find 1-1/4” bolts locally, so I used 1-1/2” bolts and cut them down with a hack saw then cleaned them up with a file. I found cutting 5 grooves up from the end was the perfect length

Find the longer bolts, lock nuts and 4 more bearings

Note the bolt direction

Fasten the nuts

Complete all 4

I’m using 3mm x 10mm hex bolts to attach the steppers to the 3D printed mount.

Bolt them on like this

Carriage
This part is slightly tricky, just follow the pictures and you’ll do great. Unfortunately I can’t give more detailed written directions since I’m not sure of the names of some of these parts.
Grab this part… see, no idea what to call it… and some bolts

Bolt on the bearings

And do the other one as well

Now you’ll need one of the large center sections, bolts, nuts, bearings and a couple wrenches

Install the bearings like so for both parts (only 1 is shown here)

Now find the coupler nut, a small bolt and nut and the 3d printed part. Install the coupler nut into the 3D printed part

Mark the bolt

Cut it down to size. Alternatively use a hack saw for this

Now find your partially assembled pieces

Insert the long bolt

Add the coupler, put the bolt through the hole without the coupler nut

Then through the blue part

It will fit like this

Add the other middle, blue piece

Add the bottom spacer

Then add the bottom orange piece


Bolt it on

Test fit a piece of conduit and check to make it slides easily but is not loose. Adjust the bolt tightness if necessary

Bolt on the last four bearings


Check the tightness with a piece of conduit

Z-Axis
Here’s what you’ll need

After fitting the nuts, fix them firmly in place with hot glue

Drill the conduit and insert the bars holding the nuts. You may have to sand down the opening of the conduit if they don’t fit.

Bolt on the universal mount, loosely

Bearing goes up


These are 3x M3x10mm bolts

Install the stepper

And the coupler

Tighten the mount

Install the threaded rod

Final Assembly
Mark, drill and affix two corners

Install the base of the legs

Add the conduit rail

Then add the spacers

And the conduit on the other side

Be sure to install the carriages, then bolt on the top of the legs, loosely. With everything loosely attached now, measure diagonally and make sure everything is square. Drill and screw in the last two corners.

If you’re like me, now would be a good time to move (just kidding). Here we are in the new location

Back to the build, insert the small nuts into the slots

Slide the gantry into place and bolt the stepper motor mount onto each of the 4 carriages

Here is how the belts are threaded

Using the zip ties, affix the belts

Electronics
Here are all the electronics

Let’s start with wiring
Wiring
I used some old ethernet cable (8 wire) and telephone cable (4 wire) to wire the stepper motors and the end effector plug.
For the series stepper motors, I wired them like this, using a 2.54mm pin header.

For the specific steppers listed in the BOM above, the pinout is:

If one motor runs backwards, just try the position of any one of the wires in either pair

I soldered pin headers from standard 2 row 2.54mm pin headers

For the motors on the side opposite the controller, run the cables through the conduit

Ramps
I just followed vicious1’s ramps setup guide here: https://www.vicious1.com/assembly/ramps-wiring/
Here is a full pinout of the ramps 1.4

Push the ramps shield onto the Arduino mega
Fill all 3 headers below each motor driver slot you intend to use with 3 jumpers. This will give you the most resolution (microsteps) possible. They should look like this when populated:
(Image credit vicious1)
Be sure to read the pinouts for the motor driver you’re using and match them to the pinout on the ramps and install them
Wire the power to your power supply
And print a case, if you want.
Plug in the motors

Laser
If using a laser, we’ll want to connect these to the D9 terminals, Brown and Pink jumpers in these photos

I used this 12v laser
We’ll use the fan pin, D9 for the output, which is fine for our 12v laser, but don’t do this with a 5v laser.
The marlin gcodes for fan control are:
M106 -- set fan power
M107 -- fan off
Full documentation for a different, 5v laser installation https://www.dropbox.com/s/2a5t7iv0x2cax57/MPCNC-laser-add-on-walk-through-Rev2.0.pdf

Firmware
The latest version of marlin for the MPCNC is available here https://www.vicious1.com/marlin-firmware/, grab the RAMPS 1.4 version. I’m using https://www.vicious1.com/wp-content/uploads/2017/05/MPCNC813_GLCD_EB.zip with the extruder and heated bed enabled.
Feeds and Speeds
This is a list of tools mapped to feeds and speeds that I have found work well.
2.5w Diode Laser
| Action | Speed | Fan (laser pwm control) Speed |
|---|---|---|
| cutting | 150mm/sec | 255 |
| engraving | 300mm/sec | 255 |
Software
There are different tools that can be used to generate gcode for the MPCNC
For CAM operations, cutting and routing, use Fusion360.
For etching, try the http://nebarnix.com/img2gco/ website or or Image2GCode
Fusion360 Post processor
For generating gcode from CAD. You can also import an SVG into a sketch in Fusion360, which is handy if you want to route a specific path very precisely.
Sketch your cut with Fusion360, then use the gcode post processor.
I cleaned up the MPCNC_Mill_Laser.cps post processor. You can grab my updated version from dropbox or github.
Open https://myhub.autodesk360.com/g/all_projects/active then open “Assets” -> “Cam Posts” and drag the .cps file in. Full directions: https://knowledge.autodesk.com/support/fusion-360/learn-explore/caas/sfdcarticles/sfdcarticles/How-to-install-a-cloud-post-in-Fusion-360.html
Follow the directions for use
The V10 post processor here, wasn’t working for me: https://www.dropbox.com/s/sreu7mhyh30o9j2/MPCNC_Fusion360_V10_SDcard.cps, but if you want to try it, here are the directions:
Inkscape Plugins
I installed inkscape on my mac with homebrew, so that’s where I’ll copy the extensions. Your path may be different.
J Tech Photonics
The best Inkscape plugin, but it only works for outlines, not fills. I’ve found is the J Tech Photonics plugin: https://jtechphotonics.com/?page_id=1980
Download the correct version, http://www.jtechphotonics.com/Downloads/Inkscape/JTP_Laser_Tool_V2%20-%20inkscape%209_2%20version.zip in my case
mkdir jtech && pushd jtech
unzip JTP_Laser_Tool_V2\ -\ inkscape\ 9_2\ version.zip
# copy the extension into the right folder, the target is in Inkscape under Preferences -> System -> User extensions
mv *.py /usr/local/Cellar/inkscape/0.92.2_1/share/inkscape/extensions/
mv *.inx /usr/local/Cellar/inkscape/0.92.2_1/share/inkscape/extensions/
popd
Import your DFX or SVG or whatever you want to cut.
When importing a DFX, don’t scale it and if you dont see the image, pick View -> Zoom -> Drawing
Under File -> Document Properties expand the Resize Page to Content... setting a click the Resize Page to Drawing or Selection button

Under Extensions choose Generate Laser GCode and J Tech Photonics Laser Tool

In the settings set:
Laser ON: M106
Laser OFF: M107
Travel Speed: 1000 (or whatever your machine can do)
Laser Speed: 300 (for engraving or 150 for cutting with a 2.5w laser)
Laser Power: 255 (max power)
Passes: 8 (at a minimum for plywood, 14 to be safe)
Pass Depth: 0

If you get an error like this, you’ll need to add a layer to your image:

The full guide for the plugin is here: https://jtechphotonics.com/?page_id=2012
Svg2G
This plugin didn’t work for me, I got the error: svg2g.py: error: no such option: --pen-up-angle, so the script probably needs to be debugged.
To install it, download the zip from github and copy the contents of src/ into your inkscape extension folder. When installed via homebrew on mac, that would be something like this:
mv ~/Downloads/svg2g-master/src/* /usr/local/Cellar/inkscape/0.92.2_1/share/inkscape/extensions/
Once installed, open an image and click File -> Save a Copy
You’ll then see the options dialog for Svg2G
I turned off registration, leave homing at 0,0
SketchUp and SketchUCAM
Grab SketchUp free here: https://www.sketchup.com/products/sketchup-free
Download SketchUCAM here: https://openbuilds.com/projectresources/sketchucam.1/
Change the settings for Marlin:
-
Open
tools,phlatboyz,options,machine optionsand setComments use Bracket or semicolonto false (we want to use semicolons) -
Open
tools,phlatboyz,options,feature optionsand setForce all gcodes on for Marlinto true
Gcode Ripper
Haven’t tried this, but it looks pretty good if you have a windows computer: http://www.scorchworks.com/Gcoderipper/gcoderipper.html#download
Estlcam
I haven’t tried this, but it seems to be a popular choice: http://www.estlcam.com/index.php
Image2GCode
For generating engraving gcode from an image.
Download Image2GCode version 1.1 here: https://www.dropbox.com/s/c31m6l3hmfneud5/3dpBurner-Image2Gcode-1.1.zip or the github version here: https://github.com/Uthayne/3dpBurner-Image2Gcode
Gcode simulation
Download GCodeSimulator[version].jar from https://www.thingiverse.com/thing:44286/#files
Run it with java -jar GCodeSimulator[version].jar
PCB Lasering
Open the layout in your PCB program, I’m using Eagle. Hide all but pads and the top layer. Show vias too, if you want those cut.
Then find the ratsnest button and hit it.
Hit print and under options pick only “Black” and “Solid”, choose the PDF printer
Now, fire up your favorite image editor. I use Photoshop and import the PDF, turning up the resolution to max when prompted.
In Photoshop, change the main layer to have a white color overlay, insert a layer below it, fill it with black. Make your edits, like adding a little border.
Then send it to your cam program.








