Introduction: DIY 3D Printer: How to Make a 3D Printer That Anyone Can Do

Hello everyone! Every time I start a new project, I try to make something bigger or more difficult than the previous one. So this time I made a 3D printer from some waste/residual wood, some "recycled" electronic parts and about 120$. In this instructable I will show you how I made it with only hand tools, I am an absolute beginner with 3D printing,so if I could make it, anyone could do it. My printer doesn't contain any printed or laser cut parts, that's why it costs only 120$. I hope you will enjoy this tutorial and make your own 3D printer:)

Step 1: Materials and Tools

Before I started the build I read a lot about the 3D printers, checked the commercially available did a lot of calculations, sketches and plans. After that I made the final plane, what is based on the Prusa I3 and Anet A8 3D printers. I ordered most of the electronics and the pulleys from ebay (it's the cheapest way), for power supply I used (re-used) an 400W pc power supply, for the main frame I used a cheap pine self, and some waste wood from a furniture's wrapper and some threaded rod(the cheapest). This printer is built for especially printing PLA, but now I working on the V2.0, which one will be able to print ABS or any other material. This one also could print ABS with a few modification. So let's see what you need if You want to built this 3D printer. (I'm using metric system, but I also write the quantities in imperial units for the ones who uses it)


  • 2pcs M8 100cm(40inch) Zn threaded rod(1$)
  • 40cm*40cm*1,8cm wood sheet(15.75*15.75*0.71inch)(2$)
  • some residual plywood I guess it was about 30cm*30cm(11.8*11.8inch)(free)
  • waste wood (it was in 6cm wide 2m long sheets)I cut 3pcs 30cm long pieces(11.8inch)(free)
  • 2pcs good quality threaded rod+lead screw for the Z-axis (8$)
  • 2pcs flexible motor connector (2$)
  • 4pcs nema motor holder (8$)
  • 5pcs nema 17 motor (40$)
  • 1pcs mk2n pcb heatbed (6$)
  • assembled e3d (clone) hotend (5$)
  • arduinoMega+Ramp1.4 control board (15$)
  • 4pcs a4988 motor driver (4$)
  • 3pcs endstops (I bought 5pcs for 3$)
  • 1 smooth rod kit (M8 2*370cm(145.6inch) 2*340cm(133.8inch) 2*320cm(126inch)) (23$)
  • 2m GT2 belt with pulleys (5$)
  • all-metal extruder kit (4$)
  • some M3 screws,M3,M8 screw nuts,winged nuts, springs(about 4$)
  • 2pcs 608zz (i bought 10pcs for 3$)
  • a piece of a broken glass sheet(it's for the heatbed)
  • 8pcs lmu88 (4$)
  • bunch of ZIP ties


  • Caliper (in my opinion it's a really handy tool so it worth to get one anyway)
  • Screw driver
  • Drill+drill press(my is about 20 years old but it was essential, cause I didn't use 3D printed parts)
  • Jigsaw
  • Rotary tool
  • Spirit level
  • Soldering station(optional)
  • Masking tape
  • Wood glue
  • Workbench
  • Glass cutter
  • Screw compressor clamp

For this project the drill press was essential, because the rods and the bearings needs straight, perpendicular holes, and to be honest with only my bear hands i couldn't do it. The soldering station is optional because i only had to use it for modify the pc's PSU, and my motors wires were too short, so i had to make them longer.

After that we can start building:)

Step 2: Create the Frame

First of all if you work with any tools is good to use some protection, but if you drill a lot and sanding a lot really recommended to wear protection.

So, after every calculation, I signed the wooden parts and with the drill press and the jigsaw cut out the unnecessary part from the basic plate. (I also used the cut out parts) After that I sliced the long piece wood for the front and back, to connect these part cut the threaded rods(the cheap ones), into 4pcs 50cm long ones. I had to make 4 holes every wood part in a straight line so with the compressor claws put every piece in one position and drill across every element. As you see after that it was easy to connect and fix the parts, and after some sanding the frame was ready. I fixed the parts with screw nuts, that's why i can change the distance between the parts, so i can control the main frame position and this frame will hold the Z and the X-axis.

Step 3: Create the X,Y,Z Axis Specific Parts From Wood

This step was the trickiest I had to create something what can hold the smooth rods of the X-axis and the lead screw for the Z-axis, and also can handle the pulley the TG2 belt and the motor. I had to make a lot of sketches and sooo many similar parts, draw one, cut it out and start over, because sometimes i ruined the piece, or if the piece is well done i had to make spare parts (TIP: Always make spare parts). I chose the easiest way, i worked from the part i cut out from the main frame. Cut 2pcs 6*6cm(2.36*2.36inch) rectangular piece, drilled two parallel 8mm diameter, 25mm long holes, it will holds the X-axis's smooth rods. I drilled across the piece with a 15mm wide hole saw cutter, and put 1-1 lm8uu bearing into the hole, for the Z-axis's smooth rod(unfortunately i couldn't use it, but i needed some times to realize what is the problem). I made a piece with a 8mm diameter hole piece for the threaded rod's lead screw and one piece for the motor with a 25mm wide hole, plus a same one with a 5mm wide hole(i put a M5 screw into the hole it holds the pulley for the GT2 belt), both of them were made of 4mm thick plywood, and both of them were fixed with wood screw. I also had to make a carriage for the X-axis, and the Y-axis, this part was repeated so many times... (TIP: check and double check the size your bearings), but finally i could make a 2pcs 95mm*85mm(3.75*3.35inch) rectangular for the X-axis it's holding the hotend and a 24cm*24cm(9.45inch) rectangular carriage for the heatbed. For the lm8uu bearings i cut 24mm(0.94inch) long and 11mm(0.43inch) wide rectangle(I guess that's the best size for a hole if you want to use this type of bearing). I also had to make 2 spacer for the Z-axis's motor holder, because i realized there isn't enough space for the GT2 belt, and i also had to make 2 rectangular for the top of the threaded rods, for the connection i drilled a 22mm diameter hole into them and with some glue put a 608zz bearings into them. After all pieces are finished I started to put it together.

Step 4: Assembly the Mechanics

First of all i fix the Z-axis with the X-axis for that i glued the the threaded rods holder to the main frame, then I drill 2-2 1cm(0.39inch) deep hole for the Y-axis's smooth rods into the back and top wood piece then connect the Y-axis. At this point i realized that i need to cut out some more wood from the main frame because there wasn't enough space for the Y-carriage, I could solve this with the rotary tool with a sander head, then i had to carriages attached to the GT2 belt, for this task at the Y-axis i cut a little rectangular piece of wood with 4 hole, i have guided across the belt and fix it with a few ZIP ties, I used a different method at the X-axis there i used 2 pcs screw and with the ZIP ties i attached the belt to the screws. Every motor and every piece was in the right place(TIP: for the smooth/threaded rods use some grease, i used lithium grease), so lets start assembly the electronics.

Step 5: Controller,Power Supply, Hotend, Heatbed

First of all I tested every motors and motor driver separately with an arduino and the minimum circuit what can you see on the picture. I uploaded the code what i used for testing the motors and drivers. All of my motors wiring were bad... they wanted to move in two different direction at the same time, so I had to find the pairs(TIP: you can find wires that belong to the same coil with a multimeter, if you measure a the resistance of a pair it will show you an exact number, but if you measure a not pair the multimeter will show you 0/infinite Ohm). After finding out every motor and motor driver works I soldered the +/- wire to the pcb heatbed (TIP: for the safety operating use at lest awg 15 wire with silicone coating), and the thermistor, after the soldering I fixed the wires with some kapton tape. After that put together the arduino and the ramp board with the motor drivers connect every motor and endstops to the right position. At this point i modified the ATX PSU, i uploaded the pinout of the PSU, so i only shortened the PS_ON with a GND wire, and choose 3-3 yellow wire(+12V in my case these wires holding about 19A) and 3-3 black wire, I use as much wire because all the yellow wires only together can hold 200W, so for the safety i used more wire. Soldered together them and attached to the Ramp board(TIP: use ferrules, they make the connection with the terminal much safer and easier). Before I connected the hotend I took a rest piece wood and drilled a 15mm diameter hole, then cut it in half, with two more 3mm diameter hole I could easily attached the hotend to the X-axis carriage, after that i connected the hotend and the hotend's thermistor to the board.

Step 6: Firmware, Softwares

Because i used a Ramp1.4 borad i had to upload the Marlin firmware, but before that i had to modify a bit the code, for this i needed the Arduino development environment and the Marlin files . I will summarize what i did, but also put here a link if you need more help, or explanation:

Marlin configuration step-by-step

if you open the Marlin arduino file you will find the configuratoin.h, i did every modification in there. First of all i changed the baudrate from 250000 to 115200 (most of the forums recommends to value because the higher numbers could cause some trouble), the second change i made is to type the name of the board what i used (TIP: in the boards.h you can find all the possible boards and it's code too). The next step is define the temperature sensors's types and number, i didn't change the next section but if you need you can modify the max and min temperature of the hotend and heatbed, direction of the motors and how many end stops you using(In my case i used only x,y,z min). The next part of the code where i changed it where you can modify the steps/unit of the axis, for this i needed the microsteps of the motors, pitch and lead of the threaded rod, pitch of the GT2 belt, number of the pulley's teeth, in the pictures you can see my preferences. The calculation is about: a motor with a 1.8° step angle has 200 steps(360°/1.8°) with a 1/16 stepping and a 2mm pitch threaded rod (200*16/2=1600 Z-axis) for the X,Y-axis you need to 3.14*diameter of the pulley and 3200 divide by this(TIP: Ifyou don't want to calculate it by yourself you can use the RepRap calculator for calculate your values). I didn't make any other modification, but you can find a lot more option in the code if you need.

Before I started to verify the code I double checked that I chose the good port and the proper arduino board, I also had to change the used USB port’s baudrate, you can do it in the device manager. Then verified and uploaded the code to the arduino. For controlling the printer I used the free Pronterface program( I like it very much), in the program you can change the print’s settings or the slicing’s setting, manually set the heatbed and the hotend’s temperature, or moving the axes, ordering homing the printer, so it’s a really handy program. You can load Gcode files, start,pause,resume,restart prints, or you can type Gcode by yourself, if you need more information about G-code you can find here. I made the first 3D designs with Tinkercad, than sliced it with Cura and print it with Pronterface. All the programs I mentioned are free to download and use, so I want to say a big thanks for every creator and the 3D community for the free knowledge:)

I made a short video when i tried the axes.

Step 7: Finish and Start Printing

Before the first print i had to level up the heatbed, for this i used the springs with the winged nuts and a spirit level, then the heatbed was in level but it has a little curve so it wasn't plain, so i had to cut a glass sheet(for the safety it had to be a tempered glass sheet, but i didn't have one so i used a simple 3mm thick glass from a broken shower cabin). Cutting the glass was much easier than i thought, signed the size i needed then pulled down 2-3 times the glass cutter, then one definite move break the glass at the line(TIP: Use some tape on the glass it makes much easier and safer when you break it). After that i had to care about the first layer adhesion, because it's very important for the successful printing. You can find good advice for every material, but now i focusing on PLA, so for this case the recommended bed temperature is about 60°or 0°Celsius(not real zero just not heated), or in theory you can print PLA on cold glass(20-25° room temperature), if you add some more adhesion with a "hair spray" or "blue masking tape" or using a glue stick. As for me i mixed them a bit used the glass sheet and covered it with the cheapest masking tape, and it worked(I don't know my glass sheet how long will handle the warming and the cooling, but when it breaks the masking tape will protect me from the splinters).

I uploaded a video about one of the first printing. I also have to make some more calibration, finding the best speed with the best temperature, but the printer is working!! I was sooo happy when it started to work as i planned.

Now I'm still learning 3D design, and printing, but now i have a working 3D printer. I hope you enjoyed this instructable and if it's inspired you please share with me the result. If you have any question about this build feel free to ask it, i'll answer as fast as i can.

Thank you for visiting and happy making!

Make It Move Contest 2017

Runner Up in the
Make It Move Contest 2017

Reclaimed Contest 2017

Participated in the
Reclaimed Contest 2017