I have looked at several different designs for home built CNC routers. Construction on some is very simple while others would require access to a well equipped machine shop.
The design I am
using was found on a forum at www.cnczone.com. This design
nice features. It uses MDF for the frame and black pipe for
the axis guides. The linear bearings are made from aluminum angle
and roller skate bearings and the lead-screws are 1/2-10
All of these items are readily available and easy to cut and assemble.
I will need to
modify the design for my specific space requirements. If I want
to park my truck in the garage the entire unit has to fit into an
alcove that is 44 x 32 inches. That should still give me a nice
size machine with about a 28 x 18 working area.
The components are coming together quickly. I still need to look into couplers to attach the motors to the leadscrews. I'm sure I've forgotten something but it will come to me.
I find that many
people in CNC forums will build a simple
machine then use that one to cut parts for a more complex or better
machine. Since I don't
have a CNC machine already up and running, I will have to modified the
design I have chosen to allow it to be built with my existing tools.
The top and
bottom are 3/4" thick while the inner ribs are 1/2" thick. The
ribs have been lightened to leave 5/8" all the way around. The
sides will be covered with a skin of 1/4" MDF. This should
provide a light but very strong assembly. I will cut a beveled
grove along the length of the top and bottom to anchor 36" long
black-pipe with a 1" ID.
On the top and
bottom of the torsion assembly, I used a 90-degree v-groove router bit
to cut out a beveled groove for the pipe rails to seat in. It is
a god idea to take two or three shallow passes over the tablesaw to
remove some of the center material before routing.
This view shows
the assembly with the grooves. You can see the small holes
drilled through the bottom and top pieces. I drilled and tapped
10-32 threads in the rails and will bolt them to the torsion box from
inside for extra stiffness.
This shows how
the pipe will seat in the v-groove. I left clearance at the
bottom of the groove to make sure that the pipe seats on the bevels so
it will remain centered.
I picked up several six-foot lengths of 1/4-20 threaded rod today at Grainger. When I got home my acme lead screws were on the front porch. I have most of the parts I will need to finish the build minus the small odds-and-ends stuff that I will pick up as I go.I glued up the frame of the Y-axis torsion box tonight. I will glue one of the outer skins on tomorrow leaving the other one off until I am sure that I will not have to remove the rails again during assembly. I am hoping that I will be able to bore holes in the upright portion of the gantry accurately enough to support the ends of the y-axis pipe rails. I have an idea for boring the holes to the correct diameter but accurate placement could be a challenge.
These look a little better than a stack of washers. Maybe some shorter bolts too?
The left-inside leg of the gantry after boring and layout. If you squint really hard you can just see the layout lines for the final shape. This one will be cut out and sanded to final shape then used as a router template to cut out the other three. Each side uses two of these glued together for a 1" thick finished part.
The carriage for the Y-axis is almost ready to glue up. I have a few more holes to drill first.
There will be two
vertical pipe rails
when it is finished, I only had one ready to go for the photo.
You can see the lower bearings in place. The upper bearings are
still missing. The four shiny screws to the right hold the
lead-nut in place. In addition to glue, the six small holes will
allow 1/4" all-thread to run through the assembly to securely hold it
More bearing assemblies waiting in the wings. I haven't finished the Z-axis bearings since they will have a different length spacer because of the smaller diameter pipe, 3/4" instead of 1".
Two short pieces of pipe were used to line up the holes while gluing the two pieces that form each gantry side.
In the photo
above, the carriage is finished while the other parts need a bit more
work. I really thought I would have to shim between the torsion
box and the pipes to get them to line up with the holes in the
legs. This is why I chose to leave the front panel off of the
torsion box. Otherwise I would not have had access to the machine
screws holding the pipe to the box. However, it was a perfect fit
on the first try.
I tested the
motion of the carriage on the Y-axis by just pushing it back and
forth. I was surprised at how easily it moves and how little
pressure needs to be applied to the four adjusting screws that preload
the bearings. Obviously I don't have the router, drive motor,
leadscrew, or any bearings hanging on this thing yet, that may have
some impact on how it adjusts and how well it slides. For now, it
I need to pick up
a bathroom scale so I can start weighing parts to get an idea of how my
modified design compares to the original. I suspect it will be
This week I have been working on the lower torsion box for the gantry. After gluing the skeleton together I realized that I had not drilled the holes for the threaded rod to pass through. This rod will hold the bottom of the gantry together, so it's kind of important.
I had purchased a
set of long drill bits for another project. They were cheapos so
I sharpened them with a split-point on my Dad's Drill Doctor before
using them. This one cut really well, much better than my
standard drill bits in MDF. I might have to get a Drill Doctor
I had made an
extra rib when I cut out the parts for this box. I used it to
make a drill jig to keep the hole location consistent. I just
clamped it in place drilled then moved it to the next location.
The holes on the left side are farther from the side so that the rod
will clear the mounting flange on the lead nut.
I picked up a
bathroom scale at the local discount store so I could start recording
the weight of the parts and assemblies. So far I have weighed the
gantry as it appears on the previous page. It came in at 42 lbs.
Nearly a month
since my last update. Progress has been a bit slower these past
few weeks. I consider priming, sanding, and painting a necessary
evil but the final results are starting to look pretty good.
The next step
will be the Z-axis parts and the bearing blocks to support the Y-axis
and Z-axis lead-screws. These parts will be made from MDF.
I haven't decided on the material for the motor mounts. I would
like to use aluminum since it would help dissipate excess heat from the
motors but I may use HDPE or MDF to start with.
Above you can see
the lead-screw, lead-nut, an
unpainted bearing block, and the end of the Lovejoy coupler that will
connect the lead-screw to the motor. I still need to round the
corners on the bearing blocks.
I hoped to paint
the bearing blocks today but the wind is blowing like crazy and I don't
really want to spray paint in the confines of the garage.
Hopefully the weather will cooperate tomorrow.
In 1/8 stepping mode I am getting 93 ipm rapid travel. I may try changing to 1/4 stepping and see how that works out.
Today I started
building a router template for the eight pipe supports that run across
the table torsion box. I had a piece of 1/4" Masonite that used
to be the spoil board for my bench top. That is why you see paint
on the template.
I set a fence at
the back of the table and another at the right end. Between the
fence and the template is a 4" wide board used as a spacer. The
way this works is, set the part against the fences and use a forstner
bit to drill the first hole. Next, use the 4" spacer fence to
locate the part precisely for the second hole (pictured
below). Then flip
the part over and repeat on the other end. I also clamped the
template to the table before drilling. The pipe that I have
measures 1.310" so I used a 1-5/16" forstner bit. A hole saw
would have worked as well. One other thing that I did before
drilling was to cut out a small "V" for the pilot point of the
bit. This would keep the point from riding off the edge of the
template and pulling the bit to that side.
When I drilled
the second end, I flipped the template over so that the other side was
down, keeping the same reference edge against the fence. That was
all I got done before supper time so I will get back to it tomorrow.
I placed the two
pieces together with some 1/2" MDF in the notch for spacers. I
placed a steel rule on each side to set the distance from the top of
the notch to the guide board which you see held with spring clamps and
glued it in place. This will act as a fence to position the guide.
Next, I set the
template on the guide and glued a second fence which will capture the
template while routing. I couldn't clamp it while sitting on the
saw table so I took a page from the Wile E. Coyote playbook and dropped
an anvil on it.
I still need to
cut out the lightening holes and drill the holes for the all-thread but
all of the critical dimensions are cut.
I had a small
problem when I used a laminate trimming bit to flush cut the
template. It turns out that it didn't quite cut flush. The
MDF wouldn't fit through the slot. I had to go back over it with
a 3/8" bearing guided bit which fixed the problem. When I use
this template to cut my parts I think I will drill 1/4" holes at each
corner before I route the pattern.
After a little
bit of CAD work it looks like I will be building the table about 3/8"
thicker than its namesake. This shouldn't cause any clearance
problems but will give me more material at the top and bottom of the
have been shimmed level. On top of them are four 2x4s jointed and
planed parallel. These are in turn shimmed level and flat to each
other across and lengthwise. On top of that are two layers of
MDF. This is the method found on the DIY website for a flat
assembly table. The boards on the table are all ripped to 5.8"
wide to be used for the torsion box frame. I plan to let this
settle for a day or two then check it for flat and shim it again if
The small strip
in the front is equal to the width of the bottom of the v-groove
(.418-inch). I placed it between the wider board and the table
saw fence then clamped the wide one to the table to keep it from
sliding as I pushed the parts along its length. Through trial and
error with my test pieces, I was able to set the distance to the center
of the 90-degree v-cutter so that I could run one side then flip the
part around and run the other. Next, I removed the small strip,
re-clamped the wide one and ran both sides of the part again. The
tablesaw fence was never moved.
The part in the
background was my first attempt. The grooves were a little too
close together. After adjusting the fence, the second one was a
winner. The test part was about 11" long and with rails in place
I could test its fit in the bearings mounted on the gantry.
When I had cut
the parts for the frame I set the rip fence on my saw and cut all the
pieces. When I started preparing to assemble the torsion box I
discovered my parts were not
exactly the same width. There was about a .040" variation from
widest to narrowest. The 3/4" parts were the widest while the
1/2" pieces tended to be narrower.
To solve the problem I needed to cut everything down to 5.060, since that was the width of the narrowest piece. I set up the saw with a feather board in front of and behind the blade then made some test cuts. Everything looked good.
I cut my first
piece then checked it with dial calipers, 5.075. I re-measured my
test part and it was 5.060. So I flipped the part end-for-end,
leaving the same side to the fence and took another pass. It took
off additional material. I measured it again to find that it was
still too big but closer. I continued to flip it over and take
additional passes measuring after each until it was within -.000 to
+.004 of my goal. Apparently the thin kerf blade was deflecting
during the cut. I can't prove this but I have no other
explanation. I any event, all of the parts fell within a .004
All this may
sound a bit overzealous for woodworking but I would like a perfectly
flat table. However, even when purchasing precision granite
surface plates there is always a tolerance range. By getting each
part as close as my machinery will allow I can minimize the cumulative
error and have the best machine possible.
With the above
setup I was able to begin squaring the sides before gluing began.
I glued the two short sides to the long side on the left. I
clamped it in place then shot some brads in each joint to hold it while
the glue dried. I clamped the long side to the assembly table at
each end. Next, I put two more clamps on the long side but not
too tight. I used a four foot level and a dead-blow hammer to
adjust the side until it was straight then tightened the clamps.
I measured diagonally to check for square. With my corner squares
in place it was dead on.
I cut some extra
cross pieces to clamp at each end to help position the long sections
inside the box. These were removed after each section was glued
and nailed in place. To glue up the last section, I had to remove
the right side. So I clamped the short side in front to the table.
I left the short side in back unclamped so I could flex
it out of the way during assembly.
Something else I
did to ensure strong glue joints was to give the raw edges of the MDF a
thin coat of glue, give it a short time to soak in, then apply
I let the top
have about 2 hours before I removed the weights and clamps. I
used a flush trim router bit to trim the top even with the sides.
I turned the table over and mounted the pipe rails to the sides with
three 10-32 machine screws each. With the rails in place I didn't
have room for the bearing on the flush trim bit so I cut the bottom
skin to finished size before I glued it in place. I lined it up
and transfered the lines from the sides then drew a grid on the bottom
showing where the frame members were so I could brad nail it in place
after applying glue.
Finished torsion box with pipe rails in place. I still added weight to the bottom after nailing it down.
I have found that
for gluing large surfaces it works well to spread the glue on both
parts using a j-roller that I bought for applying plastic
laminate. It has a rubberized roller about 4 or 5 inches wide and
washes off easily.
I installed six
1/4-20 brass thread inserts into each end of the table to attach the
table supports. You can see the matching holes in the table
supports in the previous picture. I set each support in place,
drilled 1/4" holes through support and table, removed the support and
drilled the table holes out to 21/64", then installed the inserts.
Rather than using
HDPE for my adjuster box, I have gone with MDF. Since it won't be
strong enough to thread for bolts I decided to use a joint with
mechanical strength and glue it together.
A closeup of the corner joint.
I clamped the adjuster box into place on the gantry and checked the fit on the table. This allowed me to make any adjustments before drilling the mounting holes.
I adjusted the
bearings then clamped a dial indicator to the carriage to see if I
would need to move the adjuster box up or down on the gantry to get
good alignment with the table surface. In the photo I have the
indicator set to zero. As I moved the carriage to the left the
dial went to -.004 in the center of the table then up to +.005 at the
left edge of the table. That's pretty much dead-on for a wooden
box like this.
I had pre-drilled
the mounting holes in the adjuster box. I removed the gantry from
the table and used the holes in the adj. block as guides to drill the
gantry. I drilled the top six holes then bolted the box in place
before unclamping it to remove the lower torsion box from the
gantry. I needed to do this in order to drill the remaining two
holes in the adj. box. Once drilled they got bolts and nylock
nuts like the others. The bolts were inserted from the inside
with the nuts on the outside. I used #12 flat washers on both
I rounded the top
corners of the box to allow for additional steel bracing to be added
later. The steel straps will attach the adj. box to the lower
The brackets will
fit over the top of the adj. box and run down the sides. They are
a little long so I will cut off the excess. Several screws will
attach them to the adj. box and the torsion box. Nothing should
move or sag after these are installed.
Gantry and supports in place. 12" rule on table for scale.
The machine weighs 227 lbs. with the z-axis parts and lead screws. I will need to recruit some help to get the supports up on the sawhorses before I can run the gantry the full length of the table.
The gantry will have to come off at least one more time. The left side lower pair of bearings on the upper rail don't quite contact the rail. As careful as I have been, the aluminum angles that hold the bearings are a little too close together on that side. I should be able to shave a little off the top slot and get a better fit.
I didn't have a picture of the business side of the z-axis assembly so here it is.
Since I used MDF for these parts I had to adapt them slightly to gain some strength. The block that holds the leadnut is made from 3 pieces of 3/4" glued together, drilled completely through and bolted to the bearing plate. The leadnut is held in place by machine screws with brass thread inserts in the MDF. I put the leadnut on the bottom so that the machine screws would not hold the weight of the router and z-axis assembly. They just have to keep the nut from turning.
I started working on the router holder for the z-axis. I cut out 3/4 MDF into two 6x6-inch blocks to make the clamps. Then I needed to somehow cut holes into them at 3.8" dia. to fit the router motor. I used my circle cutter and it worked perfectly. It doesn't have a fine adjustment so it took some time to get it set for the hole size. Also, the cutting tool can't go through 3/4" in one pass. I had to go halfway through then flip the part and finish it from the other side.
The drill press setup for cutting holes to make clamps for the router motor.
To make sure that both parts came out the same, I clamped the two pieces together and drilled a pilot hole through both. I used these holes to line up the parts to the tool before I clamped each to the table to begin cutting. I also used this hole to align the cutter when I flipped the part to make the second half of the cut.
Freshly cut hole along with the waste.
Router holder being assembled.
After cutting the holes it was time to shape the parts and assemble. I glued the clamps into 1/4" dados in the sides. I modified this setup from what Joe had done. Again, using MDF instead of HDPE, I decided it would be stronger if I had two dados rather than a dado and a rabbet. I moved the clamps up by 3/4" and drilled the holes for the mounting bolts all the way through the sides. I had to modify the shape of the sides to make sure that I had flat spots for the blots to seat so I moved the transition from 2-1/2 to 1" up the side a bit.
While measuring the router motor before building what you see pictured above, I did some rewiring. The router I am using is a Sears VS fixed base 2HP unit. The power switch was in the handle and had a separate lead cable running up to the motor. Since the handle was part of the base, and I won't be using the base for this setup I had to eliminate the switch. This won't be a problem since I have a relay that will allow me to power the router on and off through the controller software.
The power cable, switch cable and speed controller circuit board before rewiring. I put this picture here in case I ever need to put the router back the way it was.
Quick change router collet in the open position.
Above is the quick change collet I will be using. It comes with tool holders that snap into it. A push on the outside collar unlocks and ejects the tool. Several of the guys on CNCzone are using a different quick change setup, http://www.hightechsystemsllc.com, that allows use of an automatic tool changer. I plan to go to that one later but it is only rated to 10,000 rpm, and my router won't go that slow.
No pictures, but I did get the parts for the z-axis painted and ready for final assembly.
Just some photos of the assembled router holder on the z-axis.
Router holder installed.
Router installed with z-axis at the top of its travel.
I haven't cut any parts yet and may not until I have the
limit/home switches installed but the temptation may be too much to
keep the wiring out of the way, I built two brackets and mounted a
length of Pex tubing between them. I will use this as a cable
carrier over the top of the gantry.
tubing was .375 O.D. so I drilled a.377 diameter hole two-inches deep
for a very snug fit.
had seen this type of setup on a water-jet machine a number of years
ago. I just went to
the lumber yard and started looking for something that would flex and
this is what I came up with. They had five foot lengths pre-cut
and it appeared to be just what I needed. The Pex tubing is
flexible enough to move with the carriage and stiff enough to support
the cables and keep them from getting caught on anything.
today I just used masking tape to hold the cables on the tubing.
After I get everything wired and working I plan to use split wire loom
to clean things up.
the limit/home switches wired and configured in Mach3, I
decided to put a cutter in the spindle and see if this thing
would cut perpendicular on x and y. I wrote a simple g-code
program to cut two sides of a piece of MDF. I set it to take a
1/4" wide cut .600 deep in six passes at 25 ipm.
It looks pretty good. I'll have to use a dial indicator to see how close.
have the grooves cut. The track was 48" long so I had to
lengthen the grooves with a hand held router. Notice the
temporary dust collection skirt. MDF makes an enormous amount of
The finished table.