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.
The awesome thing about this CNC is that it can be built using only parts made on your 3D printer, a few RepRap electronics and some parts from your local hardware store!
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.
|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
|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.
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.
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.
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 Prusia i3. .2mm layer height. Also, I started by scaling all the parts to 102%, so that after the ABS shrinks, we should get the exact right size. I found out after testing one of these scaled-up parts, that 100% scaling is fine. I suggest you print out all the parts at their normal size, the tolerances are fine, even when using ABS.
Here's part of the main carriage
Whew, that was close... almost ran out of filament on this print
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.
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.
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
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
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
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
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
Here are all the electronics
Let's start with 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
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:
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
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
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.
This is a list of tools mapped to feeds and speeds that I have found work well.
|Action||Speed||Fan (laser pwm control) Speed|
There are different tools that can be used to generate gcode for the MPCNC
For CAM operations, cutting and routing, use Fusion360.
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.
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:
I installed inkscape on my mac with homebrew, so that's where I'll copy the extensions. Your path may be different.
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
Document Properties expand the
Resize Page to Content... setting a click the
Resize Page to Drawing or Selection button
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
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
Save a Copy
You'll then see the options dialog for
I turned off registration, leave homing at 0,0
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:
machine options and set
Comments use Bracket or semicolon to false (we want to use semicolons)
feature options and set
Force all gcodes on for Marlin to true
Haven't tried this, but it looks pretty good if you have a windows computer: http://www.scorchworks.com/Gcoderipper/gcoderipper.html#download
I haven't tried this, but it seems to be a popular choice: http://www.estlcam.com/index.php
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
Download GCodeSimulator[version].jar from https://www.thingiverse.com/thing:44286/#files
Run it with
java -jar GCodeSimulator[version].jar
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.