CNC mill

Mini mill made from cheap Chinese parts and a pile of 2x4 scraps

Similar projects worth following
This is a small machine (about 7x6x5" working area) primarily designed for CNC milling of aluminum cycloidal discs, but also with versatility in mind, being usable as a mini drill press and manual mill. It was originally intended to be a prototype, after which I'd build the real one out of aluminum, but I'm pretty happy with it as-is. It weighs about 20lbs, which is very nice since I don't have a dedicated space for it.

I built this machine entirely with hand tools, except for a power drill to turn large step drill bits that I couldn't manage with my hand crank drill (would have used a hand brace drill if I had one), and dremel with router base for the screw head pockets in the 1/2" aluminum bed (if I didn't already have it, I would have made a temporary wood or MDF bed with the screw heads sticking up and then used the mill itself to make the final bed). 

All three axes use MGN12 linear rails (about $10 each from Banggood). The Y axis (bed) has four blocks on two 300mm rails. Z axis has four 200mm rails with one block each. X axis is two 250mm rails with one block each. These cheap rails are not very consistent (the blocks on some were way too loose while others were way too tight), but by mixing and matching blocks with rails I was able to get them all pretty good. All rails have a 1" wide, 1/16" thick aluminum strip underneath to provide a hard mounting surface, preventing the rail from indenting the wood and causing alignment problems.

The X and Y axes use SFU1204 ballscrews, mounted using 3D printed cranks and shaft couplers. The way the bearings are placed on the outside surfaces of the frame, the axial forces on the ballscrew are transferred to the bearings via the set screws and 3D printed parts. Not really proper, but it works.

The Z axis uses dual T8 leadscrews, with two nuts each to enable backlash adjustment. The top side nut is buried in a pocket since it would reduce the maximum Z height a bit if it sat on top of the flat surface. The underside nut can be twisted until it's just short of binding, giving very low backlash. I was going to do quad leadscrews, but due to failure of my original plan and subsequent laziness, there are only two now. The others should increase rigidity in the Y direction (prevent tilting of the whole X axis unit), but I'm not sure they're really necessary.

The spindle is a 2 1/4" x 2 1/4" x 3" mahogany block, with a 5010 brushless outrunner on top, a big 16x35x11mm bearing on the bottom, and ballscrew nut going through the side of it. I replaced the motor's shaft with a 5mm rod going down into the block with an ER11 extension chuck on it. Normally you put two bearings on the 5mm rod and then have the chuck dangling on the end of it, but with the big bearing around the chuck itself, rigidity is much improved. It does cover the wrench flats in the chuck, but instead of using two wrenches you can simply grab the motor with your hand and then use a wrench on the chuck nut. Can't get quite as tight, but I haven't had any trouble with bits slipping.

The big bearing gets hot during longer operations, and I'm not sure why. I'm pretty sure everything is aligned well. Ideally I'd like to use a C10 ER11 chuck (integral 10mm shaft rather than the 5mm extension chuck) with 7000AC (10x26x8mm) angular contact bearing, but I don't think there are any small motors that can directly turn a 10mm shaft, and there's no space to move the motor off to the side and turn it with a pulley or gears.

Construction of the frame was fairly difficult, getting everything perfectly square. Tools used: Hand crank drill, dozuki saw, block plane (for rough dimensioning), jointer plane (very sharp, able to take fluffy thin shavings), sandpaper for squaring the endgrain, and an extra-extra-coarse DMT Dia-sharp stone for final flattening of all surfaces. Straightedge, combination square, and $5 digital calipers for measuring. Probably a few other tools here and there. Glued together using hot hide glue (makes strong endgrain joints if you pre-coat with glue to clog the pores, let it dry, re-flatten, and then do the real glue-up), and finished with shellac (give it one heavy coat to raise the grain and harden the surface, then a light sanding or scraping to smooth it out, and another coat to make it shiny).


Rough Blender model of the machine.

blend - 1.52 MB - 09/01/2020 at 23:40


  • Refinements

    dekutree6405/20/2022 at 23:12 1 comment

    Long time no update! I've made many improvements to this machine since its original construction, greatly improving precision, reliability, and ease of use.

    1. Added a 4010 fan blowing on the stepper drivers. I was worried they wouldn't last very long being asked to drive these beefy NEMA23 motors, but apparently my fears were unfounded. The drivers stay cool with the fan.

    2. Replaced the 3D printed cranks with a two-piece metal design which allows me to apply tension to the ball screws after tightening the set screw, improving backlash (about 6 micrometers now, which is quite small but still needs to be compensated for)

    3. My 3D printed stepper/ball screw couplers kept wiggling their set screws loose, so I replaced them with Chinese spiral-cut flex couplers. This involved replacing the original ball screws with the kind that have machined ends, which I hack sawed so there's only about 2cm length of the 10mm diameter machined end left. I may change again to the oldham coupling style, because the flexibility may be the source of my remaining backlash.

    4. Added pause/resume pushbuttons (wish I'd known how to do this right off the bat, as they are essential for safe operation when the computer is on the other side of the room)

    5. Added DIP switches connected to the enable pin on each stepper controller so I can switch axes off individually to move them manually.

    6. Added an LED connected to the spindle, and a "wand" connected to 5V with a resistor. By touching the wand to the bed, the LED will light up when the tool makes contact with the workpiece, allowing for quick zeroing of the Z position.

    7. Added vernier dials to the axes (printed on laser printer transparency film and painted on the back with white acrylic) so I can do precise work in manual mode, and for setting up CNC work because the motors jump to the nearest full step position when switched on. Now I can zero the dial, switch on the motor, and jog it back to exactly where it was.

    8. The tool would wobble slightly in the Y direction with each turn of the X ballscrew, so I replaced the X rails with a big high quality rail I found cheap on ebay. That made no difference, so then I put one of the MGN12 rails on the other side of the spindle block, which solved the problem. In hindsight, simply adding a third MGN12 would have worked, but the big rail certainly doesn't hurt.

    9. The spindle has been through several revisions. Chinese ER11 chucks and collets have terrible runout, so I bought a good chuck from Shars. However it has a 1/2" shaft, and there was no way to adapt the 5010 motor to turn it directly so I had to use a belt drive. I used that for a long time without issue, but recently modified a Racerstar BR4114 to turn the 1/2" shaft directly, getting back to my original vision for the machine. It ended up being unbalanced so I taped a small steel rod to it, but hopefully I can figure out the actual source of the imbalance and fix it properly.

    I had a lot of trouble with spindle bearings. Lessons learned:

    1. Nobody makes 1/2" angular contact bearings, and nobody makes a high quality straight shank ER11 chuck that fits available angular contact bearings.

    2. All radial ball bearings have a bit of wobble in one direction at some point in their rotation.

    3. Small bearings are no good, even if you buy expensive ones.

    4. It's very difficult to mill bearing pockets in opposite ends of the spindle block and have them come out perfectly concentric.

    Currently I have a precision milled pocket in the bottom of the spindle block with two (or was it three?) big bearings, and an oversize pocket in the top of the block where I glued two more big bearings in with epoxy in the hopes of creating a perfectly aligned pocket. But it doesn't seem to have worked, because the spindle gets hot after running at high speed for a while. Probably will kill the bearings eventually, but they've put up with it for a good while now and still no vibration...

    Read more »

View project log

Enjoy this project?



michimartini wrote 05/10/2022 at 17:18 point

Wow, i love this CNC, it's also so beautiful, it could be in a living room and no-one would object. I love what you did with the spindle - the 5mm shaft is normally what kills the chinesium mini-CNCs for machining aluminium, it's just too wobbly. 

  Are you sure? yes | no

Paul McClay wrote 09/02/2020 at 06:27 point

Looks like careful attention to your woodwork turned out very well!

Rolling your own cycloidal parts sounds like part of another interesting project.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates