Introduction: 3D Printer

About: I’m a Programmer with a interest in Electronics and Cars

The 3D printer is a great invention.

I allows the user to print (almost)anything he/she could imagine!

But there fairly expensive.

Of course you could buy a cheap pre made one for $200, but the print area is pretty small, and the quality isn’t the best.
on the order end of the scale theirs the other famous printer, but its $2199.

So what to do, spend a lot of money for good prints, or less for lesser quality?

OR build your own!!

In my search for a printer a I stumbled upon the term RepRap.
RepRap  stand for:  ‘replicating rapid prototyper’
in other words, a printer that could prints its self.

The most stead forward design is the ‘Mendel’,
it consists of a basic tie angle frame, with 4 stepper motor for the X,Y,Z movement.

Step 1: What’s 3d Printing?

Here’s an explanation how a 3D printer works.

A 3D printer deposits little drops/line of molten plastic from a headed tip(nozzle).
in most cases it melts ABS (Acrylonitrile butadiene styrene) or PLA(Polylactic acid, made from corn starch or sugarcane).
on contact with the surrounding air, in cools down into a solid state.

The printer moves its nozzle in 3 ways to deposits  the plastic in a 3D model.
it begins on the bottom and lays down plastic layer by layer, resulting in a full shape.

How smaller the lines its deposits, how smoother the print would be.

Step 2: Make or Buy?

eBay if full of sets to build you one ‘RepRap mendel’.
it’s easy, but somewhat more expensive, and less fun :)

if you’d buy a kit, there’s a whole manual available on the internet.

It is also possible to by a pre made, assembled printer.
A good one starts an 1200 Dollar

But I wanted to build my own, just because I can.

Step 3: Design 2D

Where to begin?
The frame is a good place to start, it’s the center of the whole project.

After looking at some designs of the standard ‘Mandel’ I was possible to make a drawing:

And for the rest a used most of the default files on the RepRap website.
I alter some of them because it would be made from wood instead of being printed.

I added a .ZIP file containing all the parts.
all in PDF and AutoCad files (DWG).

The measurements are in Millimetres!

Step 4: Design 3D

After I designed all of the pats I thought it would be nice to see the design in 3D before in would start to build.
this way I could get a sense of the scale of the project AND show any design faults.

I used Inventor to build all of the items separately.
after build all the parts, I put it all together in one assembly.

After I put it all together there where some things need to be changed in the drawings
(the files in the previous step are the last ones)

I added a .ZIP file containing all the parts.
All the files are for Inventor

Step 5: Creating the Parts

first the A frame
This is the centre of the build, all parts are connected to this.

This is how a made all of the parts:
-Print the drawing of the part needed to be made.
-Get a pencil, a calliper, tape-measure and something straight to draw de lings.
-Draw de top view on the wood.
-Saw the part to the right shape.
-Drill holes where needed.
-Measure the part:

-if it’s correct fine, go to the next part.

-if its to small, start again, and look out, “measure twice cut once”

-it its to large, try to get it to the right Size.

After the main frame I created the z-axis motor holders

Step 6: Creating the Parts (v2)

After 2 failed attempts to create the X – carrier I decided to print the original parts,
through I found someone who printed my parts in ABS.

The parts I designed were to week to made out of wood.
Or i did’nt had the right tools to make them.

Step 7: Purchased Parts

Of course I couldn’t build the whole printer myself.

so I bought the parts from eBay, web shops or the local hardware store.

List of parts:
- Arduino Mega 2560.
- Ramps 1.4.
- 5x A4988 Stepper Driver.
- Heated bed.
- HotEnd (Budaschnozzle).
- Smart Controller LCD.
- Mechanical endstops
- Cooler fans
- 100k ohm NTC thermistors
- Lots of wires.
- T5-12 Tooth Pullys and timing beld
- 2x 5mm to 8mm Shaft Coupler.
- 12x LM8UU Linear bearings.
- 10x 608zz Redial bearings.
- Greg’s Hinged extruder KIT.
- 5x Nema17 Steppers (1.7A, 40mm,
- 4m Steel m8 thread.
- 6 pre-cut bar steel rods.
- 20mmx20mm Ikea mirror.
- Lots of m3 nuts and bolts.
- Zip Ties.And more random small parts a can think of at this moment.

Step 8: Assembling the Printer (1)

With the most part at hand is started to put the frame together .
I calculated that the space between the A frames must be 31cm.

the frames are connected by 7x M8 steel threads.

2 of the bottom threads where used to mount the Y-axis stepper.
Another 2 where used to hold the bearings for the Y-axis belt.

Step 9: Assembling the Printer (2)

Next up was the Heated bed.

I drilled a 15mm hole into a block of wood and cut it in half.
this was perfect for mounting the bearings in.
these blocks where glued to board,
and on this board I mounted another board with spring between them, for levelling the headed bed.

On the bottom of the heated bed I placed a thermistor to control the temperature.
On top of the bed I placed a 20mm x 20mm Ikea mirror, this is used to create a smooth FLAT surface to print on.

Step 10: Assembling the Printer (3)

To make this work (and maintain a good pint quality) i order 3 printed parts.

2 for connecting the X-axis to the Z-axis,
and 1 for mounting the hot end on.

To move the extruder carrier I used an timing belt, mounted on the 2 outmost blocks,
on one and a simple bearing, on the other end en stepper with a pulley attached to it.

Step 11: Assembling the Printer (3)

The Z-Axis are moved by 2 stepper motors.

these are connected to two M8 threads by a coupler.
for extra traction a filed off a bit of the motor shafts

Step 12: POWER!!!

So the printer used 12v, an a lot of it.
I used a old ATX power supply, cut of all of the 5v and 3.3v leads.
bundled the two rails (12v and 12v1).

used one to power the 5A connection
and the other for the 11a connection.

To control the supply connected the green wire (power on) and the black (ground) to a switch.
now I can turn in off and on “remotely”.

Step 13: Wiring the Printer

Next up was the task of connecting ALL of the wire to the correct pins.

I used the image from the RepRap site to connect all the wire’s.
lucky it’s pretty straight forward.

The connections are clearly marked,
for the motors and thermistors polarity isn’t an issue.
the 3 end-stops are easy to connect , + to + , - To - and signal to signal .

Don’t worry If the motor is turning the other way,
this can be corrected in the Arduino Firmware.

Step 14: The Software (PC)

As previously mentioned, Im using Cura for the printing and creating of the Gcode:


Install Cura, and start it.
-First thing is to set you printer: walk through the setup.
-After the setup, you can change most of the settings.
-A good idea is to change to print speed to a low value (50), this can be changed back after the printer preforms well.
-Measures you filament at 3 points, add up the numbers, and divide it by 3.
set this value at “Diameter(mm)”
-Set the Printing Temperature according to the temp needed for the filament your using.

Go to the advance tab:
-Set the nozzle Diameter.

Use "Ctrl" + "E" to open the Expert settings.
if your cooling fan (if mounted) is blowing directly on the hotend, it’s wise to turn down the fan speed max

The rest of the setting can be changed however you like.
But keep in mind, it can mess up you print.

For testing (moving axis’s) I’m using PrintRun, just because it’s easy :P

Step 15: The Software

There are 2 main firmware for the Ramps.
- Merlin
- Sprinter

I used the Merlin software because the prints a have seen where better made with Merlin than with Sprinter.

Downloaded it from :

currently I’m using Cura 14.01 for creating the gCode.
the Arduino used the gcode to position its printer head and extrude,
and a lot more of course.
its even possible to print directly from PC with the USB cable attached to the Arduino.

To alter the setting en uploading the software to the Arduino you need a bit of software.
you’ll need Arduino 0.23 for the best result.
See File ""

After installing the software extract the Merlin firmware and open the “Marlin.PDE” file.
Go to the “Configuration.h” page.

This is where all the settings are.
Will go through this, step by step.

I only going to show the basic settings.
There is a lot more in this config.
The row number and values are from the default config file.
In the added zip file you’ll find the default and custom files

Row nr: 73 #define MOTHERBOARD 7
This sets the electronics board type.
default is 7 (Ultiemaker)
But for this project I used a RAMPS 1.4
with one extruder, a fan and a headed bed
so I used nr 33

Row nr: 77 // #define CUSTOM_MENDEL_NAME "Bram's Beast"
just for fun, I named my printer, this shows on the LCD on start-up.

Row 84: #define EXTRUDERS 1
This set the number of extruders the printer has.
default Is 1

Row nr: 124/127 TEMP_SENSOR
The extruder and headed bed have a thermistor attached to it.
this for measuring the temperature.
it’s important to get the correct value, otherwise the the extruder of bed will overheat or stay to cold.
If you know which thermistor is used you’ll only need to fill in the right number.
- #define TEMP_SENSOR_0 is the main extruder thermistor
- #define TEMP_SENSOR_BED is the heated bed thermistor
If only 2 thermistors are used, u can fill in 0 at the other 2 rows
Above row nr 124 is list containing commonly used thermistors.
if you are not sure about the type of thermistor you are using,
download the data cheat of the thermistor.
connect the thermistor to a multimeter and measure its resistance,
check the temperature. And cross reference this with the table in the datasheet.

This is used to prevent the extruder to move when the Hot end is cold.
I commented this out for test purposes.

Row nr: 301 / 306 #define INVERT_X_DIR true
These rows are used to define the motor turning direction.
After a connected all of the end stops and steppers a powerd the printer,
connected it to the PC and used “Printrun”.
Printrun enables you to print, but also move the axis.
I moved the axsis 10mm and confirmd the steppers tured the right way.
if not: change True to False on the axis, save the file and upload it again.

(if the steppers are not run properly, go to the next step first)

Row nr: 313 / 319 #define X_MAX_POS 205
This sets the MAX and Min limits of your printer.
The MIN value of 0 should not be changes (except is you want to have you HOME point at the centre of the bed)
The max value is easy to find out.
Home you printer, and use Printrun or the LCD screen to move the head.
Move the axis just before the head leaved the bed.
Check the travelled distance and change this in the firmware.

(if the steppers are not run properly, go to the next step first)

This is the hardest part of the setup.
here is determent how much the motor has to turn for 1 step.

1 step == 1mm

I used this site:
to get the values for the X Y and Z axis.
Go to the site a fill in the varaibles.

The default steps:
{78.7402 , 78.7402 , 200.0*8/3 , 760*1.1}
200.0*8/3 = AXIS_STEPS_PER_UNIT_Z,

this ware the values I used:
{53.33 , 53.33 , 2560.00 , 515.91}

To test this,
-Save the code.
-Upload it to the Arduino.
-Start Printrun.
-Home the axsis.
-Measure the distance from a fixed point to a point that is going to move,
for example the X axis carrier.
-Write down the measured value.
-Move ONE axis 50mm.
-Measures the distance again, and write it down.
-calculate the distance travelled by the printer.
- if its equal to the 50mm you’ll moved in the software: congrats, this axis is set up properly!
Go to the next axis.
- if not: use the next formula to calculate the next value to try:
(Set Value / Actual Moved Value * 100) = new value;
for example: ( 53.33 / 55 * 100) = 96.96
Set the value and try again!
I used the website to calculate the values, and It work right away.

the extruder was a other story.
for this to work:
-Place a piece of filament in the extruder and clamp it down.
just stick it 2 cm or so. It has to move downwards 2 cm.
-Stick a piece of tape on the filament.
-Measures the distance from the tape to the extruder.
-Move down the extruder 1 or 2 cm. (with printrun).
-Measures the distance again and calculate the travelled distance.
-if its equal to the given distance, great. If not, use the formula above an try again!

(if a LCD is connected)
Row nr: 470.
Uncomment the code for the LCD screen u used.

The rest of the code just fine, you can read through it to fine tune, or set some other values.
but these are the values needed to be set.

Step 16: Tuning the Steppers

Its possible the steppers are moving right out of the box, in combination with the drivers.
or not :P

Either way, it’s a good idea to tune the drivers, this will strengthen the motors, let them run smoothly, and stops overheating them and the drivers.

There are 2 ways of doing this:

To do this (1):

  • Turn on your printer.
  • Use “Printrun” to move the axis.
  • Move one of axis back and forward.
  • Simultaneously moving the potentiometer on the driver clockwise until the stepper starts acting weird (make strange sounds, vibrating a lot).
  • turn it back a little until it runs smooth again.
  • go to the next driver/stepper/axis.

To do this (2):


Per the A4988 datasheet [[1]], the calculation for the maximum trip current is:

I_TripMax= Vref/(8*Rs)

With Pololus, the sensing resistors are Rs=0.05 ohm, so a Vref of 0.4 should produce a maximum current of 0.4/(8*0.05)=1A.

As another example, aiming for 50% temperature rise on 1A rated steppers by using max 0.7A, so rearrange it as:

Vref = I_TripMax * 8 * Rs or

Vref = 0.7 * 8 * 0.05 = 0.280V

With a measured Vref of 0.273V, I should expect 0.6825A, and I measured the current through one coil as 0.486A in full step mode, which should be 0.7071 of the full trip current, or I_TripMax= 0.486/0.7071= 0.687A, which seems close enough.

The Vref signal is accessible as the "VREF" pin on the carriers with voltage regulators, as the through-hole via on the carriers without, and also as the wiper on the trim pot itself on both carriers.

Step 17: Testing!!

Next step is to test the printer and its settings.
Before you going to print is handy to read the next article:

Heating the parts.
there I first time for everything.
so power on the printer and set the bed temperature to 50 or 60.
wait to the bed is heated.

if something goes wrong, it is important that you can power down the printer.

try to measure the temperature of the bed, I use a IR temperature “gun”.
If everything is ok, power down the bed, en power up the Hotend.
first go to 100C, then 150C and 200C.

try to measure it continuous to and cross check the temperature with the software, to insure it’s on the same level (or very close). This to prevent en burnout.

Step 18: First Print

Oke, now it’s time to print!!!!

Load the filament in the extruder.

Download a test file (20x20mm box) :

-Open Cura and load the file
-Use Cura to generate to Gcode (export to SD)
-Or use Cura to print directly.

Start the print, wait until the bed and extruder are warmed up.
and watch how the printer makes you first print:

if something goes wrong, it is important that you can power down the printer.

(halfway the video the fan starts to blow 100%, this cooled down the hot end to much)

Step 19: Your Printer Is Ready!!

So you print work. Congratulations!!

if not, try to find out what goes wrong:
-to little tension on the belts.
-drivers not tuned correctly
-bed not levelled.

Try the again.

if you really stuck. Send me a messages :)

the amount of money I spend on this printer is not jet certain.
I think about 350 euro (470 dollar).
I will sum up all the costs shortly.

Yes its more expensive than the cheaper pre made 3D printers.
But its a lot more fun and educational than the pre made printers.

Step 20: Extras!

Now the printer is working, you can start printing upgrades for your printer.
visit for pats, and other fun thing to print !!

visit my site for more info about my printer: (Dutch)

More info abouw RepRap, its software and hardware:

Any questions of comments, do not hesitate to commend or send me a message !!

Step 21: Extra (V2)

After some months i noticed that there was some play on the X and Y axis.
so i printed some new parts for the printer