I decided to build a CNC router using MDF rather than aluminum due to cost and the fact that this is intended to just test out my construction methods. I am still using high quality rails and guides. For the X-axis I am using 1" Thompson linear rails and super open bearings. They are approximately 48" long and will give me about a 36" cutting length.
![]() |
I used two of the rails from a Thompson assembly. They were 66" long. I bought another 48" rail with a couple of bearings. I cut one of the 66" rails down to 48". This gave me two 48" rails for the X-axis and I cut the other 66" in half and machined the ends to give me two 32 1/2" rails for the Y-axis. I had a piece of 6" x 1/2" x 36" aluminum that I used to connect the slides on the X-axis. The Thompson assembly had a plate that connected the four bearings. I cut that plate in half and used the other piece of aluminum between them as a stretcher. |
![]() |
I bolted one rail to the MDF, parallel to one edge of the MDF. Then I bolted one corner of the other rail to the opposite edge of the MDF. Then I used the bearings connected by the stretcher sliding on the rails to get the second rail parallel. Once I had them both parallel, I clamped the second rail, drilled the holes and bolted it down. |
![]() |
I started mounting the gantry on the rails with the X-axis base sitting on sawhorses. I tried using a machinist's level to level the rails but I discovered that there was sag in the rails. I just couldn't get everything level with the middle of the MDF unsupported. |
![]() |
At this point I realized that the MDF was not rigid enough to guarantee that the rails would remain in the same plane. So I needed a large flat surface to work on. A 36" x 48" surface plate would be just the ticket but I didn't have one. So I decided that I would have to build part of my larger router before I could finish the smaller one. I started building the metal frame for the 4'x6' router around the smaller router project. Use of a machinist's level helped get the top of the frame level. When that was done, it was still a huge job to lift the MDF router up onto the outer frame and block it higher than the top of the frame so that I could weld in all of the cross braces level with the surface of the frame. A MDF router with steel rails is heavy! |
![]() |
Once the base was up on the metal frame and leveled, it was time to install the Y-axis on the gantry. |
![]() |
Here I have just set the Y-axis in place. At the bottom of the picture I am test fitting the X-axis nut to the drive plate. |
![]() |
I machined a couple of supports to hold the Y-axis up from the base the same distance on each side. Then when I got it up in place, I clamped it to the gantry, drilled the holes and bolted it in place. |
![]() |
The next step was to mount a torsion box that would support the table surface. The problem was that the top of the ribs to glue the top surface of the torsion box weren't even. My table saw gluing surface hadn't worked. |
![]() |
So I mounted a temporary Z-axis and router (not shown) and routed the tops of the ribs to provide a hopefully flat surface to which to glue the top of the box. |
![]() |
Here is a drawing of the plate that attaches to the Y-axis for mounting the Z-axis to the Y-axis. |
![]() |
Here is a photo of the Z-axis mounting plate. It really is flat, the curvature is an artifact of my photography. |
![]() |
Here is a drawing of my Z-axis assembly |
![]() |
Here is the Z-axis assembly in process. |
![]() |
Here us the Z-axis assembled. |
![]() |
Here is the Y-axis nut just turned. Why use a big chuck when you can use a smaller one? |
![]() |
Here us the Y-axis nut shown with the internal threading tool. |
![]() |
Here us the Y-axis nut shown mounted on the screw and fastened to the traveling plate. |
![]() |
Here is the Y-axis backview shown. Note the problem of buying parts on e-bay. Two of the supports are anodized and two aren't. |
![]() |
Here is the Y-axis sitting back on the gantry. |
![]() |
This is the front bearing mount for the X-axis screw. It has a bearing on both the front and back side to act as thrust bearings. |
![]() |
Here is the thrust bearing mounting the X-axis screw to the machine. |
![]() |
This is the rear bearing mount for the X-axis screw. It only has a single bearing that is kept in place by the screws shoulder. |
![]() |
Here is the rear bearing support mounted to the machine. Notice that the bearing is to the inside of the machine. |
![]() |
Here is the start of laying out the power supply. It will have a toroidal transformer that will supply about 20 amps at about 35 volts. The three drivers are Superior SS2000MD4 controllers rated at 40 volts and 4 amps each. The empty space is for a CandCNC mini-io board for connecting the parallel port io to the drives but providing opto-isolation to the computer. |
![]() |
Here is the power supply wired up but not yet in the cabinet. It turns out that the toroidal transformer supplies about 20 amps at only about 32 volts. The three Superior SS2000MD4 controllers are rated at 40 volts and 4 amps each. The CandCNC mini-io board for connecting the parallel port io to the drives will provide opto-isolation to the computer. |
![]() |
I made 3 of these Nema34 motor mounts. They are machined out of 0.375" 6061 Aluminum. |
![]() |
The X-axis motor is mounted to a nema34 plate mounted on two standoffs. The two standoffs were made from 3/4" x 2" aluminum bar. |
![]() |
The Z-axis motor is mounted to a nema34 plate mounted on two standoffs. The two standoffs were made from 3/4" x 2" aluminum bar. It had to have grooves milled vertically on the outside to clear the rails. |
![]() |
Here is a picture of the router with all three motors mounted. The next step is to wire it up and test it out. |
![]() |
I used Igus B15 Energy Chain for the Y-axis wiring. The applications tech at Igus helped me figure out which size to buy and how much I needed. I would have bought way too much without his help. You only need enough to start at the middle and travel to each side Plus the curve. I would have probably bought enough to go from the front to the back plus the curve. I still need to fasten down the loose wires. |
![]() |
I used Igus Energy Chain for the Z-axis wiring, both where the Z-axis travels on the Y-axis and the Z-axis itself. I found a good buy on a couple of pieces on eBay. |
![]() |
I probably need to use some spiral wrap to neaten up the motor wiring. |
![]() |
Here is the AC plug for the router spindle. I haven't decided whether to coil the router's cord around the router or shorten it up. |
![]() |
My z-axis uses 3/4" Thompson rails and I have 9" of Z travel (currently). There is some flex but it appears to be more in the Thompson bearings than in the plate or rails. I am thinking about reducing the travel to 6" or less and adding a second set of bearings. But before I reduce the travel I may try replacing the ball bearings with bushings. I have several Thompson 3/4" bushings (FNYBU12L) that are a direct replacement for the ball bearings (or as they call them ball bushings). The part number on my 3/4" twin bearing blocks is SSUTWN12. If the bushing help out I may also replace the bearings in the X-axis and Y-axis with bushings. They are 1" rails and bearings and are adjustable for fit. You get them too tight and they will hardly roll, too loose and you get flex in the gantry and/or Z-axis. Its a delicate balancing act. |
![]() |
Here is the limit switch for one end of the X-axis. |
![]() |
Here is the limit switch for one end of the Y-axis. |
![]() |
Here is the limit switch for the top of the Z-axis. As I was starting to install the limit switches, I discovered that the x-axis was going the opposite direction that I expected when I jogged and the z-axis was homing down instead of up. I am running emc2. Both problems turned out to be easy fixes. I found a message in the emc forum where someone else had the same problem of the axis moving the opposite direction to that expected and the solution was an easy edit of the ini file. The homing of the z-axis was also an easy fix. I had set all three axii to home to 0 and I just had to change z to home to max-z. As I was trying to tune my emc2 config file. My x-axis would jog at up to 120 ipm but my y-axis and z-axis would only jog about 60 ipm. I discovered that two of the drivers were set for full step instead of half step. I re-did my limit switch loop. I was getting three error messages when I ran into a limit because as far as it was concerned I had hit all three limits at once. Now I only get a limit message for the appropriate axis. I separated it into 3 loops, one for each axis. So each loop has two switches. On each axis I use one of the switches as both a limit and home and the other as just a limit. EMC2 supports this in software. It ignores the limit when homing. It can run into a switch, back off, slow down and run into it slowly to increase the accuracy, and the back off a measured distance and set the home position. Even those cheap Radio Shack switches seem fairly accurate and repeatable. |
My Y-axis screw is still bent slightly (about .030 over its length. It is definitely noticeable when jogging the Y-axis at higher speeds, at 30ipm it is hardly noticeable. I will have to fix it or replace it. I have another 3/4x5x6' precision acme rod but I also have a 5/8x5x6' Nook ballscrew and double ballnuts. I just have to make up my mind which I want to use. I was saving the ballscrew for my mill project. (I finally got the screw straightened out. It made a world of difference.) |
![]() |
Well, I made my first cuts with my CNC router. I used it to cut slots in a sacrificial top to mount aluminum T-Slots. I bought (5) 36" T-Slots from Grizzly. I wrote the gcode by hand to cut the slots. The hardest part of writing the code was figuring out the initialization code. Once I got that all of the rest of it worked great. I used a 5/8" standard router bit to cut the 3/4" slots. I made one pass down, stepped over 1/8" and made a pass back for each slot, and then step back to the starting point. I made the slots 5/8" longer than the tracks to allow for the 5/16" radius corners at the ends of the slots. The tracks were right on the money for width. I plunged at 20 ipm and cut at 45 ipm. I think I could have cut faster but it worked. Yea!!! Even with my dust collector there was dust everywhere. I am definitely going to have to make a dust collection shoe for the router. |
![]() |
I drew my house number in VectorWorks as outlined text. Then I offset lines inside 1/8" repeating until the lines ran into each other. Then I moved each set of inset lines to a separate layer. Then I used NCPlot2 to generate the gcode. I stepped down 1/8" for each successive layer. It probably should have been smaller steps, but not bad for a first try. I made one boo-boo when I had the feed set too fast and lost some steps. You can see the little tail up at the top of the "0". I ran the start of the code several times. I ran it a couple of times with the router set too high to cut, so that I could get the board positioned on the router. Then my config file for EMC2 gave me problems on a couple of runs. After I made fixes in my config file I would home the machine, reload the file and start again. It would cut precisely in the previous cuts until it came to the point where it had errored out and just continue cutting with not obvious sign that it was not a continuous cut. |
![]() |
I have been working on the drawings for the torsion boxes for my Y-axis, but I wanted to cut something smaller before trying to cut the ribs. So I started on the dust collector hook-up. I drew heavily on the work of Joe2000che on CNCZone. The holes were within .002 diameter specified in my drawings. I cut the holes with a solid carbide 0.125" up spiral bit. I cut 0.25" depth per pass at 50 ipm. I lowered the speed to 40 ipm for the outside just to see how the two compared. It was real smooth at both speeds and the router didn't seem to have any problem with either speed. I am using a Porter Cable 690 router (1.5hp). |
![]() |
I finally got the dust collector shoe mounted to the Z-axis. I made all the difference in getting the dust out of the air. |