CNC Explained

>> Home Page
>> CNC explained
>> Building my own CNC table
>> Other homemade CNC tables
>> Info
>> Photo Gallery
>> Useful Links
>> DXF Files

What is CNC?

CNC stands for Computer Numeric Control. Basically, CNC is where a computer based machine takes a series of instructions and converts these into motion. A CNC machine can have 1 to several axis, but most have three, X Y and Z. A tool ( cutting tip, router, plasma cutter, laser cutter ) is attached to the machine, and throught the computer controlled movment of this tool, the workpiece is machined until the final shape is produced.

CNC has been with us for decades, starting an just NC back in the 1940's. Early NC used hard wired controllers to control the machine motion, so any change in the program meant a re-wire of the controller. Later punch cards were used. As computers got cheaper and easier to use, hand coded G-Code was used to drive the controllers. Then tape, floppy drives and serial connections were used to transfer the G-Code files ( also called NC files ) from the CAD/CAM computer to the CNC controller. These days most CNC controllers use top end OS's like Windows 2000 or Linux, and are connected into the workshop network.

G Code

The "instructions" read by CNC machines are usually a human readable format
called G-Code. The machine is set up with a base unit, like Inch or mm, and a command of G01 X500 Y200 on a metric mm setup tells the machine it needs to move
500 units on the X axis and 200 units on the Y axis. If I wanted to make a 20mm by 30mm square, 3mm deep, I would use

N004 G0 Z5
N005 G01 X0 Y0
N006 G01 Z-3
N007 G01 X0 Y30
N008 G01 X20 Y30
N009 G01 X20 Y0
N010 G01 X0 Y0
N011 G00 Z5

The N004 to N011 are line numbers, these are not ormally needed by the CNC machine. Not shown, but usualy included, is the header and footer informations. These are a few commands to do things like turn on/off the router and coolant, set laser configuration, etc.


Stepper Motors

Stepper motors, or just "Steppers" are motors that "step" with each signal pulse. A typical stepper may have 200 steps per revolution, so to make this motor rotate once, you would need to send it 200 pulses. Stepper motors are cheap and easy to control, but there is a problem. The CNC computer never realy knows where the stepper motor is, its just assumes it knows where it
is because it has sent a number of steps. If the stepper was blocked or bumped, it may have "lost steps", so where the machine actualy is and where the CNC computer thinks it is could be two different positions.

Servo Motors

Servo's use a conventional motor, like a DC or AC motor, and a encoder. The encoder uses a disc with hundreds or thousands of tiny slots, and a sensor, to count up or down as the motor rotates. There may be 1000 or more encoder steps per motor revolution. The servo motor controler, called a "Servo Amp" applies power to the server motor and counts the encoder steps as they come in. It uses these counted steps to work out where the motor is, and make adjustments for acceleration/deceleration. The advantage is the CNC computer knows exactly where the motor is. The disadvantage is servomotors and servo amps are much much more expensive than stepper's, and they require more tuning to get them working correctly.


Drive Mechanisms.

To convert the motor rotary motion to linear motor we can use several
different drive types. Screw drive, or threaded rod, is the easiest and best
suited to the hobby builder, the motors drive a threaded rod, a nut on the
thread is attached to the axis we want to move. Screw drives also have a lot
of torque and work well for high load cutting, like routing. Direct drive
using a toothed belt or chain works well for CNC tables where there is
little load against the cutting head, like Oxy or Plasma cutting. Another
common drive is the rack and pinion.

Laser Cutter, Y and Z axis shown above the table supporting the material to be cut.
The X axis is the table itself

Another laser cutter, stepper motor based and the X axis is the gantry.
Seen to the right is a hand controller where basic movement and commands are entered.