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 3D printer, a few RepRap electronics and some parts from your local hardware store!
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.
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.
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 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
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 MPCNCMillLaser.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/MPCNCFusion360V10_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 options
and setComments use Bracket or semicolon
to false (we want to use semicolons)Open
tools
,phlatboyz
,options
,feature options
and setForce all gcodes on for Marlin
to 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.