I made a small desktop 3 axis CNC milling machine during the xmas holidays in 2008 and completed it sometime in Jan 2009. The project was inspired by another homemade desktop CNC project and motivated by boredom. The cutting area is about the size of an A4 paper.
The general work area is shown in Figure 1. The milling machine was made from common parts that can be found at Bunnings (Australia) or automotive stores. I’m using stepper motors from an old laser jet printer, a computer power supply for 12V output, an off the shelf stepper motor controller from the US, and a Dremel 300 as the milling tool.
Figure 2 shows the milling machine from the front.
Figure 3 shows how the threaded rod is connected to the stepper motor using a rubber hose for the coupling. I stole this idea from the Easy Desktop CNC mill mentioned in the intro, pretty clever.
The threaded rod and nut are mounted to the base using plumbing copper brackets, as shown in Figure 4. There was a noticeable backlash using one nut so I used two nuts. Originally, I used a plastic base but the compression due to the bracket on the nut caused a slight bulge and created an uneven working surface. I replaced it with a 4mm thick aluminium sheet.
Figure 5 shows the ball bearing support for the x-axis rod. The ball bearing is needed because the long rod wobbles quite significantly, where as the other axis are short enough to remain rigid. I used a piece of rubber hose to make a tight fitting between the rod and ball bearing. I appeared to have misaligned the bracket slightly in this picture.
The parallel port stepper motor controller is shown in Figure 6. I used 3 EasyDriver controllers for each motor. These controllers really are easy (like shooting fish in a barrel). They accept step and direction as input, 4 wire output for the bipolar stepper motor and 2 input for power (from 7V to 30V). On the board is an adjustable current limiter, which means you don’t need to build a separate voltage regulator for the stepper motor. The controller is set to 1/8 micro stepping by default. The controller works without a heatsink but I added two fans to make sure they run cool. There was a time when the motors were acting funny and jittering randomly on a hot day. I didn’t figure out if it was the motor controller or power supply. The two holes for the fan was cut using the milling machine but due to the plastic melting they came out pretty rough
Figure 7 shows some of the Dremel tool bits I have been experimenting with. Some have been burnt due to some rather ‘ambitious’ milling of the MDF wood.
Figure 8 shows Tux (Linux penguin mascot) engraved on wood, one of my first tests.
- Ubuntu LiveCD with EMC2
- QCAD (for doing 2D designs)
- dxf2gcode (for converting the 2D designs to G-CODE used by EMC2)
The milling machine was controlled using EMC2 (Enhanced Machine Controller). It runs on the Linux platform and requires a real-time kernel to be installed. I used their LiveCD (Ubuntu) and did a fresh install on to the desktop computer. I found that turning off non-essentials like the soundcard improved the latency a bit. For doing 2D designs I used QCAD. To convert the DXF format from QCAD to G-CODE (used by EMC2) I used dxf2gcode. The workflow can be summarised as
Design in QCAD -> dxf2gcode -> EMC2 -> Final milled product
I decided to test my machine out by choosing to make a gift for a friend’s birthday. I wanted to engrave a happy birthday message plus an anime character (Luffy) from One Piece, which appears to be her favourite anime because she would not stop raving about it. I wanted the engraving to be able to stand upright so would require a separate base to be milled. The first step was to hunt around the net for a suitable image. I chose the following image below
The next step was to import the image into QCAD and trace over it and add the happy birthday message as shown below.
Having designed the engraving, I now needed to make the cut out shape. I chose a simple design with some curves to test how well the machine can handle them. This piece will be mounted onto an oval wood piece.
The design is now converted to G-CODE using dxf2gcode. I made two separate files for the engraving and cut out shape because dxf2gcode doesn’t handle different layers individually (engraving and cut out shape).
Here is the final product. The hardest part was milling the MDF wood! MDF is quite tough and harsh on the tool bits and creates a lot of dust. I had to wear a dust mask and have a vacuum cleaner nearby to clean the mess it left. The oval piece had to be cut across multiple passes. I initially used 2mm per depth pass but found it would leave burn marks on the wood and tool. 1mm was found to work well but not perfect. The problem was mainly due to MDF dust accumulating in the cut grooves. I either need to mount a vacuum hose or air gun near the Dremel to remove the dust. I sanded the oval shape down using the Dremel sanding bit but didn’t come out even, Would have been better to use sandpaper.
I should have also chosen a tool bit with a round head because the one I used, which had a somewhat pointy tip, left white residue marks in the grooves. Other than the problems mentioned, the results are not bad for a first project.