Summer Project: Mostly Printed CNC Part 2

student price windows professional cost of edge animate office 2016 software price how much is an indesign cs6 license

It’s been a few weeks since I started the Mostly Printed CNC project (MPCNC) and thought it would be a good time for an update.


I received/sourced the final parts to finish assembly including the Dewalt DW660 I was going to use as my primary spindle. I ended up downsizing the frame to make it more manageable and realizing that I don’t currently have a need to mill large pieces. I also wanted a build that I could would be able to fit into my car and move myself. I recut the conduit down to fit a 24″ x 24″ table (conveniently the size of some plywood I had) which ultimately gives me a build area of ~ 13.5″ x 13.5″. I kept the taller 7.5″ Z axis to give me flexibility with what I mount to the MPCNC.


The assembly went really well. The detailed assembly instructions were very good for the most part…there was a few gaps between old/new part revisions but just looking at the render and other photos made it easy to complete all the steps. The middle gantry assembly is literally a piece of art and was actually a fun puzzle to put together.



A few other things I changed/replaced or upgraded:


I had originally planned on using 3D printed pulleys using the same size specified (note the above photo has it installed backwards) but found that my belts slipped on them too much so I swapped them out for metal ones. This had two benefits – one, the slipping stopped and things were much smoother and two, my scale was correct. The printed pulleys were a bit bigger than the metal ones which affected the motion axis and scaled things larger than they should have been.

I also swapped out the ‘pineapple’ coupler on the Z axis with a metal one because I had cracked it way too easily during installation and again, was having some slippage.

After exhaustively looking at other people’s builds, I decided I didn’t like any of the cable/drag chain options out there for my specific build so I modified a part and a 3d printed chain that I suspended underneath the outer frame conduits.

I used these mounts under the rollers (which required slightly longer bolts), this mount on the conduit (which I had to rotate the mounting holes – I’ll post a remix if anyone wants this) and this printable cable chain.

It droops a little more than store-bought chain but it doesn’t appear to affect the wires it’s carrying. I’m really happy with how it turned out and despite the ‘clacky’ sound it makes when not mounted, it’s very quiet while the mill is in operation…not that you’d hear it over the router or shopvac anyways.

dim lcd screen issue

before: dim lcd screen issue

One issue that bothered me enough to try to resolve was that when I was setting up the RAMPS, Arduino and Smart Controller LCD, everything was fine when I flashed Marlin onto the Arduino and the LCD is clear and bright. Once I plugged in the drivers and properly powered up the system, the LCD contrast was weak and no amount of adjustments (onboard potentiometer and the Marlin-based contrast control) made a difference.

after replacing the driver

after replacing the driver

I found a lot of people with the same problem and I ultimately soldered in a resistor to the LCD board and the contrast improved (but still not as good as before and as good as other people’s LCDs). It was only after I swapped out the A4988 driver for the Z that everything came back up fully. So I might have had a bad (or I blew it) driver board that was also affecting my Z axis control.


The DW660 can be a little tricky to change out the bits when it’s mounted but I found this great printable wrench. The DW660 is supposed to be tool-less but this makes it much easier to swap bits.


After some discussions on the 3D604.orgforum about the MPCNC, it was suggested that MDF slot board would be a good foundation for the MPCNC. Edward got some for his (check out his progress as well) and had enough leftover which I got from him. It works really well with these printable clamps and this knob which Edward found. I’ve also printed but not yet assembled these lower profile clamps which are a nice match.

Edward brought his MPCNC to a meet up recently so I got to see his machine up close while I was still finalizing my assembly which helped immensely.

Great seeing Edward's #mpcnc in person tonight

I also wanted to mount my logo somewhere and ended up printing a cactus that had a cut out on the back for the upper mount on the DW660. I just glued it there and it makes me happy.


With that out of the way, how does it run?

I first tried the pen/marker mount which ultimately led to the resolution of a few of the items mentioned above…but it worked mostly! You can hear the Z-axis at the end of the clip make a horrible grindy sound.

I had a lot of issues with the Z-axis. Everything from a bad driver, incorrect voltage settings and a ‘grindy’ threaded rod. I used some 3-in-1 oil on it and disassembled it and reassembled it (with the metal coupler), and it finally stopped being so grindy. But I had some issues with the Z-axis plunging too far down because the voltage was too low. After replacing the driver and adjusting the voltage, it seems to work now.

Next up was the foam test. I just happened to have a piece of foam insulation that fit perfectly on the bed and it worked really well once I had the axis swapped around by flipping the motor plugs on the RAMPS board to move the 0,0 x/y home to the front left corner of the bed. Previously, the X was rotated 90 degrees and the Y was inverted so everything would draw/mill backwards.

I was finally ready to attempt to cut something a little stronger than foam. After many attempts with ESTLCam I finally started getting some consistent results:

I picked up some scrap wood (free at Home Depot!) and some better quality wood to further play with but now that the MPCNC is built, there’s no shortage of things to learn about milling wood and other materials. I’ll save that for a future post once I get some results that resemble what I intended.

When I was doing my cable management, I decided I didn’t want to have to watch the DW660’s cable at the same time as watch the rest of the machine so put it inside a cable sleeve with the Z-motor wires. This meant I don’t want to remove the DW660 to put a pen on the system to test out something new so I’m currently working on a mount that allows me to have both the DW660 and a universal pen mount at the same time. I’m not sure I’m 100% there yet but you can see a few different options I mashed up below.


This one (on the right) is my current favorite but I need to revise it to shorten it a little more and move the mount hole up a little.


I’ve also been experimenting with various ways of outputting images using different software rather than a straight tracing of an SVG (which works really well in ESTLCam) so I’ve been using StippleGen2 to generate some travelling salesman problems from images. This is basically a continuous line that ultimately draws the entire image in squiggles without having to pick up and move (without drawing). I had first played with this on the Eggbot and thought it might be a fun thing to watch the MPCNC render…and it is!

Like watching a 3D printer operate, it’s actually kind of fun (possibly even relaxing?) to watch it draw in real time. So if you’ve got 9 minutes to kill, you can watch as it slowly kills the fine tip on the sharpie marker (this mount is a little too rigid and my bed isn’t as flat as I’d like):

What’s next?

I’ve ordered the parts for the 2.8W laser addon (I’ve already 3D printed the housing) which I’m quite excited to put together. I think it will add a lot to the MPCNC and from the results I’ve seen online, it has a lot of potential. Like the pen mount, I’ll likely try to find a way to have everything mounted at the same time.

As before, lots more photos and videos of the build can be found on Flickr.


  1. Scott says:

    Good write up. I like the idea for a pen mount that doesn’t require removing the spindle. Post it up if you don’t mind.

%d bloggers like this: