DIY CNC Milling machine
For a while now I've been thinking of building a small CNC mill so that I can mill aluminium stuff. For the most part I want to build it so that I can mill cylinder heads and pistons for aircooled VWs, which is another passion of mine (after software). I already have a large manual mill which replaced a small mill which I was consequently considering converting to CNC, but then stumbled across a kick-starter project called the Sienci Mill. https://sienci.com/product/sienci-mill-one-kit/
The Sienci Mill is the simplest form of mill that you can build. It probably has more in common with a 3D printer or router than a traditional mill, but then it is this simplicity that has appeal. Retrofitting a CNC control system to my small mill would require a certain amount of modification and update to the mill, for example I would need to replace the lead screws with ball screws, and overhaul the bedways and gibbs as well as make a new Z-axis and fit a different style of spindle. With building a new system from scratch I overcome many of the issues that I would otherwise need to invest time into fixing. So with this in mind, and also mind-full of the accuracy limitations of the design I decided that I wanted to build one.
One of the great things about projects like this is that in most cases the designers are big proponents of the open source movement and so make their designs available for others to use. The Sienci mill is no exception, which is great for people like me as it means that rather than pay and wait for one to be made and dispatched I can build my own, and maybe make some improvements as well. I know that this may sound a bit cheap of me, as after all, the Sienci mill is not exactly expensive, and these guys have invested the time and effort into it, but there is that part of me that says, 'hey I could make that', which drives me to have a go at these kind of projects. I also figure that as I release stuff back into the OS community I have a good balance between the give and take of things.
The standard Sienci uses a palm sized router, Nema 17 (1.5A) Stepper motors an Arduino Uno and a CNC shield with Pololu stepper drivers. The 'build' area is 235mm x 185mm x 100mm and it will happily cut aluminium to an accuracy of 0.1mm or less. This is a little small for a cylinder head, which needs about 350mm x 180mm x 130mm. It might also be a bit underpowered with the NEMA 17's as a cylinder head weighs a fair bit. So to get it to do what I need I'm going to have to 'upgrade' the design a little.
The first change is swapping out the 1.5A NEMA 17's for 2.8A NEMA 23s. This then creates a bit of an issue with the CNC shield as the Pololu drivers cannot handle the 2.8 amps drawn by the larger motors. I spent a bit of time trying to find a compatible driver but there is nothing in the same format as the 4898's that can be substituted to handle the extra current. This means that I need run the CNC shield driving a larger external driver like a 6600...
I've previously used these on my CNC plasma and they work really well.
So with the motors and drivers taken care of I started to wonder if the Arduino Uno and CNC shield was the best option, after all, the CNC shield without the Pololu drivers was pretty useless, I might as well just connect the 6600's directly to the Uno. I did a bit more research to see what alternatives were available for larger drivers. My Plasma CNC runs Linux CNC on a computer with a BOB (Break Out Board) connected to the parallel port. this in turn is connected to the drives and field I/O. I considered using a similar set up as I was already familiar with it but decided that this would make the unit too cumbersome and also take away the portability that it originally had with the Uno. I did however stumble across a stand alone CNC controller that looked like it might do the job. The DDCSV1 is a 3/4 Axis CNC controller that does not need an external computer for it to work. It is a basic G/M code processor that can drive a 3 or 4 axis machine - perfect for what I want to do. The stepper drivers can connect direct, as can a spindle controller and manual shuttle controls and the best thing about it is the price. It's dirt cheap. I managed to find an interesting thread over at MadModders where they had reverse engineered the unit and improved the design. General consensus was that it was quite a capable unit.
So, with the drive motors, motor drivers and the CPU unit taken care of I decided to turn my attention to the rest of the design. The standard Sienci uses an ACME style threaded rod with anti-backlash nut. I decided that if I wanted to mill aluminium 90% of the time, I might as well upgrade the transport system for something a little better. First option was ball screws. So I ordered a 400mm ball screw for the Z axis, a 500mm ball screw for the Y axis and a 750mm ball screw for the X axis which exceeds my dimensional requirements by a fair margin. I may shorten the X axis a little as a longer span on the axis' increases the potential for deflection / vibration / chatter. I will see how the design pans out.
At this stage that's about as far as I have got. I've received one of the ball screws but am still waiting on the rest of the parts. I'm undecided on whether I use the Sienci transport design or go for something more substantial like linear rails and bearings. Obviously linear rails would be far superior, but it would also take longer to put together and require a more substantial frame design. For the moment I have ordered some vee profile roller bearings so that I can make a similar setup to the Sienci, but I may yet change my mind.
Apart from ordering some buttons and knobs (and the router) that's as far as I have got. At this stage I'm planning to build the case as per the original Sienci design but upsize everything. I will most likely use two linear bearings to support the Y axis as this will provide a much more stable base platten but I think that the standard transport design will be fine for the other axis.
I'll post a bit more when some more parts arrive.