Introduction: EWaste 60$ 3DPrinter

About: Twitter: @mikel_llc

This project describes the design of a very low budget 3D Printer that is mainly built out of recycled electronic components. The result is a small format printer for less than 100$.

First of all, we learn how a generic CNC system works (by assembling and calibrating bearings, guides and threads) and then teach the machine to respond to g-code instructions. After that, we add a small plastic extruder and give an overview on plastic extrusion calibration, driver power tuning and other few operations that will bring the printer to live. Following this instructions you will get a small footprint 3D Printer that is built with about an 80% of recycled components, which gives it a great potential and helps to reduce the cost significantly.

On one side you get an introduction to machine building and digital fabrication and on the other side you get a small 3D Printer built out of reused electronic parts. This should help us to be more conscious about the big problems related with e-waste generation.

Step 1: Step 1: X, Y and Z Axes

Needed components:

2 standard CD/DVD drives from an old PC.

1 Floppy disc drive.

We can get this components at no cost in a waste station in our neibourhood. We want to make sure that the motors we get from the Floppy disc drives are stepper motors and not DC motors.

Step 2: Step 2: Preparing Motors


3 stepper motors from the CD/DVD drives

1 NEMA 17 stepper motor that we will have to buy. We use this type of motor for the plastic extruder where more power is needed to drive the plastic filament.

CNC electronics: RAMPS or RepRap Gen6/7. It is important than we can use the Sprinter/Marlin open firmware. In the present example we use RepRap Gen6 electronics but you can choose according to price and availability.

PC power supply.

Cables, female connectors, heat-shrink tube.

The first thing we want to do once we have the mentioned stepper motors is to solder the cables to them. In this case its 4 cables for which we should maintain the corresponding color sequence (described in the data sheet).

Data sheet for CD/DVD stepper motors:

Data sheet for the NEMA 17 stepper motor:

Step 3: Step 3: Preparing the Power Supply

Next step is to prepare the power supply in order to use it for our project. First of all we connect the two cables with each other (as indicated in the picture) to allow the direct power-up with the supply's switch. After that we select one yellow (12V) and one black cable (GND) to power the controller.

Step 4: Step 4: Arduino IDE

Now we are going to check the motors. For that purpose we need to download the Arduino IDE (a physical computing environment) that can be found at:

We need to download and install the Arduino 23 version of it.

After that we want to download the firmware. We have chosen Marlin which is already configured and can be downloaded under:


Once we have installed Arduino, we will connect our computer with the CNC-Controller Ramps/Sanguino/Gen6-7 with an USB cable, we will choose the corresponding serial port under Arduino IDE tools/serial port and we will select the controller type under tools/board (Ramps(Arduino Mega 2560), Sanguinololu/Gen6(Sanguino W/ ATmega644P – Sanguino has to be installed inside Arduino )).

Main parametres explanation, all of the cofiguration parameters are in the configuration.h file:

In the Arduino environment we will open the firmware that we already downloaded File/Sketchbook/Marlin and we will see some configuration parameters before we upload the firmware on our controller.

1) #define MOTHERBOARD 3 value, according to the actual hardware we are using (Ramps 1.3 or 1.4 = 33, Gen6 = 5, …).

2) Thermistor 7 value, RepRappro htoend uses Honeywell 100k.

3) PID this values makes our hot end more stable in terms of temperature.

4) Steps per unit, this is a very important point in order to configure any controler (step 9)

Step 5: Step 5: Printer Control Software

Printer control software: there are different freely available programs that will allow us to interact and control the printer (Pronterface, Repetier, …) we are using Repetier Host, which you can download from It's easy to install and integrates a slicer. The slicer is a piece of software that generates a sequence of sections of the object we want to print, associates those sections with layers and generates g-code for the machine. Slicers can be configured through parameters like layer height, printing speed, infill, and others, that are important for the printing quality.

Usual slicer configurations can be found under following links:

Skeinforge configuration

Slic3r configuration

In our case we have the Skeinforge profile configuret for the printer, that you can integrate in the reperier host software.

Skeinforge profile link:

Step 6: Step 6: Wireing and Current Intensity Regulation

We are now ready to test the printer motors. Connect the computer and the machine controller using an USB cable (the motors should be connected to their corresponding drivers). Run Repetier Host and activate the connection between software and controller by choosing the corresponding serial port. If the connection was successful, you will be able to control the attached motors using the manual controls at the right.

In order to avoid an overheating of the motors during the regular use, now we will regulate the current intensity that every motor can get. This is an important operation in order to avoid motor overheating or step loss.

For this we will connect just one motor at a time and we will repeat the operation for every axis. For that we will need a multimeter attached in series between the power supply and the controller. The multimeter has to be set in Amp mode (current): see figure ?.

We then connect the controller to the computer again, power it and measure the current with the multimeter. When we manually activate the motor using the Repetier interface, the current should rise by a certain amount of milliamperes (which is the current that goes to the activated stepper motor). For every axis a slightly different current is needed depending on the job that every stepper has to carry out. You will have to adjust the small potentiometer on the stepper driver and set the current limitation for every axis according to the following reference values:

The board drives a current of approximately 80mA

We assign a current of 200mA to the X and Y-axis steppers.

400mA for the Z-axis because it needs more power to lift the carriage.

400mA for the extruder motor because it is of a bigger type.

Step 7: Step 7: Building the Machine Structure

In the following link you will find the necessary templates to laser cut the frame parts that are not recycled. We have used 5mm thick acrylic plates but you can use other materials, like wood, according to availability and price.

Laser Cut file:

The design of the frame makes it possible to build the machine without glue: all the parts are assembled using mechanical joints and screws. Before you laser-cut the frame parts, make sure to adapt the motor hole positions according to the CD/DVD parts you have recycled. You will have to measure and modify the holes in the CAD template.

Step 8: Step 8: Calibrating the X, Y and Z Axis

Although the downloaded Marlin firmware already has a standard calibration for the axis resolution, you will have to go through this step if you want a precise printer. Here you will tell the firmware the steps per millimeter that your machine actually needs. This value depends on the steps per revolution of your motor and on the size of the thread in the driving rod of your axes. By doing that we make sure that the movement of the machine actually corresponds to the distances in the g-code.

Knowing how to do that will allow you to build a CNC-machine of your own with independence of the component types and sizes.

In this case, X, Y and Z axes have the same threaded rods so the calibration values will be the same for them (but that might not be the your case if you use different components for the different axes).

We will have to calculate how many motor steps are needed to move the carriage 1mm. This depends on:

The pulley radius.

The steps per revolution of our Stepper motor.

The micro-stepping settings in the electronics (in our case 1/16, which means that for one step signal, only 1/16 of a step is performed, giving a higher precision to the system).

We set this value in the firmware (stepspermillimeter).

For the Z axis:

Using the Controller interface (Repetier) we tell the Z axis to move a certain distance and measure the actual displacement.

As an example, we tell it to move 10mm and measure a 37.4mm displacement.

Being N the number of steps defined in stepspermillimeter in the firmware (X=80, Y=80, Z=2560, EXTR=777.6).

N = 2560

N = N*10/37.4

The new value should be 682.67.

We repeat this for 3 or 4 times recompiling and reloading the firmware to the controller, so that we get a better precision.

In the present project we have not used end-stops in order to build a more affordable machine but they could be incorporated easily and the firmware is ready for them. Heaving end-stops makes homing the machine more easy. The lack of them will force us to bring the machine manually to the origin of the printing area.

We are ready for a first test, we can use a pen to test if the distances in the drawing are correct.

Step 9: Step 9: the Extruder

The filament drive is composed of a NEMA 17 stepper motor and an MK7/MK8-type drive gear that you will have to buy. You will also have to 3D-print the direct-drive extruder parts, which you can download here.

1) Extruder idle:

2) Extruder body:

3) Hot end Holder:

The filament, after being pulled into the extruder by the filament driver, is then fed to the heater chamber or hot end. Between filament drive and hot-end, the filament is guided inside a flexible teflon tube.

We will assemble the direct-drive as seen in the picture (Fig X.) attach the stepper motor to it and attach the whole to the main acrilic frame.

In order to calibrate the flow of plastic we have to fit a piece of the plastic filament and mesure a distance (for example 100mm), put a piece of tape in this. Then go to Repetier Software and click extrude 100mm, mesure the real distance and repeat the Step 9 (operation).

Step 10: Step 10: First Extrusion

Now the machine should be ready for the first test. Our extruder uses 1.75mm plastic filament which is easier to extrude and more flexible than the 3mm diameter standard. This will require less power to drive our small machine than the 3mm filament would. We will be using PLA plastic which is a bio-plastic and has some advantages compared to ABS: it melts at lower temperature, it attaches easily to the printing bed and it has very little retraction.

Now, in Repetier Host, we want to activate the slicing profiles that are available for the Skeinforge slicer. You can download some profiles from the following link.

We want to start printing a small calibration cube (10x10x10mm) because it will print very fast and we will be able to detect configuration problems and motor step loss by checking the actual size of the printed cube.

So, to start printing, open an STL model and slice it using a standard profile (or one you downloaded) with the Skeinforge slicer: we will see a representation of the sliced object and the corresponding g-code. We will preheat the extruder, and when it has reached the plastic fusion temperature (190-210C depending on the plastic brand) extrude some material (press extrude) to see if the hot-end and the filament drive are working properly.

We bring the extrusion head to the origin coordinates (x=0, y=0, z=0) taking care that the head is as close as possible to the bed without touching it (take a paper as separator). That will be the home position for the extrusion head. From there we can start printing.

Step 11:

Formlabs Contest

Participated in the
Formlabs Contest