CNC or Computer Numerical Control, for short. Basically, a computer-controlled machining tool. Through an unexpected career turn, I ended up working for a machine tool builder. But it wasn't until I became interested in designing and building a telescope of my own that I became interested in learning how to program them. Despite my best efforts, I just can't seem to cut, drill or tap straight (my hands just shake too much!). But programming, well, that I can do!
Why
In the course of designing and building my telescope, the Stargate-1 & 2, there were parts that could not be practically made by hand. I work for a machine tool builder, and I also have a friend who has a machine shop. But, despite the irony of being surrounded by CNCs, it seems to take forever to get machine time. And I just keep coming up with ideas for projects, projects requiring machined parts. The only practical answer is to buy or build a CNC of my own.
When I started building my telescope, it was for the thrill of having a large-aperture telescope of my own. I later realized that I was also hooked on the do-it-yourself aspect of it. I initially had planned to build a CNC first, dubbing it the "Freedom CNC". That was a year ago. But I would need machining capabilities before I could do this. Plus, I keep coming up with projects having parts that could only be easily made with a CNC. Six months later, I scrapped the idea and began saving up to buy a suitable 4-axis CNC- the Freedom CNC was dead. A year later from the conception of the Freedom CNC, almost to the day, I saw that I may have the need for a 5-axis CNC (such as to make a high-efficiency heat sink for Thermopower), and there are none such commercially available (at least of the bench-top variety) that I could find. Not to mention that there are things about the mills out there that I'm just not happy about. All that I have seen have a DOS-based interface, and use the parallel port. The CNC command code set with my choice is lacking, too- no M98/M99 subroutine commands, for example. And let's not forget something else important- what will I do when I actually finish all of my other projects? The Vector CNC is born.
Specifications
5 Axes: X, Y, Z, A & C
215-250mm Circular Table (large enough to handle a 150mm square workpiece)
Resolution- 0.0001"; Angular, 0.01 degree
Linear Interpolation
Circular Interpolation
Helical Interpolation
Drilling Cycles
Subroutines
USB Interface
Windows Interface
Wants
Tapping Cycle
Tool Length Presetter
Plan
Ok, now that I have a goal, now what? Picasso once said "Good artists copy, great artists steal". Not that I'm planning an act of industrial espionage, but as I do now work for a CNC builder, I have working examples to study. In my original design, for the B-axis motion, I was considering a rotating head. The column was to be stationary, and the optional 5th axis was to be a rotary table moved by the X-Y axes. Now the A & C axes are fixed to the base, and the column moves along the X-Y axes. Lastly, the Y-axis will move on twin synchronized screws.
My plan for motion hasn't changed. Using stepper motors with a resolution of 1.8 degrees per step and a controller capable of 10 microsteps coupled to a 10-pitch leadscrew, a theoretical resolution of 0.00005" is possible. A worm shaft and gear with a 60:1 ratio, makes a rotary table capable of 10.8 arc-second (0.003 degree) resolution theoretically possible. Stepper accuracy of +/- 5% per full step is not unreasonable to expect.
Since most, if not all of the CNC software out there is written for DOS and the parallel port, I will have to write my own. I will likely do it with Visual C++ or Visual BASIC. Now I can put in all of the command codes that I would like to see there. And I can also write custom commands. How about interpolation for non-circular curves such as a parabola (that would be handy for milling a reflector)?
Since Windows isn't a real-time operating system, the Windows interface will only serve as a user interface. Instructions will be sent to an embedded controller on the CNC side via a USB interface. This controller will buffer commands from the PC and generate the timing pulses for all five axes.
Other features that I would like to include are a tapping cycle and a tool length presetter. Tapping will require accurate control of Z-axis motion and spindle RPM, meaning encoders for both. Tool length measurement will require a sensitive detector for the tool. Another idea in the brainstorm category would be some kind of dynamic tensioning to counter twisting. Wires of nitinol (a.k.a. "muscle wire") could serve to tension and keep the moving column stable. As I have plenty of time to brainstorm, I'm sure more ideas will pop up here.
Useful Sites
Sanyo Denki- A maker of stepper motors. This site is an all-around great reference, as well as source of parts.
Gecko Drive- A maker of stepper motor controllers.