Arduino CNC machine

Background Context

The author of this project is a CNC machinist. A CNC machine is a computer numerical controlled mill that can do machining works using computers to achieve high precision. The author wanted to build a small CNC engraver using inexpensive components like an Arduino, stepper motors, linear rails, timing belts, and pullies, etc. The finished machine at the end could draw lines on a paper according to the command sent by a human.

Components

The machine consists of both mechanical and computational components, and since the goal of this project is to build a CNC machine, both of them are very important to the project.

The mechanism of this machine is conceptually simple: It needs to be able to perform linear motions in x and y directions simultaneously to span the x-y plane. It should also have a pen at the moving center to draw the lines. However, the hard part of the mechanical design is to make it precise: reducing the backlash and friction in the transmission, rigidity of the structure, power limit of the cheap stepper motors, etc. The author did a nice job identifying these potential issues and dealt with them nicely.

The computational part of the project is very complicated since it involves converting target drawings to tool paths and then represents the tool paths with g-code. The author, who isn’t an expert in programming, chose to let open source software to deal with these problems. He used the Arduino and the GRBL shield as the motor driver and used an open source g-code generator to generate tool paths.

Conclusion

This project is very useful for people who really want to have a cheap solution to engrave stuff on their own. The mechanical and computational components of the machine work together to make it functional and precise.