Web Analytics

Part Deux - PrintNC

Fig. 1

Autumn, 2021. This is a build page about how I decided to rebuild my CNC machine. My first machine, whose build log is given on this page, I learned much from and made many very nice pieces with it. But due to its wood/pipe/bearing-truck design, it was quirky and often needed tweaking to keep it in shape. Each time I tweaked it I thought about upgrading, but that meant being without a CNC machine for a while - something that I just didn't want to endure. Nevertheless, I am finally going to do it. I will definitely migrate the spindle, steppers, drivers, and power supplies to the new machine.

So, after much research and lurking on user forums about many different designs, I've decided on the PrintNC machine from ThreeDesign. Why that one? Well, the whole machine is an open source Fusion 360 model, and the dimensions of the machine are determined by the size of the work area you want, and then plugging those values into the parametric Fusion model, and (mostly) everything in the model changes to match. There is an online PrintNC Calculator that will figure out from your specific working area size a custom BOM (Bill Of Materials) with the right lengths to order for the steel, ball screws, linear rails, and 3D printed models. From there you can order everything on your own, or send the resulting BOM kit order to an Aliexpress vendor who knows the machine, and puts together a kit of all the linear rails, ballscrews, brackets, and fasteners, (almost everything needed for the basic machine, minus the electronics and the steel and printed parts) will come from them. That kit in my case was $491.00, which is cheaper than when I started specifying things separately. I ordered my kit August 1, 2021, and I received it August 31. However, the package was damaged and some parts had fallen out along the way. They packaged the ball screws in individual tubes, but not the linear rails, so the rails poked holes in the bottom of the box during shipment, and smaller pieces fell out, including one of the rail carriages. After taking inventory I emailed the seller with the needed parts, which I got, but not until early October.

In addition to the movement components, you need to buy the steel for the frame and cut and assemble that yourself while waiting for the order to arrive. One of the problems with many steel designs is that the steel warps rather badly when welded, so this design avoids that by bolting the steel together instead. Towards that end there is a pretty nice assembly guide provided by ThreeDesign, as well as one on their wiki (which is more current) and several YouTube videos of others assembling their machine. There is also a friendly and helpful user group for PrintNC that is quite active on Discord. Given that, this log will mostly be my thoughts and the experience of my build, rather than another step by step assembly guide.

A steel frame should obviate at least some of the quirks of my old machine and hold its tram and movement positions well. The linear rails and ball screws are also a big step up. Despite that, the parts in the image above that are red are 3D printed parts, and there are also drilling guides that are 3D printed. Just like the old rerap philosophy, you build the machine with some 3D printed parts, and then make replacement parts out of aluminum once the machine is up and running. While it might seem that 3D printed parts on a steel CNC machine seems just wrong, few of the 3D printed parts are structural or have to shoulder any of the machining forces - they are primarily used as spacers, a role that printed parts can perform very well. I am looking forward to this build, as I should then have a machine that can mill aluminum directly from Fusion 360 designs, as well as cut and carve things using Aspire.

The standard size printNC (the default values in the online calculator) has a working area of 24x38 inches (600x950mm). Mostly due to the available room in my shop, I wanted a working area to accommodate a 24x48 inch piece of marterial (so a working area of 610x1220mm - I added a bit of margin just to be safe) so mine will be a bit larger than the standard build. This machine is designed in metric (yes!) but I still have to accommodate material that mostly comes in imperial units. Also, the resulting machine footprint is roughly the same size as my older machine's table, so I may be able to reuse the table as well.

The steel lengths are specified by the PrintNC Calculator based on your working area of the machine. In my case, the 2x4 foot working area required (1) 6ft 2x4 x 0.125 inch wall tubing for the gantry, and (4) 6ft 2x3 x 0.125 inch for the rest of the frame, which came to $288.72 from my local steel monger. That is almost twice what it would have been just 12 months ago! The steel I got was clean, straight, and true, no complaints. It's actual dimensions are 2.011 x 3.008 with a .119 (inches) wall, which probably means it started life as a 3mm plate which was folded and welded into the tube. The cuts done by the steel monger are a bit rough - they are proud to provide them cut to the nearest 1/8 inch! They sell it by the foot anyway, so rounding up to the nearest foot and doing your own more precise cuts on each end is the way to go.

So, the high level order of operations on this build is to:

1. Determine working size you want.

2. Enter those numbers in the online calculator and note the resulting steel lengths needed and copy the BOM.

3. Order the movement kit of the BOM to Aliexpress. You can also add the motors, a spindle, and drivers if you need them as well.

4. Buy the steel called for in the BOM and once you have it, take actual measurements of its corner radii, tubing thickness, etc.

5. Enter those steel dimensions into the On-line calculator, let it modify the F360 model and from the resulting model changes, generate the 3D print stl files and print those, starting with the assembly guide tools.

6. Fabricate the frame including the movement parts according to the wiki and assembly guide.

7. Make a controller box and do the wiring which includes the cable chains and

8. Create the computer system to host the g code interpreter, whichever one you choose, like Mach 3, LinuxCNC, GRBL variants, etc.

I've already done 1 through 5 as described above, so let's move onto step 6.


Fig. 2

Using my metal bandsaw, I've cut the 2x4 inch tube for the gantry to 1550mm, three of the 2x3 inch tubes to 1550mm, and one of the 6 ft 2x3 tubes into (2) 900mm lengths. The cutoffs left from that was more than enough to cut the 90 and 70mm sections for the ballnut housings. It is important that all tubes of the same nominal length be cut to the same actual length, so I cut those all at the same time to make sure. The 2x4 gantry was an option since it's only a 2x3 on the default size machine, but my gantry is a little longer than what is recommended for a 2x3, so the 2x4 tubing should help prevent bowing of the gantry. The Z carriage design will accommodate either a 2x3 or 2x4 gantry.

Unlike the longer tubes, the shorter ballnut housings (aka "rollers") must have their ends cut square. To do that, I placed them in the vise of my mill, making sure their sides were clamped parallel to the milling bit. From there I took off as little as possible to square up the cut edge of one side, then turned it over and did the same on the other side. This ensures the cut ends are square and parallel to each other.

Once the steel is cut and deburred, it needs to be cleaned and protected. Figure 2 above shows prepping it - I used a wire wheel on an angle grinder to get rid of any burrs, spots, scale, or rust creep. Then I used a solvent (lacquer thinner) to wipe off the fingerprints and factory grease so the primer will stick well. You are working around cut steel, so wear thick gloves!

I used a self etching primer here because in addition to the gray pigment, it contains an acid (phosphoric acid - same as in most sodas) and powdered zinc. This combination chemically forces the zinc onto the surface of the steel, providing some galvanic rust protection. I think this will suffice until the bulk of the drilling and machining work is done and fitted, and then I will apply the color coat in an effort to keep it from showing the inevitable nicks and dings from fabrication.


Fig. 3

Here is the primed steel for the new machine on top of the cleared table left from my previous CNC. The upright steel pieces are the three ballnut mounts (or "rollers") stacked so that you can see their edges are exactly square and perpendicular to each other - there is no gap anywhere along their edges.

Once you get your steel, you take precise measurements of the steel including overall widths and wall thickness with a caliper. There is also a 3D printed gauge you use to determine the radius of each corner - mine was just under 6mm. Those measurements are fed into the F360 model, and the 3D printed parts then change to match your exact steel sizes. You then export those STLs to print them.

The next step is drilling the holes and tapping some of them to allow the basic frame to be assembled. Toward that end, the project file includes some 3D printed drilling guides (the purple objects shown on the right that have been adjusted to your steel dimensions) so that accurate hole placement has a chance to occur. The guides are used with a 1/8 inch transfer punch (the black pencil-lead looking tool shown above) to mark the hole location, and then a pilot hole is drilled on that spot.


Fig. 4

I see YouTube videos with builders drilling their pilot holes with a 1/8 inch twist bit. Due to the flutes that allow the swarf to leave the hole, a typical jobber twist drill has a cross sectional area of approximately half of the area of its shank, so there is only half or so of the 1/8 inch cross sectional steel area along the length of a bit, making it very easy to bend, wander, or break from it's drilling location. This is why they make center drills, which are way more solid and have very little tendency to do that. One is shown chucked in the drill above.

After using the 3D printed drilling guides to mark hole placements with a transfer punch, I followed that with a center punch (lower left) to deepen the dimple - two of those dimples are shown above along the left edge of the steel tube. I then placed the center drill point into the dimple. Once the hole is started with the center drill, like those shown on the right edge, a twist drill may be used to complete the hole since the bit will already be guided by the hole's start. Definitely use cutting fluid on the drill bit. I used Tap Magic, but just about any oil will work. Likewise, the final hole dimension can then be drilled to size by a larger twist drill since its placement is already determined. In case you are using a mill to precisely locate the holes, the hole pattern used above is 54.4 x 29.2mm, and will appear in other places as well. While a drill press can certainly help, just using a center drill goes a long way to giving you the hole placement you need. Take your time with drilling the pilot holes. The more careful you are here, the way less work you have to do later to make up for errors. Once all the holes are drilled and threaded, the frame will be assembled and checked for fit.

Along those lines, most of the hole placements on the this project are pretty critical, especially for the rollers. Since the rollers easily fit onto a mill vice, and I have DRO'ed mill, I will be using it to make sure the holes are placed and drilled properly. Kudos to Hoges and the rest of the folks that contribute to the printNC design for making it possible to build only using common tools, but if you have a mill, why wouldn't you use it?


Fig. 5

Here I've started putting together the framing, working on it upside down for the initial assembly. Take your time and make sure everything is square at this point. I used several different squares and a measuring tape to compare corner distances. Slightly larger holes are drilled on the bottom surface of the tubing (shown above facing up) so that you can get a hex wrench tool down to the bolt heads inside the tubing.

It was also time to make a table surface to build and install the machine on. Due to the slightly larger machine size, this needs to be a bit larger than the current table, which means I also need to think through what I am going to do about an enclosure. Above, I've cut a sheet of melamine for the top of the table that I believe will provide enough room.


Fig. 6

Here the frame has been squared, tightened, and turned right side up. The HGR20 Y axis linear rails are next - they are located along the Y axis beams using the purple 3D printed positioning guides and then drilled and tapped. Later, when the majority of the drilling is done, the frame will be disassembled, painted its final color, and reassembled. Lots of drilling and tapping now.


Fig. 7

So, the BF12 mount support (the gold colored 3d printed part on the right) was placed at the far end of the Y axis steel tube. The rail shown in Figure 6 was positioned flush with that mount support and centered. The rail was then drilled, tapped, and screwed into place. The BF12 mount support was also drilled and tapped to allow the BF12 mount (the black object on top) to be screwed onto it. Then, a HGW20 roller block (the black, red, and green thing) is slid onto the rail, and holes have been drilled into the bottom of the roller case (6.5mm holes in a 53x40mm pattern, done on the mill) so that the case is screwed onto the roller block. The ballscrew is then inserted though a 3d printed faceplace, the roller case, and another faceplate, and then into the BF12 mount. Long M5 screws hold the ballnut to the faceplate, through the case and out the rear faceplate, and then secured with self locking nuts.

The top of the rollercase is drilled and tapped M5 holes in a 54.4 x 27.2 mm pattern (also done on the mill - notice it is slightly different than the pattern used above in Figure 4) to allow the X axis steel tube to be mounted on top.


Fig. 8

Above is the other end of the Y axis rail. There are a couple of options for mounting the stepper motor - one of those is using a metal L bracket on a printed mount platform, like what is shown above on the left. The stock mount is fully 3D printed, like the one I printed shown sitting on the table in the upper right. However, I was concerned that the motors might get a bit warm during a long run and distort the plastic, so I opted for the metal bracket. A third option is to use the printNC to machine an all aluminum mount, for which there are already model files out there, but I think I will go with this and see how much of a problem the heat will be.

The gold BK12 mount support is screwed into the tubing and is also flush with the end of the rail, and the black BK12 mount is screwed into the support. The coupler is in place, and everything appears to line up correctly.

The other Y rail was done in just the same way as the one above. Then its on to the X axis and its carriage.


Fig. 9

Above, the same kind of thing is done along the X axis tubing, except the linear rails are mounted on both top and bottom to provide a solid attachment for the Z carriage. The same fixtures that were used on the Y axis are also mounted to support the stepper motor and ballscrew.

BTW, see the length of the X ballscrew? That is near the length limit for screws of this diameter before the speed would begin to be severely limited by what is called "whipping", or resonance of the screw as it rotates. Longer axes than this usually means using rack and pinion rather than ballscrews unless resorting to rotating ballnuts.

Now that the major drilling and tapping is done, the next step is to take the frame apart for painting the steel and reassembly.


Fig. 10

After awhile, I came to like how the gold and grey went together, so I sprayed hammered silver for the finish coat. I've used it on other tools, and it's a fairly tough paint. After taking the whole thing apart, prepping it again, spraying it a couple of coats, letting it dry, and re-assembling, it looked like the above. All three ball screws turn with minimal effort. In the middle of the X gantry you can see the Z axis bearing blocks in the middle of the rails, the bottom one with the Z angle already attached. Once the wiring is complete, there are printed caps that go over each open tubing end.

Now onto the Z.


Fig. 11

The instructions call for the V3 Z axis plate (the fixture on the left) to be made out of plywood and then once the machine is operational, use it to mill its aluminum replacement. However, there are guys on Discord who not only made their own aluminum plates with their PrintNC, but will make them for you. I got mine from gerrg#7760 on Discord, who made them on the day he said he would, and shipped them to me right away. They look great! I am really looking forward to my machine being able to make these kinds of parts.


Fig. 12

The Z axis plate in Figure 11 has the angle bracket screwed into the rear of the plate on the bottom (it's also shown attached to the bearing block in Figure 10) and the X axis roller (ballnut housing) is also screwed into the back of the plate. Between these two fixtures will be attached the rail roller blocks that slide on the X axis. On the front of the Z plate is screwed the two short HGW20 linear rails. On top is a 3D printed motor mount screwed into a BK20 ballscrew mount and then into the Z plate. The ball screw is inserted into the mount, and the ballnut face is screwed onto the T shaped fixture.

There is so little movement of the Z axis during a run that I am not at all concerned about heat on the motor mount.


Fig. 13
Fig. 14

Above, left, the two linear roller blocks are slid onto the rails, fitting right up to the T shaped ballnut housing. On the right the spindle plate is laid on top of that shown in Fig. 13. that has the right holes drilled to allow roller blocks and the ballnut housing to be attached. The end of the ballnut screw is just left floating for now, as it cannot go anywhere, but I will add a collar clamp there in the unlikely event that the BK12 bearing fails.

Next, the spindle clamp needs to be fitted to the spindle plate.


Fig. 15

Towards that end, a template is provided that is printed and glued to the back of the cast aluminum spindle clamp, shown above. The spindle clamp is clamped between two equal length pieces of wood to hold it flat to the drill press. The indicated holes are then center punched, and a center drill is used to start the holes. The holes are then drilled to their final size, and a few of them get tapped.


Fig. 16

The Z axis with the spindle clamp mounted, ready to slide onto the X axis rails. This design has set screws for easy tramming for both front rotation and head nodding. The two gold fixtures on top of the spindle clamp allow a screw to bear down on either side of the clamp, so that you can loosen the clamp screws and use the adjustment screws to bring the clamp into alignment, and then re-tighten the clamp screws. There is a similar arrangement on the back of the plate.

All that remains for the Z axis is the limit sensor and the stepper, and of course the spindle itself. These parts involve wiring, which will wait for the cable guides to be installed.


Fig. 17

Here the Z axis is in place with the spindle awaiting coolant hoses and wiring. The next step is installing the cable chains in order to run the wiring for everything. That's what the aluminum angle is for under the spindle.


Fig. 18
Fig. 19

Above left shows some milled brackets to support the ends of the cable chains. L brackets on the side are used to support the aluminum angles that form the track, and the other four fixtures are bolted onto the ends of the chains to provide a place to anchor the lines running in the chain and provide strain relief. The cluster of holes provide a place for cable ties to fasten the lines as they enter or leave the chain. These will be painted to match the frame. There are 3D print models available to do this, but I prefer metal where possible, and they didn't take long to make. In Figure 19 there are some support pieces that are flush riveted to the L brackets, forming a shelf for the longitudinal supports which hold the cable chains. The bottom one is already painted.

I should note that I am using a different size chain than the nominal one - the BOM calls for a 25x57mm chain (the inside dimensions) but after looking at the cables needed, including spares, I felt that was a bit overkill so I am using 38x38mm chain, and the bracket sizes above reflect that.


Fig. 20

Above shows the tray for the Y axis cable chain, made up of 1/16 x 1 x 1 inch angle aluminum and the brackets shown in Figure 19. This size tray doesn't extend out from the side any more than the X axis stepper motor already does. The same process has been done on the rear of the X axis for its cable chain.


Fig. Y1

There needs to be a case for the controller electronics, but regular "junction box" cases are $150 and up. I went to my local electronics recycling center and picked out a large Antec server case for $15. After taking out the interior walls for the drive cages, etc. I replaced the corners with some angle aluminum, and cut some aluminum sheet for a new front and back. I had the sheet on hand and the aluminum angle was $11. This will give me a grounded metal enclosure, a fresh front to mod for switches, a place to mount fans, the stepper controller, etc. I will hinge one of the side panels (another $8), and rivet the rest of the pieces. Total of $32 out of pocket for the case.


Fig. Y2

Figuring out where to place all the components in the case. I will be using the G540 stepper driver (the black box on the right) that I used on my previous machine to drive the steppers, which makes for more simplified wiring. I also added a hinge on the left aluminum corner to make this side a door.


Fig. Y3

Above shows the front panel before labeling. The top is the VFD control panel remoted using an extension cable to this spot. The black mounting bezel design for the panel is courtesy a Discord member, Logan - thanks! Just under that to the right is the main off/on toggle switch, and to its left is a power meter that displays power consumed by the controller. Under that is a volt/ammeter that displays voltage and current to the steppers. (I like to measure things!) To the right of that are the two Start/Stop switches. These control a contactor relay in the box that performs a latching function so that when power is restored after an e-stop, there is no possibility of inadvertent movement of the machine without manual action - a safety feature. Two other E-stop buttons will be located in easy to reach places around the machine itself.


Fig. Y4


Comments may be directed to gary at liming daught org.

Thanks for viewing this build log!