- Joined
- Jun 19, 2022
- Messages
- 1,107
- Reaction score
- 1,620
- Points
- 128
I need another project like I need a hole in the head, and I will probably live to regret this, but I'm going to do it anyways. So here goes nothing...
I'm going to make my own CNC mill by converting an all-manual operated bridgeport style knee mill into a computer controlled one. I'll keep adding to this thread as I go, and feel free to chime in if I'm about to do something obviously stupid. I see this taking months to complete. The end goal will be having the machine cut a Sig P320 fire control unit blank from a sheet of stainless steel stock. I'll figure out how to fold it up later, but I have to create one to even try.
First problem... Money. I want to avoid purchasing proprietary software and hardware to do this. So there appears to be two possible avenues to pursue in the open-source world: LinuxCNC and GRBL.
LinuxCNC is a IBM PC based solution. A set of tools running on the Debian Linux operating system, operating the motors of the mill in real-time via a simple hardware interface. There are several choices, but the lowest cost one is a parallel port break-out board (called a BOB.) The BOB takes the PC's parallel printer port and uses the signal wires to run the stepper motors and read the limit switches on the mill. In this setup, the PC is the entire brains of the mill.
GRBL is an Arduino based solution. An Arduino micro-controller is loaded with the GRBL program. A CNC Shield tacked onto the Arduino give the Arduino a hardware interface to the motors and switches on the milling machine. In this approach, the PC feeds commands to the arduino through a USB cable, and the Arduino executes them on the motors and switches in the milling machine. This way of doing it is arguably safer... the arduino's only task is to look after the hardware in real-time. Taking the load off the PC that is feeding commands.
Now, which is better? I dunno. I'm going to try it both ways. Both methods work the same way. They take G-code commands and carry them out by moving the motors on the mill. One does it all on the PC and the other is a dedicated micro-controller that carries the commands out as it receives them.
Either way, we are looking at probably $100 worth of chips and boards to start with. I already had a spare Arduino (Uno R3) laying around, so I needed the shield board, which arrived today. The BOB needed to do the same thing with LinuxCNC also arrived today. So, the initial hardware purchase is done. I can play around with both before figuring out the specs of the motors needed to run the mill, which will dictate what kind of motor driver circuits and power supply needs to be acquired.
Now, there is another aspect of this project that has to be considered.... How to generate the G-code commands that are going to be executed in the first place. Fortunately, it is the same for both.
First, you need a drawing of the part to be made. That's the CAD in the CAD/CAM world. In my case, I'm using FreeCAD for linux. It's the same software I've been messing around with 3D printing.
Next, you need to take the drawing and create tool-paths. That's the CAM part of the CAD/CAM world. A tool path program takes the drawing and creates the sequence of instructions for the mill. If you imagine the cutter on the mill as a race car driving around a track, then the CAM is the detailed description of each lap the car is going to take around the track.... when to turn the steering wheel, when to step on the gas, when to shift gears, when to stomp on the brakes, etc. It is every movement the mill is going to make. In the 3D printer world, this is the slicer. In my case, there is a free CAM package available called DeskProto that looks like it will fill the role.
And last, you need something to take the tool path files (which are in G-code) and feed them to the hardware. For the Arduino this is done by an application called GCodeSender. It is going to be the front panel of the mill represented on the PC talking to the Arduino and feeding it the G-Code command by command. In LinuxCNC, the application itself takes on this function, since it operates the motor directly.
And that is pretty much all that is going to be involved.
The next task for me is to load the GRBL on the Arduino and test it out with some dummy hardware (a make believe mill to make sure all the inputs and outputs or OK.) Then scrounge around the garage and the basement to see if I already have some suitable motors. I recall boxing up the motor from my ex-wife's treadmill... from one of her many failed attempts to loose weight. I hear those motors make excellent variable speed spindle drives. Go I guess I need to dig through the boxes of stuff that moved with me from Florida.
I'm going to make my own CNC mill by converting an all-manual operated bridgeport style knee mill into a computer controlled one. I'll keep adding to this thread as I go, and feel free to chime in if I'm about to do something obviously stupid. I see this taking months to complete. The end goal will be having the machine cut a Sig P320 fire control unit blank from a sheet of stainless steel stock. I'll figure out how to fold it up later, but I have to create one to even try.
First problem... Money. I want to avoid purchasing proprietary software and hardware to do this. So there appears to be two possible avenues to pursue in the open-source world: LinuxCNC and GRBL.
LinuxCNC is a IBM PC based solution. A set of tools running on the Debian Linux operating system, operating the motors of the mill in real-time via a simple hardware interface. There are several choices, but the lowest cost one is a parallel port break-out board (called a BOB.) The BOB takes the PC's parallel printer port and uses the signal wires to run the stepper motors and read the limit switches on the mill. In this setup, the PC is the entire brains of the mill.
GRBL is an Arduino based solution. An Arduino micro-controller is loaded with the GRBL program. A CNC Shield tacked onto the Arduino give the Arduino a hardware interface to the motors and switches on the milling machine. In this approach, the PC feeds commands to the arduino through a USB cable, and the Arduino executes them on the motors and switches in the milling machine. This way of doing it is arguably safer... the arduino's only task is to look after the hardware in real-time. Taking the load off the PC that is feeding commands.
Now, which is better? I dunno. I'm going to try it both ways. Both methods work the same way. They take G-code commands and carry them out by moving the motors on the mill. One does it all on the PC and the other is a dedicated micro-controller that carries the commands out as it receives them.
Either way, we are looking at probably $100 worth of chips and boards to start with. I already had a spare Arduino (Uno R3) laying around, so I needed the shield board, which arrived today. The BOB needed to do the same thing with LinuxCNC also arrived today. So, the initial hardware purchase is done. I can play around with both before figuring out the specs of the motors needed to run the mill, which will dictate what kind of motor driver circuits and power supply needs to be acquired.
Now, there is another aspect of this project that has to be considered.... How to generate the G-code commands that are going to be executed in the first place. Fortunately, it is the same for both.
First, you need a drawing of the part to be made. That's the CAD in the CAD/CAM world. In my case, I'm using FreeCAD for linux. It's the same software I've been messing around with 3D printing.
Next, you need to take the drawing and create tool-paths. That's the CAM part of the CAD/CAM world. A tool path program takes the drawing and creates the sequence of instructions for the mill. If you imagine the cutter on the mill as a race car driving around a track, then the CAM is the detailed description of each lap the car is going to take around the track.... when to turn the steering wheel, when to step on the gas, when to shift gears, when to stomp on the brakes, etc. It is every movement the mill is going to make. In the 3D printer world, this is the slicer. In my case, there is a free CAM package available called DeskProto that looks like it will fill the role.
And last, you need something to take the tool path files (which are in G-code) and feed them to the hardware. For the Arduino this is done by an application called GCodeSender. It is going to be the front panel of the mill represented on the PC talking to the Arduino and feeding it the G-Code command by command. In LinuxCNC, the application itself takes on this function, since it operates the motor directly.
And that is pretty much all that is going to be involved.
The next task for me is to load the GRBL on the Arduino and test it out with some dummy hardware (a make believe mill to make sure all the inputs and outputs or OK.) Then scrounge around the garage and the basement to see if I already have some suitable motors. I recall boxing up the motor from my ex-wife's treadmill... from one of her many failed attempts to loose weight. I hear those motors make excellent variable speed spindle drives. Go I guess I need to dig through the boxes of stuff that moved with me from Florida.
Last edited: