Empowering DIY enthusiasts, tech lovers, and hobbyists worldwide

DIY 3D printer, Homemade

DIY 3D Printer, a step-by-step guide. In this article, Before we get to the part where we start building the 3D printer, first let’s discuss what are the pros and cons of building one yourself rather than buying one from a shop (there are cons, it’s not all sunshine and rainbows 😢)

This article focuses on building a 3D printer from scratch. Mostly from what you have at hand. Most of the parts are salvaged from old printers and copiers. The only things I bought for this build were the controller board kit, the hot-end, and the extruder.

I was able to print PLA and PETG without any problem with this build.

The images above show the print quality of this build. This is a case for a Li-Ion battery charger. This case was printed with Recycled PET filament from PET bottles, due to the qualities of the plastic in these bottles, it is shiny and kind of transparent. Which makes it hard to show the quality. I apologize for that.

If you want to learn how to make filament from PET bottles, you can find that article right here.

If I had used store-bought filament, the quality would have been even more impressive, but I didn’t have any at hand when I was writing this article.

You can certainly improve the quality by spending more money but this serves as an experiment to see how far you can get by with what you have.

Why Build a 3D Printer Yourself?

Cost Efficiency:

Cost efficiency wise, actually if you have some common household tools available at your disposal and you’re a hoarder (like me) it can be extremely cost-efficient if you have some patience when troubleshooting little problems that might present themselves.

If you can find some old or broken printers or copiers you can salvage most if not all the stepper motors needed for the build saving you a lot of money. The same goes for the smooth rods, if you wanna save some more money you can also salvage the smooth rods from the printers instead of using aluminum extrusions to guide the carriages.

If you’re planning to salvage smooth rods from old printers or copiers, make sure they have the same OD (Outer Diameter) even though most printers use standardized parts like 10mm smooth rods and 8mm smooth rods. Due to manufacturing and quality control issues, they may not be perfect. just use a Vernier caliper or a micrometer screw gauge to measure.

Or you can just throw the linear bearing blocks on the shafts and see if there’s any play. If you don’t feel any significant amount of play it will be fine. We don’t want the bearing blocks to be too loose or too tight.

We will discuss this further along the build. The jist of it is that it can be extremely cost-effective depending on what you have at hand.

Customization:

One of the biggest advantages of building your own 3D printer is that you can customize it to tailor fit to your needs. Say you need a 3ft x 3ft bed size, all you need to do is find appropriate size lead screws, smooth rods (or linear rails if you feel like being a baller) and beef up your stepper motors so they can push the carriages more easily.

If you need to print high-temperature filament you just need to buy a hot-end that can reach that temperature. Its just easy as writing down your needs and finding suitable parts to meet those needs.
Learning Experience:

You might not be too eager to learn how a 3D printer works, but it’s not that difficult to get a sense of an understanding even if you don’t have a background in electronics or coding. These days, most of the parts are made to be compatible with each other. From motor drivers to controllers to hot-ends. And when you get the hang of it, you’ll understand that all these 3D printers (FDM ones) work on the same basic principles.

Note: This build is done mostly as an experiment to see if we can make a 3D printer with acceptable quality with repurposed materials and minimum tools (also as an inspiration for some people who think they need to buy every little thing to make something that works). With that said I also have to say that by investing just a few bucks more, you can make the process so much comfortable and the print quality so much better.

As an example, I bought linear bearings and had to make the linear bearing blocks using them by pouring resin to encase the linear bearings. It took like 3 days and two tries to get it right. If I were to buy linear bearing blocks from a shop it would only add a few bucks and save a whole lot of hassle. This is just one example.

Essential Components and Tools

Disclaimer: I salvaged most of the parts in this build from old printers to keep the cost as low as possible and to prove it’s not hard to reuse these salvaged parts. So I can’t point you to exact products. I will however try to add links to suitable alternative products.

I used wood for the construction of the frame of the printer, even though it made it cheap if I were to do this again I would go with aluminum extrusions. It would save you from a lot of hassle when you want to make the frame square and parallel.

Because wood will expand and shrink depending on the humidity and the temperature of the environment. You might think that it is so small that it probably won’t even matter, but in 3D printing, even a single micrometer will matter. Like when you’re leveling the bead.

Step-by-Step Assembly Instructions

Frame Assembly:

Let’s start the build by assembling the frame. In this build,, I used wood to make a square base first to install the two smooth rods on which the bed slides on. I used a lead screw to move the bed. Now that I think back on it, I don’t like it very much. We will discuss why I don’t like this in the upgrades section.

Anyway, I planned to make the printer a bed slinger, “Bed slinger” is a Cartesian variant where the build surface moves along the y-axis, and the print head moves along the X-axis” according to the Wikipedia definition. Simply put the bed moves on the Y-axis while the hot-end moves on the X-axis. This is the most popular 3D printer style these days due to its simple construction.

Y axis construction.

As shown in the image above, I attached the two smooth rods that guide the print bed in the Y-axis to the square wood base. Note that you have to insert the smooth rods into the bearing blocks before you fix them in place. Otherwise, you will have to remove the rods again to install the bearing blocks. Then I fixed the two bearings to the wooden base which holds the lead screw straight and parallel to the print bed

(Note: before fastening the lead screw to the two bearing blocks at each end make sure that you have the T8 nut already in the lead screw, just like with the smooth rods and bearing blocks). Then we have to connect the two bearing blocks using a plate so the two bearing blocks move parallel to each other without being skewed. If everything is parallel and square, you will be able to give a little push to the plate connecting the two bearing blocks and it will move freely and very smoothly without bogging or getting stuck.

Note: the smoother that you can get the plate to move on the smooth rods the better the print quality will be because it means everything is square and parallel. This will make sure the stepper motor will not lose steps due to smooth rods not being parallel. I can’t stress how much the importance of everything being parallel and square, you will have a much better time if you take your time to get this right on the first try. It gave me so much trouble because I overlooked this step.

The last thing we have to do to move the print bed is to connect the T8 nut to the plate connecting the two bearing blocks. You can make a little bracket from a sheet of aluminum if you can’t connect the nut directly to the plate. After connecting them you can try rotating the lead screw to see if there is any resistance when trying to move the bed by rotating the lead screw. If you feel there is some resistance it could be two cases,

Note: The stepper motors will heat up more than usual reducing their lifespan if they experience resistance. They will draw more current from the motor driver to make up the power to push the bed if the two smooth rods and lead screw aren’t parallel. This is why you should rotate the lead screw by hand at first to see if you feel any resistance.

If you don’t feel any resistance while rotating the lead screw, and the bed moves smoothly, then you’re all set with the Y axis. The last thing we need to do is to connect the stepper motor to the lead screw. We have to use a flexible stepper motor coupling to connect the lead screw to the stepper motor. We do this to make sure that even if the shaft of the stepper motor and the lead screw is not aligned and co-concentric, the motor will not experience any resistance because the coupling will take care of the slight misalignment for us.

Bed leveling system

Because I wanted to do this on a budget, I just used a plain piece of glass as the print bed. I didn’t use any fancy heated bed in this build. Putting some painter’s tape on the glass seemed to provide enough bed adhesion to keep the print from unsticking from the glass.

Home made bed levelling system

For the bed leveling system, I attached two square Aluminum tubes on top of the Y-axis assembly. I drilled two holes through the Aluminum tube. I glued a nut on the top of that hole. When we thread a bolt through that hole from the underside, we can adjust the height of that corner of the bed.

Here you can see my redneck bed leveling system. As you can see, we can adjust the height of each corner easily and after doing many test prints it seems to hold up well.

On the underside of the glass bed, I have glued 4 wooden blocks with a thin layer of silicone.

These 4 wooden blocks have holes drilled in them. The bolts from the leveling assembly will go through the hole and push the glass bed to raise or lower the height.

Bed levelling system homemade

You can see the glass bed sitting on 4 leveling bolts in this image.

Z-Axis:

Now let’s move on to making the Z-axis mechanism. There are two ways you can go about it, you can either go with a cantilever design which only uses 1 stepper motor, or a dual Z axis which has two motors. In this build, I went with a dual Z-axis build. Cantilever design has some disadvantages such as,

A dual Z-axis makes it easier for the two motors to push the weight of the whole X-axis assembly including a direct drive extruder if you use one in your build. You will also get better print quality with a dual Z-axis design. The only downside is that you will require more parts (lead screw, stepper motor bearings, smooth rod, and a motor driver).

Because I wanted my printer to be modular and the total weight of the printer wasn’t an issue for me I decided to make two similar Z-axis assemblies and to mount them on either side of the print bed opposite to each other. the following image is just one Z-axis assembly, there is an identical assembly on the right side of the printer.

Z axis assembly (left side)

Each assembly consisted of,
• One smooth rod
• One lead screw
• One stepper motor
• Two Lead screw bearings
• One linear bearing block
• One T8 lead screw nut

As shown in the picture above. I made the two Z-axis assemblies by attaching the lead screw to a piece of wood with two bearings, and the smooth rod to the same piece of wood making sure they’re both parallel.

Mechanical Parts Installation:

Electronics Setup:


The brains of this 3D printer is the RAMPS 1.6. The second RAMPS iteration was released by BIQU/BIGTREETECH. There certainly are faster and better controller boards out there, but with the budget I’m going for and the functionality that it provides, it’s a solid option.

We are going to use the 12864 LCD Full Graphics Smart Controller. I recommend you buy both the Ramps 1.6 controller, the Arduino mega, and the display as a kit, to avoid any mismatch of components.

This board is very easy to configure using marlin firmware. As for the assembly of the controller board, all you have to do is to connect the ramps 1.6 shield to the Arduino mega and pop in the motor drivers. And connect the two ribbon connectors for the full graphics display.

Ramps 1.6 wiring diagram.
Source: https://reprap.org/mediawiki/images/6/6d/Rampswire14.svg

As for the connections to the board, you will have to connect,

RepRap Full Graphics Smart controller

This is the RepRap Full Graphics Smart controller. We will use it as the display. This comes with an SD card slot that you can use to upgrade the firmware of the controller or to select G-Codes.

Source: https://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller

How to set micro-stepping in ramps 1.6

The way you select the micro-stepping is by putting on or removing jumpers from the ramps 1.6 board. You can find a lot of information about this kit by following the link below. This manual shows how to select micro-stepping, how to set up over-current protection, and much more.

https://joy-it.net/files/files/Produkte/ARD-RAMPS-Kit1.6/ARD-RAMPS-Kit1-6_Manual_2023-12-22.pdf

As for the motor drivers I went with Polulu DRV8825 clones. They’re much better than the A4988. Because DRV8825 supports 32-step micro-stepping and the A4988 only supports up to 16-step micro-stepping.

You can find more information regarding these stepper drivers from here:
https://reprap.org/wiki/A4988_vs_DRV8825_Chinese_Stepper_Driver_Boards

Stepper driver selection Marlin

You can see the stepper driver selection in Marlin firmware. I have selected DRV8825.

Extruder and Hot-end Installation:

Extruder:

We can use either a direct drive or a Bowden-style extrusion system, I used a Bowden-type extrusion system in this build but you can choose one that fits you. They each have their own advantages and disadvantages. Since I don’t want to make this article longer than it already is, you can go to the following link to decide which one suits you.

Bowden vs Direct Drive Extruders: A Comprehensive Guide

During the initial tests, I used an extruder which I made myself, which worked fine. But then I saw an all-aluminum extruder for a very good deal and I couldn’t pass it up so I used that later.

In terms of setting the extruder up, there’s not really much to it. All we have to do is fix it somewhere along the frame of the printer with an appropriate length of PTFE tube to guide the filament and plug in the connector to the ramps controller. It’s better if you can make sure the PTFE tube won’t bend too much, because if it does, then it will cause friction and make it hard for the extruder to push the filament. We will still have to calibrate Extruder steps (E-Steps) for the stepper motor, but I will put a link below where you can find out how to do that.

How To Calibrate Extruder Steps

Hot-end configuration:

Just like the extruder, setting up the hot-end is not that hard. We only have a few things to do. Fix the hot-end to the X-Axis carriage using some screws. Then we have to plug in the thermistor connector and the hot-end power wires to the ramps board. Simple and straightforward.

We have to select the thermistor type and resistance of the thermistor in our hot end in the firmware. We have to do that for the firmware to accurately sense the hot-end temperature. If we select the wrong thermistor type, the firmware will read the hot-end temperature inaccurately and you will either burn out your hot-end heater or have failed prints.

Above is the thermistors you can select from within the marlin firmware. It has a wide selection of thermistors to chose from. I’m using ATC semitec 104GT so I have to change the thermistor ID to “5”

Thermistor selection Marlin

You can see that I have changed the thermistor ID to “5” here.

Heated Bed Setup:

Even though I didn’t use a heated bed in my build, the ramps controller supports it. It is very helpful when printing big parts and to get the parts to adhere to the print bed well. If you are planning to use one for your build, all you have to do is plug in the two wires from the heat bed to the ramps board and change a small line in the firmware.

Firmware and Software Configuration


Firmware Installation, Marlin:

In this section, we are gonna go through how to install marlin firmware on the controller. We have two IDE options, we can use either Arduino IDE or PlatformIO with VSCode. In my opinion, PlatformIO with VSCode is way more comfortable than using the Arduino IDE. You can follow the link below to learn how to set up PlatformIO with VSCode and upload marlin to the controller.

https://marlinfw.org/docs/basics/install_platformio_vscode.html#7.-build,-clean,-and-upload

After installing Marlin on the controller board following the guide above, you can change the firmware to suit your 3D printer. This means changing different lines of code in the firmware to work with the components you have selected (thermistor, stepper motor drivers, and displays). You can also change parameters like motor directions and end-stop logic here.

Note: Configuring Marlin firmware is extremely easy, even though we have to change lines of code, it doesn’t require coding knowledge. We just have to enable and disable stuff for the most part. Sometimes we will have to copy and paste things but that’s about it.

Because I didn’t want to make this article too long I have made a separate article explaining how to configure the firmware. You can check that article over here. How to configure Marlin Firmware. You can get an overview of things you have to change and how to change them in Marlin firmware by reading this article.

Software Setup:

I mainly used two software during calibration, setup, and printing. We need a Slicer and software to send g codes through USB to the ramps board. I used Prusa slicer as my slicing software and Pronterface to send G-codes via USB.

When selecting a slicer software there are many different options,

Each different slicer software will have different features, I suggest trying a few different ones to see which one suits you. I chose Prusa mainly due to its user-friendliness. And the developers keep adding new features.

Pronterface is a very useful software when we are troubleshooting. We can send G-commands to the printer via USB and see the reaction from the printer.

One Response

Leave a Reply

Your email address will not be published. Required fields are marked *