3D Printer Project

In spring 2015, we designed and programmed a basic plastic 3D printer. The project included phases of planning, implementation, and evaluation. The project won ‘Best Paper Award’ on ECE category in the 14th FEA students and Alumni conference in AUB.


In any engineering program, information is discretized to be provided in separate courses – being able to build a vivid image of different engineering topics and their connections is left to students. Accordingly, the aim of the project was to experience the process of real engineering design for a modern product, even if it includes replication of already-implemented features. Based on that, AUB Robotics Club members decided to design and program a simple 3D printer that uses PLA plastic to construct prototypes of computerized models.
Hence, the final product should be able to receive any ‘printable’ 3D model designed via well-known CAD tools such as AutoCAD, Solidworks and Sketchup, and print it with a certain precision and accuracy. Consequently, it is divided into 3 main parts: software, firmware and electronics interface, and hardware. These parts will be explained in the following sections.


The software job is to convert a 3D model designed by a CAD tool to movement and printing orders. It is built, from scratch, using C# and an object oriented structure is followed for good organization.
Following conventions which are generally used in computer aided manufacturing (CAM), to-be-printed 3D models are assumed to be in STL format and movement and printing orders are generated as G-codes and M-codes. A model in STL format is represented by typically a huge number of triangular facets that are connected together to form a mesh that describes the outer surface of the object. G-codes and M-codes, on the other hand, are standardized codes to communicate with and control CAM machines. They are typically executed one by one until the final product is reached.

Firmware and electronics interface

The firmware and electronics interface included primarily an Arduino microcontroller that digitally controls the electrical and mechanical components, and executes G-codes received from the software. To have a robust circuit design implementation, the electronics and microcontroller are mounted on a specially-designed PCBs. To be able to run high-torque loads (in case of a friction problem), special drivers that can handle high current are used. Also, the Arduino controls the printing temperature applying tuned PID algorithm.


Finally, the hardware guarantees accurate and balanced movements along the 3 dimensions using stepper motors (mechanical constraints). Due to the complexity and cost of starting from scratch in this part, the hardware is based on a body of an old CNC machine. After introducing several modifications to convert the old body to a 3D printer, the final design achieves a high level of accuracy and precision.

Several ways of testing and simulations were conducted before practical testing to guarantee its success.

Further development and research will be pursued in this project soon.

Project files